一、Linux系统移植概念
需要移植三部分东西,Uboot ,内核 ,根文件系统 (rootfs) ,这三个构成了一个完整的Linux系统。
把这三部分学明白,系统移植就懂点了。
二、Uboot
1、啥是Uboot
uboot就是引导程序下载的一段代码,有三种我们可以去使用的,可以去开发的。
1.官网uboot ,比较原始
2.半导体厂商的uboot ,半导体厂商比如NXP,自家开发板对应修改裁剪的,可靠性比较好
3.还有自己厂家自己做的Uboot,比如说正点原子自家加的开发板,做的Uboot
现在用的正点原子开开发板,还没有自己修改Uboot的啥水平,先用的他们的Uboot跑跑,主要做法:
1.把他们Uboot弄到虚拟机里,配置一下编译前的版本信息,然后进行编译生成镜像文件.mix
2.通过SD卡下载到开发板
3.跑一跑,学一学
但是通过SD卡下载到开发板出现了一个坑:
虚拟机识别不到SD卡,咋办呢,最后慢慢摸索出来了
主要关注下面的内容
1.虚拟机设置,添加USB控制器设置
2.主机设置,打开VMware USB服务
接着
然后重启虚拟机
3.插入SD卡,选择断开连接,然后重新连接就行了
也可以看看有没有这个图标,有着图标说明就可以了
烧写Uboot进入SD卡命令(文档322页):
1.插入SD卡前后,使用ls /dev/sd* 命令查看分区
2.烧写到SD的内存分区
![](https://i-blog.csdnimg.cn/blog_migrate/a3d92c447bb275e5122f8dbae0bcc3d7.png)
2、Uboot如何用
使用Uboot当然要用一些命令去操作,主要是一些增、删、改、查的命令。
用这些命令的能操作哪些对象要了解,比如操作信息查询、修改环境变量、操作内存、操作网络,等等,操作这些对象干啥,要了解。
boot命令记一下bootz、bootm 和 boot。
bootz加载镜像文件zImage。也能瞄准地址,加载设备树文件,可以自己试试这个命令。
bootm也差不多,启用uImage。
3、Uboot移植
上面也说了,把修改官方的uboot是比较麻烦的,所以要站在巨人的肩膀上,修改芯片厂商修改后的uboot进行开发是比较容易的。
移植操作步骤:
1.找到对应芯片厂商的Uboot进行编译
编译的命令如下:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_evk_emmc_defconfig
make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j16
mx6ull_14x14_evk_emmc_defconfig是在Uboot的configs目录配置中找的,命令参数,对应我们开发板的型号。
arm-linux-gnueabihf- 指定的编译器
上述编译命令,既可以一句依据的编译执行,也可以写在顶层makefile中,也可以写在一个shell脚本中一键执行。
![](https://i-blog.csdnimg.cn/blog_migrate/eb4ce11075cefb7e2cc51d4300920f18.png)