当前位置:首页 > CN2资讯 > 正文内容

arm架构服务器不能装windows server 2012吗 arm服务器方案

6小时前CN2资讯


写一些东西,当作笔记,以防以后忘记,把它记下来,

国庆到现在默默移植Linux内核半个多月,其中出了好多问题,自己根本解决不了,这郁闷了半个月,今天终于成功地跑起一个系统(内核不是自己做的,还是没弄好,唉。。。以后再回头弄吧),并实现了一个简单的LED驱动程序,

 

本次使用的是优龙的ARM9开发板:FS2410

第一步:配制tftp服务器,无论是虚拟机还是PC机上装了Linux,IP地址一定要设好,这以设192.168.40.191为例,

首先在linux终端下,输入:vi /etc/xinetd.d/tftp

修改内容如下:然后保存退出

service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }

然后终端命令:/etc/init.d/xinetd restart

重启tftp,这样tftp 服务器配制好了,如果一刚开始电脑没装tftp的话,可以网上下载tftp的rmp包。

第二步:配制smb服务器

终端下命令: vi /etc/samba/smb.conf

在[home]目录上,添加:

[root] comment = Root Directories browseable = yes writeable = yes path = / guest ok = yes ; browseable = yes

 

保存退出

终端下:useradd smb   //添加smb用户

        Smbpasswd –a smb  //输入密码

 

/etc/init.d/smb restar  // 重启smb服务器,

这样可以在windows运行下输入://192.168.40.191访问Linux中的文件

第三步:配制nfs服务器

终端下:vi /etc/exports

增加内容:/ 192.168.40.*(rw,insecure,sync,mp,no_root_squash)

保存退出。

exportfs -rv

service nfs restart  //重启nfs服务器

在板子的终端下:mount -t nfs -o nolock 192.168.2.6:/ /tmp

挂载主机的根目录到tmp目录下,这样可以从主机上拷贝写好的驱动程序到开发板上。

第四步:LED驱动程序过程

在XP系统下打开超级终端,开发板上电,Linux系统在ARM处理器上开始运行,

图(1)

首先修改开发板的IP,使它和主机的IP在同一个段(这里是40)里。如图(1).

然后挂载主机的文件,并访问。如图(2)

命令是:mount -t nfs -o nolock 192.168.40.191:/ /tmp

 

图(2)

我编译好的LED驱动放在/yang文件里,

 

图(3)

进入/yang文件夹,如图(3)可以看到里面有个led.ko的文件,这个就是LED的驱动程序,

输入命令:insmod led.ko  然后回车

打印出一些信息,表示success.

这时在开发板上有4个LED灯在循环亮灭,... Cheer!

基于操作系统的流水灯驱动就做好了。

有待改进的地方:只实现底层的LED驱动程序,没有实现应用层的控制程序,还有应该引入混杂设备或ioctl控制。

LED驱动程序:

#include <linux/sched.h> #include <linux/init.h> #include <linux/device.h> #include <linux/miscdevice.h> #include <linux/delay.h> #include <linux/poll.h> #include <linux/spinlock.h> #include <linux/interrupt.h> #include <linux/delay.h> #include <linux/devfs_fs_kernel.h> #include <asm/hardware.h> #include <asm/io.h> #include <asm/arch/regs-gpio.h> MODULE_LICENSE("Dual BSD/GPL");/* declare the license of the module ,it is necessary */ /* before is some decription of the model,not necessary */ MODULE_AUTHOR("j wei"); MODULE_DESCRIPTION("This is an example of programming driver!"); // GPIO_LED DEVICE MAJOR #define GPIO_LED_MAJOR 97 //定义设备号 static struct file_operations gpio_ctl_fops={ owner: THIS_MODULE, }; #define LED1_ON( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) & (~0x10), S3C2410_GPFDAT) #define LED2_ON( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) & (~0x20), S3C2410_GPFDAT) #define LED3_ON( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) & (~0x40), S3C2410_GPFDAT) #define LED4_ON( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) & (~0x80), S3C2410_GPFDAT) #define LED1_OFF( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) | 0x10, S3C2410_GPFDAT) #define LED2_OFF( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) | 0x20, S3C2410_GPFDAT) #define LED3_OFF( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) | 0x40, S3C2410_GPFDAT) #define LED4_OFF( ) __raw_writel(__raw_readl(S3C2410_GPFDAT) | 0x80, S3C2410_GPFDAT) static void LedSet ( unsigned char led ) { unsigned char LedStatus; LedStatus = led; if ( LedStatus & 1) LED1_ON(); else LED1_OFF(); if ( LedStatus & 2) LED2_ON(); else LED2_OFF(); if ( LedStatus & 4) LED3_ON(); else LED3_OFF(); if ( LedStatus & 8) LED4_ON(); else LED4_OFF(); } static void LedDisp ( void ) { LedSet(0x08); mdelay(1000); LedSet(0x04); mdelay(1000); LedSet(0x02); mdelay(1000); LedSet(0x01) ; mdelay(1000); LedSet(0x00); mdelay(1000); LedSet(0x01) ; mdelay(1000); LedSet(0x02); mdelay(1000); LedSet(0x04); mdelay(1000); LedSet(0x08); mdelay(1000); LedSet(0x00); mdelay(1000); } static int __init gpio_init(void) { int err=0; int arg=5; __raw_writel(0x5500, S3C2410_GPFCON); //GPFCON = 0x5500; __raw_writel(0xff, S3C2410_GPFUP); //GPFUP = 0xff ; printk("gpio_init/n"); err=register_chrdev(GPIO_LED_MAJOR,"gpio",&gpio_ctl_fops); if(err<0) { printk("fail to register/n"); return -1; } printk("success to register!!!/n"); while( arg-- ) { printk(".../n"); LedDisp(); } return 0; } static void __exit gpio_exit(void) { printk("release this device!!!/n"); unregister_chrdev(GPIO_LED_MAJOR,"gpio"); } module_init(gpio_init); module_exit(gpio_exit);

 

 

                    完!

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/30802.html

    分享给朋友:

    “arm架构服务器不能装windows server 2012吗 arm服务器方案” 的相关文章

    搬瓦工:新手必备的VPS主机服务与瓦工实践经验分享

    1. 搬瓦工的概述 你好,今天我们来聊聊“搬瓦工”。这个名字可能对很多人来说有些陌生,但实际上它是一个由加拿大IT7 Networks公司推出的VPS主机品牌。简单来说,搬瓦工为用户提供了一种虚拟的服务器租赁服务,尤其适合那些想要搭建网站或学习Linux的新手。最吸引人的是,它的性价比非常高,价格也...

    搬瓦工VPS与IPv6: 优化你的网络体验

    搬瓦工(BandwagonHost)作为一家由加拿大IT7 Networks公司推出的品牌,专注于提供性价比较高的VPS主机服务。我一直对VPS的体验充满好奇,尤其是搬瓦工的背景与发展历程。最初,搬瓦工主要销售超低价的OpenVZ方案,吸引了不少预算有限的用户。随着技术的发展和市场需求的变化,搬瓦工...

    主机论坛:获取信息与交流经验的最佳平台

    主机论坛概述 在当今的数字时代,主机论坛作为一个专注于域名、主机、VPS和服务器的讨论与信息交流平台,显得尤为重要。对于站长、开发者和一般用户来说,它们不仅是资讯获取的渠道,更是一个技术交流和问题解决的空间。主机论坛通过汇聚来自不同背景的用户,形成了一个活跃的社区,每个人都能找到自己感兴趣的话题,分...

    xTom:灵活可靠的IaaS解决方案,为企业提供优秀网络服务

    xTom是一家成立于2012年的私人控股公司,总部位于德国杜塞尔多夫。它专注于基础设施即服务(IaaS),为各种规模的企业提供可靠的网络和数据中心服务。我对这家公司印象深刻,因为他们提供的解决方案不仅全面,而且非常灵活,能够满足不同客户的需求。 作为一个专业的IaaS提供商,xTom涵盖的服务范围非...

    甲骨文云免费IPv6服务详解:轻松配置与应用技巧

    甲骨文云,作为一个综合性的云服务提供商,正迅速崛起于众多的云技术平台之中。它不仅拥有强大的数据处理能力,还提供了多种免费的云服务选项,让个人和企业都能以更低的成本探索并使用云计算的强大功能。首先,我对甲骨文云的快速适应能力和多种灵活服务感到印象深刻,尤其是它的免费套餐项目,吸引了不少用户前来试用。...

    Rackdog:高性价比的独立服务器租赁和托管解决方案

    Rackdog是一家充满活力的基础设施即服务(IaaS)提供商,成立于2020年。作为互联网时代的重要角色,Rackdog专注于独立服务器出租和托管业务,拥有一系列丰富的服务。通过自己的设备和网络架构,Rackdog正在为客户提供优质的托管解决方案。 Rackdog的AS号是AS398465,拥有多...