前言
本文是接著之前文檔《STM32H5 DA 之初體驗(yàn)(帶 TrustZone)》的后續(xù)之作。由于新的 product state 和 DA 的引入, 所有 STM32H5 開(kāi)發(fā)者都必須掌握 DA 的用法。STM32H563 在 TrustZone 打開(kāi)和不打開(kāi)兩種情況下, DA 所采用的策略是不相同的.當(dāng) TZ 打開(kāi)時(shí), 使用證書(shū)進(jìn)行 DA, 而當(dāng) TZ 不打開(kāi)時(shí), 則使用密碼來(lái) DA。
因此, 本文檔針對(duì) STM32H5 初學(xué)者, 演示當(dāng) TZEN=0xC3(TrustZone 不打開(kāi))時(shí), 使用密碼來(lái)完成 DA 回退. 當(dāng) TrustZone 未激活時(shí), 不支持 DA 調(diào)試.只支持 DA 回退。
此外, 由于 STM32H503 不帶 TrustZone, 它的 DA 過(guò)程與 H563 不開(kāi)啟 TZ 的情況下類(lèi)似. 除此之外, 與 H563 不同的是, H503 內(nèi)部沒(méi)有 OBK 區(qū)域, 因此, 預(yù)配置過(guò)程會(huì)將密碼對(duì)應(yīng)的 obk 文件寫(xiě)入芯片內(nèi)部的 OTP 中。
準(zhǔn)備工作
開(kāi)發(fā)板 : NUCLEO-H563ZI
軟件包 : STM32Cube_FW_H5_V1.1.0
工具:
- STM32CubeProgrammer v2.14.0
- Tera Term 串口終端顯示
- Trust Package Creator(安裝 STM32CubeProgrammer 時(shí)一并安裝, 注意勾選)
IDE: STM32CubeIDE v1.13.0STM32CubeH5 包我們需要將其放到一個(gè)沒(méi)有空格沒(méi)有中文的路徑下, 在本動(dòng)手實(shí)驗(yàn)中, 我們默認(rèn)將其放在路徑 C:workspace目錄下
生成 OBK 并測(cè)試
在 STM32CubeH5 包下的路徑 STM32Cube_FW_H5_V1.1.0ProjectsNUCLEOH563ZIROT_ProvisioningDA, 在此目錄下, 已經(jīng)包含了默認(rèn)自帶的 obk, 密鑰. 其實(shí)我們可以直接使用這些 obk 以及對(duì)應(yīng)的密鑰, 但在這個(gè)文檔我們將重新生成一套. 并測(cè)試它是否 OK。
燒錄程序再次測(cè)試
接下來(lái), 我們正式燒錄一個(gè)程序并測(cè)試. 在 product state=open 狀態(tài)下, 且 TZEN=0xC3 時(shí), 此時(shí)燒錄任何一個(gè)不帶 TrustZone 的程序,并確保其在 OPEN 狀態(tài)下能正常運(yùn)行,然后將 productstate 切換到 provisioning 狀態(tài)進(jìn)行 DA 預(yù)配置, 重復(fù) 3.2 節(jié)步驟。
在預(yù)配置成功之后, 然后將 product state 切換到 CLOSED(0x72)狀態(tài). 此時(shí) STLink 是無(wú)法再連接的, 然后檢查程序是能依然正常運(yùn)行. 這就是最終想要達(dá)到的效果.在此狀態(tài)下, 可以通過(guò) DA 進(jìn)行回退。
還原
還原的過(guò)程參考 3.3 節(jié), 步驟完全一致. 最終還原成功后, 全片 Flash 內(nèi)容已經(jīng)擦除.至此, 芯片完全恢復(fù)成原始狀態(tài)。