在线问答
直播中

杨永胜

11年用户 2379经验值
擅长:嵌入式技术
私信 关注

【OK210试用体验】+第六篇☞通过网络挂载NFS文件系统,led驱动初步

本帖最后由 iysheng 于 2015-8-9 17:48 编辑

今天要说的东西还是很有用的,刚开始要学习驱动,我是用的sd卡作为中介在PC机和开发板之间转移我的文件,这之间的麻烦就不用多说了,虽然我在uboot中重新定义了bootcmd(自动运行用户的命令的环境变量),但是还是很麻烦的,所以使用NFS文件系统的重要性就不言而喻了,今天就要讲述一下几个方面:
  • 编译内核重新制作NFS文件系统。
  • 使用busybox丰富开发版的命令功能。
  • 在PC机Linux上搭建NFS文件服务器,和tftp服务器配合,这样可以使开发板成功挂载。
  • 修改uboot的bootargs
  • 安装led.ko模块,基于该模块运行自己的led程序,作为测试NFS文件系统的挂载。(模块源程序,目前还没有看明白,所以今天不着重介绍原程序,主要介绍一下模块安装操作的流程。)
好了,下面一步步地分析了:

1。编译内核,进入内核源码中,make menuconfig,主要设置如下: nfsneihe.PNG nfs.PNG
然后,执行编译模块操作:make modules ARCH=arm CROSS_COMPILE=arm-linux-
编译完成后,准备安装模块到跟文件系统中。
建立****/rootfs文件夹,来作为跟文件系统的跟目录
在该rootfs目录下,建立dev,lib,mnt,proc,sys,usr,bin,etc,***in,tmp,var文件夹
在usr目录下建立bin,***in,lib文件夹
在lib目录下建立modules文件夹
在dev目录下输入以下命令,建立两个nod:
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3

加入对应的配置文件到etc目录(这一步可以尝试复制官方的etc目录下的文件)
根文件目录的整个大框架准备好了,接下来即使安装内核模块和busybox了。
到内核源码目录中,把刚才编译好的内核木块装载到刚创建根目录,
make modules_install ARCH=arm INSTALL_MOD_PATH=(你创建的rootfs的目录)
2。首先开始编译busybox,进入busy的源码中,配置make menuconfig,如下: busybox.PNG busybox1.PNG 配置完了后,执行make操作,然后make install安装到****/rootfs文件夹下,此时****/rootfs/bin文件夹下应该有很多的命令了,如下所示:
busybox2.PNG
最重要的就是busybox文件,回到rootfs创建busybox的软连接,如下命令:
cp -s ./bin/busybox init
此时跟目录下会多出来init软连接文件。
3。到此时根文件系统就做好了,接下来就是配置PC机的NFS文件爱你服务器了,使用本地库安装,安装完后,进行配置:vim /etc/exports 如下: exports.PNG
最好先重启一下nfs服务(root权限):
#service nfs restart
至此,很容易就搭建完成了。
4。修改ubootargs,在uboot下进行修改如下:
setenv.PNG

特别需要注意虚拟机和开发板要在同一个网段,我的路由器是192.168.0.1。所以网络部分做出如上图的修改,其中serviceip要和虚拟机的ip一样。修改后记得保存环境变量啊。saveenv命令。如果忘记了,在uboot中输入help,查看uboot支持的命令。
5。至此,准备工作就差不多了,接下来准备好,预先编译好的led.ko模块和myled可执行文件。其中编译myled的时候,要记得使用-static参数,保证是静态编译。否则会出现找不到命令的情况,如下我遇到的: nfs1.png
开机上电:查看PC机ip是192.168.0.101
ip.PNG
在uboot中ping 192.168.0.101,测试可以ping通:
ping.PNG
开始通过tftp下载内核映像文件,并跳转执行:
tftp.PNG
成功挂载,ls查看,有我的led.ko和myled文件:
guaza.PNG
insmod led.ko安装,并查看nod,cat /proc/devices,知道myled是247
nod.PNG
在/dev/下建立nod,mknod /dev/myled c 247 0,成功以后,开始运行./myled 2
led.PNG
第2个led灯灭,如下图所示:
QQ图片20150809172400_meitu_2.jpg
为了避免出现./myled 2命令找不到的情况(如上上图),编译myled的时候,切记加上-static参数,如下:arm-linux-gcc -static -o myled ***.c
至此,成功挂载NFS根文件系统,驱动部分,的源代码,我还没有看明白,估计等下次吧,接下来我还要继续看驱动的部分了,加油!

回帖(16)

陈召

2015-8-9 20:57:24
楼主的帖子很给力
举报

杨永胜

2015-8-9 21:13:53
引用: 耳东的刀 发表于 2015-8-9 20:57
楼主的帖子很给力

是吗?呵呵呵呵
举报

陈召

2015-8-10 16:00:25
楼主我卡在这里了
文件系统启动失败了么
C:UsersAdministratorDesktopQQ截图20150810134832.png
举报

陈召

2015-8-10 16:01:18
图片截图就是卡在那了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分