嵌入式uClinux应用程序的NFS开发
2.2目标机上的配置
目标机为内核为ARM7TDMI的S3C44BO板,运行uClinux操作系统。在目标机端使用NFS挂载主机上的共享目录,需要配置内核和相应的用户程序(make menuconfig)。
2.2.1配置内核
Networking options --> (缺省) //开启网络功能
Network device support --> (缺省)
File systems ->Network File Systems--〉 //支持NFS文件系统
<*> NFS file system support
# Provide NFSv3 client support
2.2.2用户程序配置
Network Applications -->
# portmap
BusyBox -->
# mount(mount nfs support)(mount/unmount 命令有两个地方可以选择,Filesystem Applications 或BusyBox。这里推荐选择BusyBox。
配置完毕后,将编译生成的映像文件image.rom下载到目标机上flash中。
3 基于NFS的应用程序开发
3.1在主机上编译程序,并生成在目标机上运行的程序
在主机/home/pub下编辑hi.c,其内容:
#include
main(){printf("hi! Good!n");}
交叉编译hi.c,#arm-elf-gcc –Wall –Wl,-elf2flt –o hi hi.c生成flt格式的可执行文件hi。修改hi的权限#chmod 711 hi。该文件可以直接下载到目标机上运行,这里利用NFS看其执行情况。
3.2目标机利用NFS挂载主机并进行调试
用串口线将主机的COM1和目标机的COM0连接起来,同时接上网线。在主机上打开minicom(设置参数:57600 8N1,无流控)用于同目标机通讯。目标机上电或者复位,开始启动uClinux,显示信息成功后进入sh。
在目标机上建立/var/nfs用于挂载主机上的目录(这里采用的是romfs只读文件系统,/var使用的是RAM disk驱动的ext2文件系统。所以仅/var可以用于读写,其它目录只可以读)# mkdir /var/nfs
启动目标机上portmap服务 # portmap &
挂载主机上的共享目录#mount -t nfs 192.168.111.1:/home/pub /var/nfs
#ls /var/nfs可以看到主机上/home/pub的文件。此时,可以运行该目录下的可执行程序hi,#./hi(注意要加"./")出现hi! Good!。程序正常运行,将其编译到内核里。将hi拷贝到uClinux源码包的/romfs/bin下编译,生成的image.rom可以下载到 flash。在板子上的/bin下就有hi程序了,并且可以直接执行hi。
卸载使用umount # umount /var/nfs。如果让目标机启动时自动运行portmap服务,可以修改rc文件(uClinux源码中),在最后加入/bin/portmap&,mkdir /var/nfs。
4 小结
使用NFS开发模式,关键在于对主机和目标机的配置。如果配置不当,就会mount失败。以下是值得注意的地方:
mount成功,可是运行程序. /hi时报告错误:Permission denied.即主机拒绝操作。需要修改主机上程序的权限chmod 777 /home/pub/hi。然后在目标机端运行./hi即可。
主机上设置时候一定要关闭防火墙,不然目标机mount的时候没有响应。
目标机上一定要先开启portmap服务。
主机和板子的IP在同一个网段。
如果要运行大的应用程序,在Mount的时候最好加上:
-o rsize=1024,wsize=1024,timeo=15的参数,否则多半会得到server not responsing的提示信息。
- VXWORKS内核分析(11-11)
- 在Ubuntu上建立Arm Linux的开发环境(04-15)
- 让Windows系统也能访问Linux文件系统(04-15)
- 非常全面的LINUX NFS文档(04-23)
- 基于Linux NFS的Web数码相框设计 (08-27)
- linux-2.6.14挂载NFS文件系统(11-22)