Linux系统移植1:uboot概念

Linux系统移植1:uboot概念

uboot概念

1、uboot是一个比较复杂的裸机程序。
2、uboot就是一个bootloader,作用就是用原于启动Linux或其他系统。uboot最主要的工作就是初始化DDR。因为Linux是运行再DDR里面的。一般Linux镜像zImage(uImage)+设备树(.dtb)存放在SD、EMMC、NAND、SPI Flash等等外置存储区域。
这就牵扯到一个问题,需要将Linux镜像从外置flash拷贝到DDR中,再去启动。
3、bootloader是引导加载程序,其中最常用的一种就是uboot。
4、uboot的主要目的就是为系统的启动做准备。
5、uboot不仅能启动Linux,也可以启动其他系统,比如vxworks等其他系统。
6、 Linux不仅仅能通过uboot启动。
7、uboot是个通用的bootloader,它支持多种架构。

uboot获取:

1、官网可获取uboot源码:https://ftp.denx.de/pub/u-boot/
(缺点就是支持少,比如某一款具体的芯片驱动等不够完善。)

2、SOC厂商会从uboot官网下载某个版本的uboot,然后在这个版本的uboot上加入相应的SOC以及驱动。这种成为SOC厂商定制的uboot-比如NXP官方的I.MAX6ULL EVK板子。

3、做开发板的厂商,开发板会参考SOC厂商的板子。开发板必然会和官方的板子不一样,因此开发板厂商又会去修改SOC厂商做好的uboot,以适应自己的板子。

uboot交叉编译

1、编译uboot之前需要先进行配置
如图配置交叉编译指定平台为arm 和交叉编译工具链arm-linux-gnueabihf-, 最后指定配置文件为mx6ull_14x14_ddr512_emmc_defconfig

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6ull_14x14_ddr512_emmc_defconfig

在这里插入图片描述
配置完环境以后,再进行内核编译
其中V=1代表开启编译打印等级,可通过串口日志查看详细编译过程
ARCH为指定编译平台为arm平台
CROSS_COMPILE为指定交叉编译工具链
-j4为采用多线程编译方式,提高编译效率

make V=1 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4

在这里插入图片描述
若编译报错如下,则可能是Ubuntu版本过高导致,最好用Ubuntu16.04版本
在这里插入图片描述
正常编译结果如下:
在这里插入图片描述
编译完成后会生成u-boot.bin文件
在这里插入图片描述
必须向u-boot.bin添加头部信息。
uboot编译最后会通过/tools/mkinage软件添加头部信息,生成u-boot.imx文件
在这里插入图片描述
在这里插入图片描述
使用厂商提供的OTG工具进行烧写
在这里插入图片描述
烧写完成以后,重新启动,串口结果如下:
在这里插入图片描述

查看uboot信息发现已经被更新:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值