• 資料介紹
    • 1、前言
    • 2、OBK 存儲區(qū)的幾個疑問
    • 3、OBK 文件
    • 4、OBK 燒錄方法
    • 5、小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1429 進(jìn)一步認(rèn)識STM32H5 OBK

03/17 10:09
1270
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1429 進(jìn)一步認(rèn)識STM32H5 OBK

848.01 KB

1、前言

STM32H5 引入一個新的名詞 OBK。OBK 是 Option byte key 的意思,本意用來存儲密鑰,也可以用來存儲數(shù)據(jù)。傳統(tǒng) STM32 開發(fā)與量產(chǎn)需要考慮應(yīng)用程序以及選項字節(jié),對于STM32H5,則還需要考慮 OBK。本文在 STM32H5 官方文檔的基礎(chǔ)上帶領(lǐng)讀者進(jìn)一步認(rèn)識一下 OBK。

2、OBK 存儲區(qū)的幾個疑問

2.1. OBK 是 STM32H5 系列都有的嗎?

并不是所有的 STM32H5 系列都存在 OBK。在 STM32H503 上相應(yīng)的 DA【調(diào)試認(rèn)證】功能是借助 OTP 來完成的,也就是說,STM32H503 并沒有 OBK。

2.2. OBK 區(qū)是使用 STM32H5 必需的嗎?

如果用戶開發(fā) STM32H5 應(yīng)用,是否可以不使用 OBK?可以。STM32H5 引入了新的芯片生命周期概念,其 Open 狀態(tài)類似于傳統(tǒng) STM32 的讀保護(hù)RDP 0 級別。如果你的產(chǎn)品從來沒考慮過讀保護(hù) RDP,那么意味著你過去使用 STM32 都是在默認(rèn)級別讀保護(hù) RDP0。在這種需求下,產(chǎn)品量產(chǎn)時只需要關(guān)心應(yīng)用程序和選項字節(jié),不需要理會生命周期概念,自然也不需理會 OBK。

另外,如果用戶希望在產(chǎn)品發(fā)布后 SWD/JTAG 都不能被訪問,那么只需要將 STM32H5 設(shè)置成 Close 或者 Lock 狀態(tài),也不用理睬 OBK。

2.3. 不使用 OBK 區(qū)會不會是一種技術(shù)上的浪費?

如果在用戶 Flash 使用已經(jīng)緊張的情況下, 不使用 OBK 確實是一種浪費。OBK 總的大小有8K 之多,可以寫入任何數(shù)據(jù)。如果用戶 Flash 空間緊張,即使不考慮任何安全保護(hù)的需求,理論上也可以考慮使用 OBK。不過 OBK 的讀寫受到 OBK 存儲區(qū)規(guī)則的限制,盡管有 8K 這么大,是否可以完全使用這 8K,依賴于特定的應(yīng)用需求是否和 OBK-HDPL 規(guī)則相匹配。

2.4. 什么情況下一定需要使用 OBK 區(qū)?

STM32H5 的優(yōu)勢之一是引入芯片生命周期管理,例如支持將產(chǎn)品狀態(tài)設(shè)置到 Close 狀態(tài)。在 Close 狀態(tài),除非用戶能提供相應(yīng)的密碼和證書作為憑證進(jìn)行 DA 認(rèn)證,否則通過SWD/JTAG 不能訪問應(yīng)用代碼,也意味著代碼得到了外部訪問保護(hù)。在這種情況下,若需要使用 OBK 存儲 DA 認(rèn)證的相關(guān)的信息,這個時候 OBK 就必須使用。換句話說,你是否在脫離 Open/Provisioning 狀態(tài)后還希望通過 SWD/JTAG 訪問STM32H5,則建議使用 OBK 區(qū)。

3、OBK 文件

3.1. OBK 文件的格式

OBK 存儲區(qū)既可以用來存放密鑰也可以存放數(shù)據(jù),即 OBK 的內(nèi)容可以和應(yīng)用有關(guān)。也就是說 OBK 不僅僅可以用來做 DA 認(rèn)證,也可以作為應(yīng)用程序的數(shù)據(jù)區(qū)。如果 OBK 用來做 DA 認(rèn)證,則 OBK 的格式要符合 DA 認(rèn)證的要求 ;如果 OBK 用來做應(yīng)用程序的數(shù)據(jù)區(qū),則 OBK 的格式要符合應(yīng)用程序的要求。而應(yīng)用程序需求千差萬別。因此,OBK 燒錄時,并沒有定義它的內(nèi)容符合什么樣的要求,而只關(guān)心三個方面:

  • ....uint32_t.destAddress:燒在哪個地址
  • ....uint32_t.OBKeySize: 大小是多大
  • ....uint32_t.doEncryption: 存儲在 MCU 中是否需要加密

上位機的 OBK 文件相比較 OBK 存儲區(qū)的實際內(nèi)容就多了一個頭部,頭部的內(nèi)容就是以上三項。頭部信息的存在是為了告訴燒錄程序,如何處理 OBK 文件中的 payload 負(fù)荷,頭部信息本身在 OBK 存儲區(qū)中并不存在。

OBK 文件中的 payload 負(fù)荷如果沒有在頭部指定加密的情況下,可以和存儲區(qū)中的相應(yīng)位置的數(shù)據(jù)一一對應(yīng)。如果在頭部指定加密,相應(yīng)的 STM32H5 支持硬件加密,那么 OBK 文件依然是明文,但是 OBK 存儲區(qū)則是密文。

這也說明,對于 OBK 燒錄工具,不管是證書,密碼,還是數(shù)據(jù),都會一樣被處理。

3.2. OBK 文件生成的方法

STM32 Trusted Package Creator 可以用來生成 DA 以及應(yīng)用需要的 OBK 文件。它的輸入是 xml 文件,可通過圖形界面或者文本進(jìn)行編輯。對于沒有在圖形界面上顯示的配置項目,可通過編輯 xml 讓它在圖形界面上顯示,也可以直接編輯 XML,然后再加載 XML 來進(jìn)行 OBK生成。

4、OBK 燒錄方法

使用 RSSLIB

STM32H5 提供 RSSLIB 支持 OBK 燒錄。最典型的用法存在于 STM32CubeProgrammer中,它使用運行在 MCU 上的 RSSLIB 的函數(shù)進(jìn)行 OBK 的燒錄。

5、小結(jié)

通過本文,希望用戶在 STM32H5 正式文檔的基礎(chǔ)進(jìn)一步了解, OBK 的用處, OBK 與OBK 文件的差異,OBK 的生成工具,OBK 的燒錄方法,適合 STM32H5 的用戶在實踐中進(jìn)行參考。

資料預(yù)覽

相關(guān)推薦