• 資料介紹
    • 1、簡(jiǎn)介
    • 2、啟動(dòng)模式
    • 3、啟動(dòng)流程和工程框架
    • 4、開(kāi)發(fā)流程
  • 資料預(yù)覽
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

STM32N6 的 FSBL 基本流程介紹

03/06 15:02
1065
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

STM32N6 的 FSBL 基本流程介紹

2.07 MB

1、簡(jiǎn)介

STM32N6 是 ST 第一顆帶 NPU 的 MCU 芯片,內(nèi)部只有一小塊 ROM 用于第一階段的 Boot,必須使用外部 Flash 存儲(chǔ)用戶代碼或通過(guò) USB/U(S)ART 串口啟動(dòng)。另外,STM32N6 的工程引入了一些新的術(shù)語(yǔ)比如 FSBL 等。本文記錄 STM32N6 使用的一些基本啟動(dòng)步驟,重點(diǎn)介紹FSBL。

2、啟動(dòng)模式

STM32N6 DK 板,其中 BOOT1 引腳決定了兩種不同的啟動(dòng)模式,dev boot 和Flash boot/Serial boot 模式:

Flash boot(Boot1 = 0, Boot0 = 0)意味著上電后,BootROM 程序(固化在片內(nèi) ROM 的一小段啟動(dòng)程序)會(huì)嘗試從外部 Flash 啟動(dòng),應(yīng)用程序需要下載到外部 Flash,如果沒(méi)有應(yīng)用則無(wú)法啟動(dòng)。Dev boot 意味著上電后,BootROM 程序嘗試從內(nèi)部 Ram 中啟動(dòng)。

3、啟動(dòng)流程和工程框架

3.1. FSBL

FSBL 的全稱為 First Stage Boot Loader, 在上電后,先執(zhí)行片內(nèi) ROM 區(qū)域的BootROM,然后根據(jù) Boot 選項(xiàng)和地址,執(zhí)行相應(yīng)地址的 FSBL,參考下圖實(shí)例為外部Flash 的啟動(dòng)流程。

系統(tǒng)啟動(dòng)流程如下:

  1. BootROM 啟動(dòng)后,會(huì)驗(yàn)證 FSBL 的頭,如上圖深黃色部分 1024Bytes 的 Header 信息,可以使用 ST 提供的腳本對(duì) FSBL 進(jìn)行簽名,F(xiàn)SBL 程序必須完成簽名,不然無(wú)法正常啟動(dòng)。驗(yàn)證成功后,BootROM 將 FSBL 程序搬運(yùn)至內(nèi)部 SRAM2:0x34180000 的位置,然后PC 指針跳轉(zhuǎn)過(guò)去開(kāi)始執(zhí)行 FSBL。
  1. FSBL 開(kāi)始執(zhí)行。

3.2. FSBL+Load&Run

APP 的開(kāi)發(fā)可以在內(nèi)部 SRAM 中調(diào)試完成,開(kāi)發(fā)完成后通過(guò) External loader 下載到外部Flash。

系統(tǒng)啟動(dòng)流程如下:

  1. 和 3.1 的 FSBL 執(zhí)行一樣,BootROM 先啟動(dòng),然后校驗(yàn),搬運(yùn) FSBL,并跳轉(zhuǎn)到 FSBL。
  2. FSBL 開(kāi)始執(zhí)行,然后拷貝 Appli 的完整內(nèi)容到內(nèi)部 SRAM,包括 data 和 code。然后跳轉(zhuǎn)到 APP 代碼進(jìn)行執(zhí)行。
  1. APP 代碼開(kāi)始執(zhí)行。

3.3. FSBL+XiP(Execute in Place)

系統(tǒng)啟動(dòng)流程如下:

  1. BootROM 開(kāi)始執(zhí)行,和圖 2 一樣,校驗(yàn)完 FSBL 后將其搬運(yùn)到 SRAM 中。
  2. FSBL 開(kāi)始執(zhí)行,將外部 Flash 配置為 XiP 模式,F(xiàn)SBL 完成后,將 PC 跳轉(zhuǎn)至外部Flash 中 App 的第一條指令。
  1. APP 開(kāi)始執(zhí)行。

3.4. ST FSBL 簽名工具

在簽名前,需要安裝 ST 最新的 CubeProgrammer,并將 STM32MP_SigningTool_CLI.exe的路徑加入到 Windows 系統(tǒng) PATH 環(huán)境變量中,確保該 exe 程序可以被正確找到并運(yùn)行。

Cut1.1 執(zhí)行:

STM32MP_SigningTool_CLI.exe -bin FSBL.bin -nk -of 0x80000000 -t fsbl -o FSBL

trusted.bin -hv 2.1 -dump FSBL-trusted.bin

Cut2.0 執(zhí)行:

STM32MP_SigningTool_CLI.exe -bin FSBL.bin -nk -of 0x80000000 -t fsbl -o FSBL

trusted.bin -hv 2.3 -dump FSBL-trusted.bin

  • -bin: 原始 bin 文件。
  • -nk:no keys,沒(méi)有使用密鑰相關(guān)選項(xiàng)。
  • -of:option flags。
  • -t:bin 文件的類型為 fsbl。
  • -o:輸出后的文件。
  • -hv:header version,版本號(hào)。
  • -dump:將 bin 文件的 header 信息 dump 出來(lái),方便查看。

FSBL.bin 是原始的 FSBL 工程的 bin 文件,F(xiàn)SBL-trusted.bin 是已經(jīng)被正確簽名并添加好header 的 bin 文件。

3.5. 總結(jié)

既然單獨(dú)一個(gè) FSBL 工程里面也可以包含應(yīng)用程序,那么是不是所有 APP 程序都放在 FSBL里面,然后像 3.1 一樣只編譯和燒錄一個(gè)工程即可?

不是,BootROM 最大只能拷貝 512K 字節(jié),如果工程超過(guò)了這個(gè)大小,則需要類似 3.2 小節(jié)中所示架構(gòu)。

4、開(kāi)發(fā)流程

本節(jié)將以 IAR+STM32N6 DK 板為例,介紹 STM32N6 開(kāi)發(fā)的基本流程。該 demo 位于SDK

ProjectsSTM32N6570-DKExamplesUARTUART_HyperTerminal_IT 目錄下,該 demo的框架只有一個(gè) FSBL 程序,應(yīng)用程序和 FSBL 是一個(gè)工程,對(duì)應(yīng) 3.1 小節(jié)中的架構(gòu)。

資料預(yù)覽

相關(guān)推薦