一.基础知识
1.首先我们来了解一下uboot到底是什么?
U-boot就是一个bootload程序,用于启动Linux系统。(相当于bios启动windows的过程)
2.其次,bootload是怎么启动Linux系统的呢?
1.初始化DDR寄存器(学单片机的兄弟们DDR熟悉吗?忘了可以优快云一下)
2.Linux内核从flash拷贝至DDR寄存器
3.启动Linux内核
3.我们使用正点原子的6U开发板进行Linux驱动开发之前,板子上必须移植好Linux系统,那么Linux系统移植包含了哪些步骤呢?
1.移植Bootload代码,也就是U-boot启动Linux内核
2.移植Linux内核Linux keernel
3.移植根文件系统rootfs
现在我们就来做第一步:
二.移植uboot代码并在烧录后用sd卡启动
因为正点原子同时也是6U开发板的设计制造厂商,所以原子必然负责适配6U开发板的uboot的编写,所以移植并不需要我们对官方uboot进行移植,我们直接使用开发板资料光盘中的uboot进行移植即可。
1.下载资料
原子的开发板光盘资料是通过git仓库下载的,git真的很坑很坑很坑,本人也是小白新手,按照教程第一次下载资料,然后通过FTP把ubantu中的资料转移到自己windows电脑中,然后在一系列的新建文件夹后,终于到解压正点原子官方uboot文件夹的环节了,然后出现了问题:文件是bzip2压缩包,所以进行相应解压缩bzip2命令时出错了:
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
可是我已经安装了bzip2,为什么会找不到文件?
最后折磨了一个礼拜,发现是使用git下载时,文件出现了损坏,所以用百度网盘下载后,就可以正常解压缩了。
2.uboot的编译
然后输入编译uboot的三条命令:
uboot的编译就完成了。
3.把uboot.bin文件烧录到sd卡中
我们首先把sd卡拔出,插入读卡器中,然后初始化,接下来我们要知道sd卡的地址在哪
我们输入指令看一下:
ls /dev/sd* -l
很奈斯,sda是电脑主机,那么sdb就是我们需要的插入的sd卡的地址
我们使用的烧录软件是原子的imxdownload,所以在光盘资料 - 05Tools - 02 - imxdownload
通过FTP把这个文件转移到ubantu中我们编译完uboot后的文件夹中
ls看一下,没问题,然后我们需要用这个指令给予imxdownload满权限:
chmod 777 imxdownload
然后指令:把uboot.bin文件通过imxdownload烧写到/dev/sdb中
./imxdownload u-boot.bin /dev/sdb
编译成功!
4.通过sd卡启动uboot
TTL-USB线接上电脑,打开串口调试软件(我用的Moba)启动方式打到从sd卡启动,上电后按下复位。
启动成功!!
接下来就是uboot的命令使用,我认为简单了解即可。
欢迎大家一起学习I.MX6ULL!!