uboot编译

前言

本文讲述如何使用主线uboot编译自己想要的平台uboot,我们常用的平台也就arm和arm64,本文拿全志平台做例子,arm采用orange pipc h3平台。
arm64采用orange pipc2 h5平台。

编译环境搭建

参考文章传送门
wsl相关嵌入式相关环境

下载

下载最新uboot代码,链接开源组件链接地址
https://ftp.denx.de/pub/u-boot/
我们整一个7月份的
在这里插入图片描述
tar -jxvf u-boot-2024.07.tar.bz2

arm

H3
 make orangepi_pc_defconfig   ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-
 make -j  ARCH=arm CROSS_COMPILE=arm-linux-gnueabi-

依赖包
sudo yum install -y bison  m4 flex  openssl openssl-devel 

常见错误


1./bin/sh: line 1: bison: command not found    bison包没装
2. bison: m4 subprocess failed: No such file or directory   缺少m4依赖包
3. bison: m4 subprocess failed: No such file or directory       flex

这就编译好了
在这里插入图片描述
文件介绍
在这里插入图片描述

4. u-boot  这个是uboot的elf文件有5M之大,包含了很多调试信息,一般可以gdb用
5. u-boot.bin,纯uboot bin文件 elf转换过来的
6. spl/sunxi-spl.bin    uboot中spl的bin文件   重要
7. u-boot-sunxi-with-spl.bin  根据配置文件讲spl和uboot平在一起的文件 

u-boot-sunxi-with-spl.bin 特别说明

关于镜像相关的说明在另一篇博客有提交传送
这里面提到了tf卡以及emmc中的镜像布局。

前8k 引导分区
8-32k是 spl分区,后面40K是uboot分区

使用hexdump -C u-boot-sunxi-with-spl.bin > tmp命令查看
发现0x8000的地方开始写uboot的镜像,0x8000就是32k,加上前面8k的偏移,
这样我们的uboot就是40k的地方,所以uboot的spl要去分区40k的地方加载uboot
40k/512=0x50, 512是tf卡一个section的大小,uboot有个宏专门配置这个section
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 这个就是spl去哪里加载uboot的地方。
但是呢这个值配置成0x40,是因为这个值描述的是ubootbin文件在整个spl+uboot 中的偏移,
spl去tf卡中的偏移他自己会加上8k头的大小,raw_sect就是这个宏等于0x40,
spl_mmc_raw_uboot_offset返回的是CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_DATA_PART_OFFSET宏,而这个宏的值就是0x10,也就是8k,总的加起来就是0x50,访问正确。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
看到这个config打头的就知道肯定的配置文件menuconfi那里来的查看kconfig文件
在这里插入图片描述在这里插入图片描述
要grep -rn SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 查看下值是否生效

arm64

H5
make orangepi_pc2_defconfig   ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-
make -j  ARCH=arm CROSS_COMPILE=aarch64-linux-gnu-

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值