本应用笔记介绍了 STM32MP1 系列微处理器的自举程序编程工具所使用的协议。它详细介绍嵌入式软件、支持的每个 USB DFU或 USART 指令,以及 STM32CubeProgrammer 工具期望的序列。
它定义 STM32MP1 系列自举程序用于提供编程服务的协议,即 STM32CubeProgrammer 所需的嵌入式部分。该服务提供一种方法,对非易失性存储器 (NVM) ,即外部 Flash 存储器件或片上非易失性存储器 (OTP) 进行编程。
概述
编程操作在于将最初存储在计算机主机上的二进制文件通过接口写入平台上的任意非易失性存储器 (NVM) 。此过程涉及 STM32CubeProgramer 工具与内嵌编程服务通信。这包括 ROM 代码、第一阶段自举程序 (FSBL) 和第二阶段自举程序 (SSBL) 。
为每个串行接口 (USART,USB) 定义了一个通信协议,涉及一组命令和一些序列,尽可能与现有 STM32 MCU 器
件兼容。
可能的 NVM 是:
- 一种外部 Flash 存储器件:
–NAND Flash 存储器
–e•MMC
–SD 卡
–NOR Flash 存储器
- 一种片上非易失性存储器:
–STM32MP1 OTP
–PMIC(例如,STPMIC1)的 NVM
布局文件给出了一个二进制文件列表,用于对它们的类型(例如,二进制文件或文件系统、目标 NVM,以及在NVM 中的位置)进行编程。
带有 STM32 头文件的二进制文件的最终签名步骤之前使用 SigningTool 完成了。
嵌入式编程服务基于 ROM 代码,FSBL = Arm 可信固件 (TF-A) 且 SSBL = U-Boot。在 RAM 中下载 FSBL 和SSBL 以及在器件 NVM 中加载要编程的分区都使用相同的协议。
ROM 代码内嵌在 STM32MP 器件中。其主要任务是通过一个可用的串行外设在内部 RAM 中加载、验证和执行第一阶段自举程序 (FSBL) 。然后,在一些初始化(时钟和 DDR)完成之后,FSBL 在 DDR 中加载第二级加载程序(SSBL) ,验证签名并执行。
布局文件格式
Flash 存储器布局文件是一种制表符分隔值 (tsv) 文本文件,每行对应一个分区或二进制文件发送到设备。完整描述请参见意法半导体的维基百科。
阶段 ID
关于阶段 ID 的完整描述请参见意法半导体的维基百科。Ids 0x0 以及 0xF1 - 0xFD 被保留。对于其他值,它是对STM32CubeProgrammer 发出的每个下载阶段请求的布局文件中存在的唯一标识符。该请求是通过 ROM 代码、FSBL=TF-A 或者 SSBL = U-Boot 实现的。
它被嵌入式编程服务用来标识下一个分区。