基于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 !
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮