mtk 7986/7988板子启动过程及u-boot编译

mtk 7986/7988板子启动过程及u-boot编译

系统上电后从BL1(存储在CPU内的BootRom中)开始执行,BL1会遍历所有可启动的设备(可以通过引脚改变引导顺序)

BL1启动后会对系统架构和平台进行初始化,注意BL1是在CPU内置的RAM中运行的,不使用外部DDR内存,然后BL1会从指定的存储设备上加载BL2程序(安全启动过程中也叫ATF),BL2也是在内置RAM中运行的,但BL2对DDR内存进行初始化,然后加载BL31(SRAM)和BL33(DDR内存),然后运行BL31对BL33进行初始化并把执行权限交给BL33(U-Boot本体)。

在mtk 7986板子上生成bl2,bl31,bl33镜像

https://downloads.openwrt.org/snapshots/targets/mediatek/filogic/

这里面preloader.bin 结尾的文件就是BL2,镜像格式是MediaTek BootROM Loadable Image

编译生成的bl2.bin是不能被mtk cpu识别的,需要用mkimage把bin封装为BootROM可解析的格式,即BootROM Image格式,里面有一个头部描述的bl2的基本信息。

查看BootROM镜像信息

bl31-uboot.fip 这个是BL31和BL33的合体,镜像格式是FIP(Firmware Image Package),FIP可以包含多个区段,每个区段一个镜像。查看fip的信息:

uboot编译

  • 编译bl33

git clone https://github.com/frank-w/u-boot.git

git checkout 2022-10-r3

修改build.sh修改启动设备(board和device)

./build.sh importconfig

./build.sh build

  • 编译bl2和bl31并生成u-boot镜像

git checkout r3-atf

修改build.sh中的启动设备(board和device)

./build.sh importconfig

./build.sh build

./build.sh rename

最后得到bpi-r3_spim_nand_bl2.img和bpi-r3_spim_nand_fip.bin

如果想要emmc,nor等介质的u-boot修改build.sh里在的device即可。

参考

https://www.cnblogs.com/arnoldlu/p/14175126.html

https://wiki.fw-web.de/doku.php?id=en:bpi-r3:uboot

发表回复