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

基于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 <linux/init.h>
#include <linux/module.h> 

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

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

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 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值