3.1. Boot 介绍

tinySPL 是 ZX-RTT 中的启动引导程序(Bootloader),其功能包含了加载启动应用程序、 烧录和升级。

3.1.1. 启动流程

ZX-RTT 的系统启动流程如下:

../../_images/boot_flow.png

图 3.1 启动流程

其中 PBP(PreBootProgram) 主要做 DRAM 初始化工作,tinySPL 负责进行启动和升级。

3.1.2. 软件架构

tinySPL 是基于 ZX-RTT 的 HAL 构建的裸机(Baremetal) 程序,其软件架构如下图所示。

../../_images/boot_arch.png

图 3.2 软件架构

上图中, HALBoardSys 与 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。