3.1. Boot 介绍¶
tinySPL 是 Baremetal 中的启动引导程序(Bootloader),其功能包含了加载启动应用程序、 烧录和升级。
3.1.1. 启动流程¶
Baremetal 的系统启动流程如下:

图 3.20 启动流程¶
其中 PBP(PreBootProgram) 主要做 DRAM 初始化工作,tinySPL 负责进行启动和升级。
3.1.2. 软件架构¶
tinySPL 是基于 Baremetal 的 HAL 构建的裸机(Baremetal) 程序,其软件架构如下图所示。

图 3.21 软件架构¶
上图中, HAL
、 Board
、 Sys
与 Baremetal SDK 中的应用程序共用同一份代码,
以简化 Boot 对不同板子的支持。
3.1.3. 编译说明¶
新配置一个板子后,需要为该方案编译生成一个 bootloader.bin
。
在 Baremetal SDK 中,Boot 程序可以当作一个独立的裸机项目进行编译,与 SDK 中的其他方案编译方法相同。
例如:针对 D21x Demo88 的 SPI NAND 方案编译方法如下:
scons --apply-def d21x_demo88-nand_baremetal_bootloader_defconfig
scons
编译完成时,除了在 output/d21x_demo88-nand_baremetal_bootloader/images/ 下生成 elf 文件外,
还会将 bootloader.bin
复制到板级目录之中,供打包烧录镜像时使用:
target/d21x/demo88-nand/pack/bootloader.bin
编译 Boot 时,不会打包烧录镜像文件,编译应用时才会打包烧录镜像。
小技巧
在编译应用时,如果 bootloader.bin 已经存在,并且分区等配置没有改变,则不需要重新编译 Bootloader。