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