本應(yīng)用筆記介紹了 STM32MP1 系列微處理器的自舉程序編程工具所使用的協(xié)議。它詳細介紹嵌入式軟件、支持的每個 USB DFU或 USART 指令,以及 STM32CubeProgrammer 工具期望的序列。
它定義 STM32MP1 系列自舉程序用于提供編程服務(wù)的協(xié)議,即 STM32CubeProgrammer 所需的嵌入式部分。該服務(wù)提供一種方法,對非易失性存儲器 (NVM) ,即外部 Flash 存儲器件或片上非易失性存儲器 (OTP) 進行編程。
概述
編程操作在于將最初存儲在計算機主機上的二進制文件通過接口寫入平臺上的任意非易失性存儲器 (NVM) 。此過程涉及 STM32CubeProgramer 工具與內(nèi)嵌編程服務(wù)通信。這包括 ROM 代碼、第一階段自舉程序 (FSBL) 和第二階段自舉程序 (SSBL) 。
為每個串行接口 (USART,USB) 定義了一個通信協(xié)議,涉及一組命令和一些序列,盡可能與現(xiàn)有 STM32 MCU 器
件兼容。
可能的 NVM 是:
- 一種外部 Flash 存儲器件:
–NAND Flash 存儲器
–e?MMC
–SD 卡
–NOR Flash 存儲器
- 一種片上非易失性存儲器:
–STM32MP1 OTP
–PMIC(例如,STPMIC1)的 NVM
布局文件給出了一個二進制文件列表,用于對它們的類型(例如,二進制文件或文件系統(tǒng)、目標 NVM,以及在NVM 中的位置)進行編程。
帶有 STM32 頭文件的二進制文件的最終簽名步驟之前使用 SigningTool 完成了。
嵌入式編程服務(wù)基于 ROM 代碼,F(xiàn)SBL = Arm 可信固件 (TF-A) 且 SSBL = U-Boot。在 RAM 中下載 FSBL 和SSBL 以及在器件 NVM 中加載要編程的分區(qū)都使用相同的協(xié)議。
ROM 代碼內(nèi)嵌在 STM32MP 器件中。其主要任務(wù)是通過一個可用的串行外設(shè)在內(nèi)部 RAM 中加載、驗證和執(zhí)行第一階段自舉程序 (FSBL) 。然后,在一些初始化(時鐘和 DDR)完成之后,F(xiàn)SBL 在 DDR 中加載第二級加載程序(SSBL) ,驗證簽名并執(zhí)行。
布局文件格式
Flash 存儲器布局文件是一種制表符分隔值 (tsv) 文本文件,每行對應(yīng)一個分區(qū)或二進制文件發(fā)送到設(shè)備。完整描述請參見意法半導(dǎo)體的維基百科。
階段 ID
關(guān)于階段 ID 的完整描述請參見意法半導(dǎo)體的維基百科。Ids 0x0 以及 0xF1 - 0xFD 被保留。對于其他值,它是對STM32CubeProgrammer 發(fā)出的每個下載階段請求的布局文件中存在的唯一標識符。該請求是通過 ROM 代碼、FSBL=TF-A 或者 SSBL = U-Boot 實現(xiàn)的。
它被嵌入式編程服務(wù)用來標識下一個分區(qū)。