基于NFS的嵌入式linux设备驱动程序开发环境搭建

2019-07-13 01:01发布

基于NFS的嵌入式linux设备驱动程序开发环境搭建

作者:admin 来源:未知
 NFS是Network File System的简写,即网络文件系统,通过NFS可以以根文件系统的形式访问目标板,大大提高了嵌入式linux开发的效率。
  1、软硬件平台       PC机Windows XP的IP:192.168.1.225,子网掩码:255.255.255.0,默认网关:192.168.1.1;     PC机上虚拟机Vmware中linux版本:Red Hat Enterprise 5.1,IP:192.168.1.226,子网掩码:255.255.255.0,默认网关:192.168.1.1;     开发板型号:micro2440,IP:192.168.1.230,子网掩码:255.255.255.0,默认网关:192.168.1.1。     在PC机上的Windows XP系统与Vmware中的linux系统之间可以通过Samba服务器进行通信,此处不再详述。Vmware中的linux系统通过NFS服务挂载目标板,在PC机上就可以进行目标板的设备驱动程序的开发。     2、通过NFS启动系统       按照用户手册配置好NFS服务,启动NFS服务。     设置micro2440开发板的启动模式为NAND Flash启动,连接好电源线、串口线和网线,打开串口终端,在开机或者复位的时候按下开发板上K1-K6任意按键,然后输入q,这样就进入了vivi模式,输入以下命令:param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.226:/opt/FriendlyARM/micro2440/root_qtopia ip=192.168.1.230:192.168.1.226:192.168.1.1:255.255.255.0:micro2440.arm9.net:eth0:off"。如下图所示:             输入boot,按下回车就可以从NFS启动目标板系统了。   3、linux设备驱动程序开发环境搭建         下面以一个“hello world”驱动作为示例,介绍驱动程序开发流程。hello.c代码如下所示: #include
#include  

static int hello_init(void)
{
    printk(KERN_ALERT "Hello, David Chen ! ");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT "Goodbye, David Chen ! Love Linux !Love FPGA ! Love CT ! ");
}

module_init(hello_init);
module_exit(hello_exit);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("David Chen");

       一个简单的Makefile文件如下所示: KERNELDIR = /home/david/kernel/linux-2.6.32.2

PWD := $(shell pwd)

INSTALLDIR = /opt/FriendlyARM/micro2440/root_qtopia/lib/modules/2.6.32.2-FriendlyARM

CROSS_COMPILE = arm-linux-

CC = $(CROSS_COMPILE)gcc

obj-m := hello.o

.PHONY: modules modules_install clean

modules:

    $(MAKE) -C $(KERNELDIR) M=$(PWD)

modules_install:

    cp hello.ko $(INSTALLDIR)

clean:

    rm -rf *.o *~ core *.depend *.cmd *.ko *.mod.c .tmp_versions
               其中home/david/kernel/linux-2.6.32.2为内核代码所在的目录,/opt/FriendlyARM/micro2440/root_qtopia/为NFS挂载目标板的目录,按照用户手册说明,将生成的内核模块文件/lib/modules/2.6.32.2-FriendlyARM目录下。      最后使用命令make modules和make modules_install就可以编译和安装内核模块了~
     开发板上的操作如下所示:
  [root@FriendlyARM /]# cd /lib/modules/2.6.32.2-FriendlyARM/
[root@FriendlyARM 2.6.32.2-FriendlyARM]# ls
fpga.ko hello.ko
[root@FriendlyARM 2.6.32.2-FriendlyARM]# chmod +x hello.ko
[root@FriendlyARM 2.6.32.2-FriendlyARM]# insmod hello.ko
Hello, David Chen !
[root@FriendlyARM 2.6.32.2-FriendlyARM]# lsmod
hello 676 0 - Live 0xbf000000
[root@FriendlyARM 2.6.32.2-FriendlyARM]# rmmod hello
Goodbye, David Chen !
 Love Linux !Love FPGA ! Love CT !