3.1. Boot 介绍
tinySPL 是 ZX-RTT 中的启动引导程序(Bootloader),其功能包含了加载启动应用程序、 烧录和升级。
3.1.1. 启动流程
ZX-RTT 的系统启动流程如下:
其中 PBP(PreBootProgram) 主要做 DRAM 初始化工作,tinySPL 负责进行启动和升级。
3.1.2. 软件架构
tinySPL 是基于 ZX-RTT 的 HAL 构建的裸机(Baremetal) 程序,其软件架构如下图所示。
上图中, HAL
、 Board
、 Sys
与 ZX-RTT SDK 中的应用程序共用同一份代码,
以简化 Boot 对不同板子的支持。
3.1.3. 编译说明
新配置一个板子后,需要为该方案编译生成一个 bootloader.bin
。
在 ZX-RTT SDK 中,Boot 程序可以当作一个独立的裸机项目进行编译,与 SDK 中的其他方案编译方法相同。
例如:针对 M4 7D0N 的 SPI NAND 方案编译方法如下:
scons --apply-def ZXM47D0N_rt-thread_defconfig
scons
编译完成时,除了在 output/ZXM47D0N_bootloader/images/ 下生成 elf 文件外,
还会将 bootloader.bin
复制到板级目录之中,供打包烧录镜像时使用:
target/m4/ZXM47D0N/pack/bootloader.bin
编译 Boot 时,不会打包烧录镜像文件,编译应用时才会打包烧录镜像。
小技巧
在编译应用时,如果 bootloader.bin 已经存在,并且分区等配置没有改变,则不需要重新编译 Bootloader。