这段时间新冠脑炎疫情又殃及了好几个省,下个礼拜又要在家办公了,哪都不能去了。不过话说回去,在城上面原本也就没哪些好玩的,也没哪些地方好去的。
接着上一次的内容,要从网路加载内核和设备树,以及挂载网路根文件系统,须要在UBoot上面设置bootcmd和bootargs两个环境变量如下:
setbootcmd'tftp41000000uImagetftp42000000exynos4412-fs4412.dtbbootm41000000-42000000'
setbootargs'console=ttySAC2,115200root=/dev/nfsrwnfsroot=192.168.1.8:/samba/nfs/rootfs,proto=tcpclk_ignore_unused/init=/linuxrcip=192.168.1.100:192.168.1.8:192.168.1.1:255.255.255.0'
这两个参数须要依照自己的实际情况加以调整,主要是nfs和ip的一些设置。
bootcmd是内核启动命令,其表示使用tftp合同,从TFTP文件夹下加载uImage到41000000的显存地址。之后从TFTP文件夹下加载exynos4412-fs4412.dtb到42000000的显存地址linux软件下载,之后执行bootm命令,从41000000的地址启动内核。
bootargs是内核启动的参数,例如设置控制台的并口参数,指定根文件系统(这儿我们使用nfs从网路上挂载根文件系统,注意合同用tcp,假如用udp的话,很可能会由于丢包而造成挂载失败)
最后须要saveenv保存设置。
就绪以后,板子重新上电,不要回车打断UBoot,让其引导Linux内核启动,结果内核启动失败。
后来在群里问了老师,她们发了内核镜像和设备树过来,让我用她们编译的试试,我一试,还真能用。原本我还怀疑是不是根文件系统的问题linux内核移植教程,后来老师让我瞧瞧设备树,说是要注释掉下边这一段。
而且我一看,原本就是注释掉的啊。。。之后就无解了,我以为可能还是根文件系统的问题,群里问老师也没有再回,就搁置了三天,这也算是中间的一个小插曲吧。之后我刚才又在群里问,另一个老师说这一段现今不须要注释了,就是要加进来。之后我就把注释除去了,重新编译后,果然就可以启动了。
可以看见根文件系统早已挂载成功了,那这样我们的环境搭建部份就测试OK了,我们得到了一份可以在4412板子上运行的Linux内核源码,UBoot源码和根文件系统。
所以呢,觉得培训机构的资料管理挺乱的,各个老师之间的信息不同步,资料也不同步,视频可能是很老的,配套资料也过时了,你不问还不晓得,这可能也是她们须要构建大量的群来答疑的诱因吧,反正,体验不佳。其实她们认为这种步骤你不须要做啊,直接用现成的虚拟机镜像就可以了嘛,编译工具链,各类依赖库,环境变量这些都给你抓好了,干嘛要自己搞。她们这些看法就只适宜这些初学驱动的人,确实linux内核移植教程,假如你只想学习驱动,那确实用她们打算好的虚拟机镜像就可以了。而且假如我要换一个芯片,环境还得自己搭,那就不管用了,或则说我自己早已有虚拟机了,再搞一个镜像虽然变得很碍眼。
好了,明天就到这儿了,前面就开始UBoot的移植学习。
嵌入式Linux系统的移植主要有U-Boot、Linux内核、文件系统这三部份。Uboot是在系统上电时开始执行,初始化硬件设备,打算好软件环境,之后才调用Linux***作系统内核。文件系统是Linux***作系统中拿来管理用户文件的内核软件层。文件系统包括根文件系统和构建于Flash显存设备之上文件系统。根文件系统包括系统使用的软件和库,以及所有拿来为用户提供支持构架和用户使用的应用软件,并作为储存数据读写结果的区域。可将Linux系统移植过程大致须要分成6个步骤:1)打算工作,包括下载源码、建立交叉编译环境等。交叉开发是指在开发主机上安装开发工具,编辑、编译目标板的引导程序、内核和文件系统linux查看磁盘空间,使其能在目标板上运行。2)配置和编bootloader(引导装载程序)。通过这段小程序,可以初始化硬件设备、建立显存空间的映射表,进而构建适当的系统硬件环境,为最终调用***作系统内核做好打算。3)配置和编译Linux内核,对其进行相应的剪裁,更改内核以支持相关的硬件设备。4)为大容量NANDFlash移植YAFFS文件系统,并将该文件系统加入Linux内核中;5)制做RAMdisk来挂载根文件系统。Linux系统中的文件和设备是通过文件系统来组织的。文件系统的存在致使数据和设备可以被有效而透明地存取访问。一个linux的最简根文件系统应当包括支持linux系统正常运行的基本内容,包括系统使用的软件和库,以及所有拿来为用户提供基本支持的构架和指令。6)烧录、调试系统;假如调试出错,则须要重新配置,返回上述步骤(2)。嵌入式linux系统移植包含哪三部份内容