【OK210试用体验】+第六篇☞通过网络挂载NFS文件系统,led驱动初步 - 在线问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

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

杨永胜 ( 楼主 ) 2015-8-9 17:48:16  只看该作者 倒序浏览
本帖最后由 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,主要设置如下:
然后,执行编译模块操作: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,如下: 配置完了后,执行make操作,然后make install安装到****/rootfs文件夹下,此时****/rootfs/bin文件夹下应该有很多的命令了,如下所示:

最重要的就是busybox文件,回到rootfs创建busybox的软连接,如下命令:
cp -s ./bin/busybox init
此时跟目录下会多出来init软连接文件。
3。到此时根文件系统就做好了,接下来就是配置PC机的NFS文件爱你服务器了,使用本地库安装,安装完后,进行配置:vim /etc/exports 如下:
最好先重启一下nfs服务(root权限):
#service nfs restart
至此,很容易就搭建完成了。
4。修改ubootargs,在uboot下进行修改如下:


特别需要注意虚拟机和开发板要在同一个网段,我的路由器是192.168.0.1。所以网络部分做出如上图的修改,其中serviceip要和虚拟机的ip一样。修改后记得保存环境变量啊。saveenv命令。如果忘记了,在uboot中输入help,查看uboot支持的命令。
5。至此,准备工作就差不多了,接下来准备好,预先编译好的led.ko模块和myled可执行文件。其中编译myled的时候,要记得使用-static参数,保证是静态编译。否则会出现找不到命令的情况,如下我遇到的:
开机上电:查看PC机ip是192.168.0.101

在uboot中ping 192.168.0.101,测试可以ping通:

开始通过tftp下载内核映像文件,并跳转执行:

成功挂载,ls查看,有我的led.ko和myled文件:

insmod led.ko安装,并查看nod,cat /proc/devices,知道myled是247

在/dev/下建立nod,mknod /dev/myled c 247 0,成功以后,开始运行./myled 2

第2个led灯灭,如下图所示:

为了避免出现./myled 2命令找不到的情况(如上上图),编译myled的时候,切记加上-static参数,如下:arm-linux-gcc -static -o myled ***.c
至此,成功挂载NFS根文件系统,驱动部分,的源代码,我还没有看明白,估计等下次吧,接下来我还要继续看驱动的部分了,加油!

16个回复

陈召 发表于 2015-8-9 20:57:24
楼主的帖子很给力
回复 1

举报 使用道具

杨永胜 发表于 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
图片截图就是卡在那了
陈召 发表于 2015-8-10 16:01:43
图片截图就是卡在那了
陈召 发表于 2015-8-10 16:23:46
耳东的刀 发表于 2015-8-10 16:01
图片截图就是卡在那了

Uncompressing Linux... done, booting the kernel.
杨永胜 发表于 2015-8-10 17:56:21
耳东的刀 发表于 2015-8-10 16:23
Uncompressing Linux... done, booting the kernel.

你uboot的bootargs是什么啊?是console=ttySAC2,115200吗?
陈召 发表于 2015-8-10 18:27:03

现在卡在这里了   我还在找问题
陈召 发表于 2015-8-10 19:49:02
楼主我卡死这里了  能指导一下么  qq366485546  谢谢
杨永胜 发表于 2015-8-11 08:20:02
耳东的刀 发表于 2015-8-10 19:49
楼主我卡死这里了  能指导一下么  qq366485546  谢谢

你在uboot下能ping通。NFS服务器的ip吗?
陈召 发表于 2015-8-11 11:19:11
iysheng 发表于 2015-8-11 08:20
你在uboot下能ping通。NFS服务器的ip吗?

能 内核影响下载成功,就是启动内核的时候卡在那
杨永胜 发表于 2015-8-11 16:50:31
耳东的刀 发表于 2015-8-11 11:19
能 内核影响下载成功,就是启动内核的时候卡在那

你的uboot的bootargs是什么啊?
杨永胜 发表于 2015-8-28 10:56:41
耳东的刀 发表于 2015-8-11 11:19
能 内核影响下载成功,就是启动内核的时候卡在那

你这个好像是nfs服务器的问题,试着关闭linux的防火墙,测试nfs服务器好用。
刘帅 发表于 2015-9-7 22:42:15
我的卡在这里了是怎么回事  楼主

求助.PNG (34.34 KB, 下载次数: 183)

求助.PNG
刘帅 发表于 2015-9-7 22:43:17
我的卡在这里了是怎么回事  楼主
杨永胜 发表于 2015-9-8 08:05:23
韦护的护 发表于 2015-9-7 22:43
我的卡在这里了是怎么回事  楼主

你应该是busybox没有编译正确,有可能是编译器的问题吧,你看一看busybox基于的内核版本,在linux下file busybox,,,然后看你的跟文件目录下的lib/modules/。。。这个内核版本和你的busybox内核版本一样吗/?
您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /6 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2024-7-1 07:37 , Processed in 0.810702 second(s), Total 77, Slave 58 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表