BeagleBonewilliam hill官网
直播中

海洋

12年用户 605经验值
擅长:测量仪表 嵌入式技术 处理器/DSP 控制/MCU
私信 关注
[经验]

【BeagleBone Black试用体验】之构建根文件系统

前面介绍了怎么样从手头源码编译ubootkernel,我们的最终目的是开发驱动,但现在只会从2.6的思想去开发驱动,所以必须有板子能跑的kernel源码才行,这就是传说中的设备树嘛,看了别的网友使用的帖子,发现3.x的内核和2.6的内核驱动开发方式有了变化,增加了.dts设备源码树的这么个东西,在群里听说宋老大出了本基于4.0内核的驱动书,所以去图书馆借了,还在啃,但william hill官网 有任务要完成啊,所以这几节先从2.6的思想去试着开发看看,等书看差不多了,再用最新的驱动思想来搞,好吧。。。
上节已经预报过了,这节要说怎么构建根文件系统,开始吧,首先得有源码对吧,我就随便整了个,不用最新的,不用最旧的,从中间随便下了这么个1.22busybox源码:
1.jpg
解压之后,进去,然后开始配置、编译就行了。
make ARCH=ARMCROSS_COMPILE=arm-linux-gnueabihf- menuconfig
在图形化界面里面根据自己需要,将自己能用上的命令选上即可,这个方式跟内核配置一样,听说最新版本的uboot也采用这种menuconfig方式配置了,可以方便我们搞底层的小伙伴了。。。
2.jpg
选中之后,就可以进行编译了。。。
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf--j4
很快就可以编译成功了,下一步尤其要注意,千万要注意,整错了就把宿主机给搞完蛋了。。。
3.jpg
这里,我们一定要加上CONFIG_PREFIX这个前缀,否则默认是覆盖掉本机文件的,我们随便建一个文件夹,这个文件夹是需要通过nfs导出给开发板进行访问的。然后将这个文件夹替换掉上图中的/path/from/root这个路径,执行install即可安装busybox。这里只是安装了busybox,但是开发板需要怎么访问呢。需要我们宿主机通过nfs将该目录导出。在exports文件里面写上:
4.jpg
这个文件目录啥的各个linux发行版可能不一样,反正你根据自己装的发行版,配置好就行,写完了之后执行以下exportfs -ra使这个生效。然后查看一下:
5.jpg
看到busybox安装的目录被导出了,就可以进行下面配置了。
刚刚我们只是安装了busybox最小的必须组件,现在用bbb去挂是挂不上的。还有很多设备节点没有创建,输入输出啥的也都没有配置好,运行的动态库也都没装上呢。还需要一步步建立这些东西。这里我们参考一下韦东山大侠写的嵌入式linux应用开发完全手册这书,跟着一步步来构建这些东西:
首先在/etc/下面建立inittab文件,里面输入:
6.jpg
然后安装glibc库,从我们bbbgcc目录下,将下面这些文件,拷贝到我们nfs导出的目录的/lib目录下:
7.jpg
其实用不了这么多,但为了以后省点事,就都考过去了,反正我们又不在乎最终生成的镜像的大小,bbb板载emmc4G呢,怕啥。。。
然后在/etc下新建init.d目录,在里面简历rcS文件,内容为:
8.jpg
linux运行时会需要虚拟文件系统,这是为了方式频繁写磁盘,造成磁盘寿命减少的,因为这些虚拟文件系统是常驻在内存里面的,一断电,就没了的,这就需要我们建立这些虚拟文件系统的挂载点和目录,在etc下建立fstab文件,输入内容:
9.jpg
下面就到dev目录下,在这里建立一些设备节点,给系统使用:
10.jpg
这里我们都是通过手工建立的,然后还需要在根目录下建立一些文件夹,保证最终结果是酱紫的:
11.jpg
然后就完事了,就可以通过bbb板子挂载了。在bbbuboot中输入:
12.jpg
然后就可以根据上节说的,bootm来启动系统了:
13.jpg
这里可以看到我们已经可以成功挂载nfs系统了,下面就可以在这里面进行驱动开发了,这样很方便的。。。
好了这节说完了构建根文件系统。最近在啃宋老大基于4.0内核的书呢,一时半会也啃不完,要不然驱动这么好搞,都搞去了,对吧,下节我就用2.6内核的思想和方式,来试验下驱动,实现点亮一个bbb板子上小灯,好吧,这节就到这里吧。。。

更多回帖

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