如何构建u-boot包括环境配置
起因
起初,某国产矿渣盒子出于 “安全考虑” 对u-boot进行了魔改,导致无法直接使用原有的u-boot环境进行刷机。对u-boot的输出进行检查后我决定自己编译一个u-boot。
准备工作
使用 deepin 20.9 社区版进行环境配置。
下载源码 https://github.com/u-boot/u-boot
sudo apt-get update
sudo apt-get install gcc bison flex
# 如果你是使用32位arm的话需要安装 gcc-arm-linux-gnueabihf
sudo apt-get install gcc-arm-linux-gnueabihf
# 如果你是使用64位arm的话需要安装 gcc-aarch64-linux-gnu
sudo apt-get install gcc-aarch64-linux-gnu
开始
注意:
ARCH=arm Arm架构
CROSS_COMPILE=xxx-xxxx-xxx- 是设置使用的交叉编译器
xxx_xxx_defconfig 是设备配置文件在官方的源码库中有:
https://github.com/u-boot/u-boot/tree/master/configs
使用了不同的交叉编译器和设备配置文件来编译32位和64位的u-boot
32位的u-boot
make distclean
make ARCH=arm CORSS_COMPILE=arm-linux-gnueabihf- xxx_xxx_defconfig
make
64位的u-boot
make distclean
make ARCH=arm CORSS_COMPILE=gcc-aarch64-linux-gnu- xxx_xxx_defconfig
make
生成img
语法格式:
mkimage 【参数】 文件名
参数说明:
| 参数名 | 解释 |
|---|---|
| -A | 指定CPU的体系结构 |
| 体系结构 | alpha、arm、x86、ia64、mip、mips64、ppc、s390、sh、sparc、sparc64、m68k |
| -O | 指定操作系统类型 |
| 系统类型 | openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos |
| -T | 指定映象类型 |
| 映象类型 | standalone、kernel、ramdisk、multi、firmware、filesystem |
| -C | 指定映象压缩方式 |
| 压缩方式 | none 不压缩 gzip 用gzip的压缩方式 bzip2 用bzip2的压缩方式 |
| -a | 指定映象在内存中的加载地址,这个参数所指定的地址值来下载 |
| -e | 指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40 |
| -n | 指定映象名 |
| -d | 指定制作映象的源文件 |
案例:
.\tools\mkimage -A arm -O linux -T firmware -C none -a 0x200000 -e 0x200000 -n "U-Boot Image" -d u-boot.bin u-boot.img

浙公网安备 33010602011771号