实验任务:通过虚拟机上提前搭建好的交叉编译环境,编译u-boot,把编译生成的MLO和u-boot.img两个文件拷贝到sd卡上,选择sd卡启动板子(拨码开关00110),在sd卡系统下将两个文件拷贝到板子上的nand闪存上,然后关闭板子,选择nand启动板子(拨码开关01100),板子会进入bootloader模式(我们刚才拷贝进去的文件就是启动用的boot镜像文件)
实验验收:把两个文件烧写到nand上,选择nand启动(01100),进入boot界面,但是由于当前没有linux内核,故启动会卡在半途,secureCRT控制台会卡在某一条命令,无法进行下去,此时就可以验收试验了。
本篇博客内容:
1.实验准备
2.实验步骤
3.注意事项
1.实验准备
4.1、u-boot实验是实验指导书的第四章实验,但做这个实验之前,建议你按照实验指导书第三章的部分内容重新配置一遍。其中主要内容有:
【1】重装一个虚拟机(最好用实验安装包附带的ubuntu14),新虚拟机的名称最好和要求的保持一致,这样后期实验配置的时候,文件夹路径就和指导书的一致了,这样不容易出错。
【2】给虚拟机安装gedit,gcc等软件(后期用得上,指导书里面也有步骤)
【3】下图的这一步配置可以跳过,设置共享目录那一步也可以跳过(前提是你得先给你的虚拟机设置好可以与主机之间互相复制粘贴的功能(通过安装vmware-tool实现))
【4】指导书165页这一部分,一定要配置,
【5】实验指导书171页这一部分,不需要做,但是需要简单看一下,尤其是sd卡启动系统那一步(对你做u-boot实验有帮助,因为u-boot实验前半部分的步骤就是源自这一个实验)
2.实验步骤
第一步:安装uboot源码,清理uboot,配置uboot,编译uboot
全部按照实验指导书的来就好了,最后生成如下两个文件:
(记住他们的路径哦,别一会找不到了,到时候老师验收也会让你把这两个文件翻出来给他看,我记得真有同学找半天找不到......那场面老尴尬了)
第二步:拷贝uboot镜像文件至sd卡
把uboot的两个镜像文件MLO和u-boot.img分别拷贝到sd卡boot分区下。
第3步:拷贝uboot镜像文件至nand闪存。
选择sd卡启动开发板(00110),进入sd卡系统,可使用命令查看板子上的nand闪存的分区信息
nand闪存的分区信息如下:(指导书上有14个分区,而我们做实验的时候,一般只有9个分区)
由上图,我们可以看到,mtd0到mtd3分别是MLO文件在nand闪存上的存储分区和3个备份分区,mtd5是u-boot.img文件在nand闪存上的存储分区。待会我们的任务就是,把这几个分区上旧的数据给格式化,把我们编译出来的新的MLO文件和u-boot.img文件给拷贝进对应的分区。
格式化mtd0到mtd3分区,并且把新的MLO文件给烧写进去的命令,照着指导书上面做即可
格式化mtd5分区,并且把新的u-boot.img文件烧写进去的命令,指导书上也有
第4步:选择nand启动开发板,观察实验现象
关闭开发板,把拨码开关跳到01100(nand启动模式),重新开机。
正常情况下,会出现实验现象,即在boot启动后,会有一大堆信息打印,最终会卡在某一行命令,这是因为在uboot启动的过程中找不到linux内核,所以无法启动导致的。
也有些异常的情况,详见 注意事项
3.注意事项
【1】确保你的sd卡是一张好使的卡。
sd卡有两个分区:boot分区和rootfs分区,他就像我们平常重装系统用的U盘启动盘,是一个小linux系统,他的作用就是作为一个载体,把我们编译的MLO和u-boot.img文件拷贝到nand上。实验过程中可能有之前的同学把这个sd卡格式化或者误删了文件(比如我...),导致这个sd卡不能用,指导书上有重做sd卡启动卡的教程,但是不建议你做(我做了好几遍都没有成功),建议直接换张有系统的好卡,或者借用同学的好卡。把自己编译的MLO和u-boot.img文件拷贝进去。
如果你的sd卡是好的,选择sd卡启动(01100),最终会出现如下现象:
然后我们才能继续试验接下来的步骤
【2】老师说你的实验现象多了,做过头了
正常情况下会出现卡在boot启动那一步的现象,当然也会有一些特殊现象:比如有的板子的nand闪存有上一届同学残留的linux内核,导致你一启动,直接运行完boot,进入linux内核,(这就成了下一个实验要验收的东西了,下一个实验是把linux内核固化到nand上),老师会说你做过头了,让你重做。
如果出现了这样的现象,建议你把nand闪存分区中linux内核分区给擦除。
nand闪存中linux内核分区为mtd8 nand.kernel(见下图)
擦除的方法可以仿照你擦除mtd0那几个分区的方法,举一反三。当然老师发的实验文件里面也有相应的指导手册,在DISK1压缩包的 /实验手册 目录下的 4-2-1这个文件,里面有擦除各个分区的教程
这个4-2-1文件很重要,下一个实验你还需要用到它
【3】老师说你的实验现象还不够,差了点东西
比如我,做完实验步骤启动的时候,出现了如下现象:
从nand启动时,报告我说找不到设备树。
原因:nand分区的设备树分区mtd4 nand.u-boot-spl-os分区损坏。
解决办法:我刚才提到的 /disk1/用户手册/4-2-1 那个文件里面有教你怎么擦除和重新固化设备树的方法,照着做就好了。
(不过我奇怪的是:设备树是下一个实验需要编译的东西,我在做现在这个实验的时候,sd卡里面根本就没有设备树,所以说重新固化设备树的那个步骤,理论上只是格式化了那个分区,并没有固化有效的设备树文件进去,但还是好使。
算了,好使就行,管那么多呢......
)
缺少其他东西,同理可以把相应的东西给固化进去就完事了,详细参考那份pdf文件 /disk1/用户手册/4-2-1