• 資料介紹
    • 引言
    • 關(guān)于外設(shè)中斷
    • 關(guān)于 DMA
    • 關(guān)于 GPIO 及其連接的外設(shè)
    • STM32CubeMX 外設(shè)初始化對(duì) TrustZone 的支持
    • 小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

LAT1272 STM32 TrustZone開(kāi)發(fā)調(diào)試技巧(2)——外設(shè)使用常見(jiàn)問(wèn)題

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

LAT1272 STM32 TrustZone開(kāi)發(fā)調(diào)試技巧(2)——外設(shè)使用常見(jiàn)問(wèn)題

1.28 MB

引言

在 STM32 TrustZone 開(kāi)發(fā)調(diào)試技巧的第(1)篇中,我們介紹了內(nèi)核的 SAU/IDAU,地址的安全屬性配置,資源的安全屬性配置,以及內(nèi)核訪(fǎng)問(wèn)資源的安全規(guī)則等內(nèi)容,這部分作為 TrustZone S/NS 工程開(kāi)發(fā)的基礎(chǔ),讓 S 和 NS 工程代碼能夠基本運(yùn)行起來(lái)。在此基礎(chǔ)上,S/NS App 還需要使用片上外設(shè)等資源,實(shí)現(xiàn)應(yīng)用程序的業(yè)務(wù)邏輯和功能,這時(shí)候往往會(huì)遇到一些與外設(shè)使用相關(guān)的問(wèn)題。

在這一篇中,我們將把重點(diǎn)放在 Trust Zone 架構(gòu)下應(yīng)用開(kāi)發(fā)中使用外設(shè)的環(huán)節(jié),從外設(shè)中斷、DMAGPIO 及其與 IO 連接的外設(shè)等幾個(gè)方面,介紹這些部分與傳統(tǒng)的不帶TrustZone 的 STM32 開(kāi)發(fā)相比有哪些變化,同時(shí)會(huì)列舉一些相關(guān)開(kāi)發(fā)中的常見(jiàn)問(wèn)題,并給出問(wèn)題的分析與解決方法,供開(kāi)發(fā)者參考。

關(guān)于外設(shè)中斷

中斷向量表 Vector Table

傳統(tǒng)的 ARM V6/V7 內(nèi)核,例如 CM4、CM7,都只有一套中斷向量表,而帶 SecurityExtension 的 CM33 內(nèi)核有兩套中斷向量表,分別對(duì)應(yīng) CPU 的 S 和 NS 兩種狀態(tài)。

關(guān)于 DMA

DMA TrustZone aware 特性

STM32 MCU 中的 DMA 單元(例如 GPDMA, LPDMA)在 Trust Zone 框架下屬于 TZaware IP,DMA 能夠直接支持 AHB5 總線(xiàn)

作為總線(xiàn)主設(shè)備,DMA 可以發(fā)出 S 安全或者 NS 非安全的 transaction。以 STM32U5GPDMA 為例,通過(guò) GPDMA_SECCFGR.SECx 寄存器,可以將 DMA 的 Channel 設(shè)置為安全或者非安全通道。

關(guān)于 GPIO 及其連接的外設(shè)

GPIO TrustZone aware 特性

GPIO 在 Trust Zone 框架下是一個(gè) TZ aware IP,每個(gè)管腳都可以單獨(dú)配置其安全訪(fǎng)問(wèn)屬性(通過(guò) GPIOx_SECCFGR 寄存器)。上電默認(rèn)所有的 GPIO pin 都是安全屬性,當(dāng)某個(gè) GPIO pin 設(shè)置為安全,則它所對(duì)應(yīng)的 AF 寄存器,MODE 寄存器以及 I/O 數(shù)據(jù)都只允許 S 訪(fǎng)問(wèn),當(dāng)出現(xiàn) NS 訪(fǎng)問(wèn)時(shí),效果會(huì)是 RAZ/WI,即讀為零/寫(xiě)忽略。

如果某組 GPIO 其中如果至少一個(gè) pin 具有 S 屬性,那么這個(gè) GPIO 在 RCC 中對(duì)應(yīng)的clock 和 reset 控制位也會(huì)自動(dòng)具有安全屬性,只有安全代碼才能控制。

STM32CubeMX 外設(shè)初始化對(duì) TrustZone 的支持

這個(gè)部分,我們會(huì)結(jié)合前面提到的外設(shè)中斷、DMA、GPIO、Securable 外設(shè)等,簡(jiǎn)要介紹一下在 STM32CubeMX 工具中如何做 TrustZone 相關(guān)的配置。

小結(jié)

本文針對(duì) STM32 進(jìn)行 V8M TrustZone 開(kāi)發(fā)中使用外設(shè)需要的配置做了簡(jiǎn)要介紹,也列舉了一些 TrustZone 環(huán)境下外設(shè)使用中的常見(jiàn)問(wèn)題及其分析和解決方法,最后還提到了使用 STM32CubeMX 進(jìn)行外設(shè)安全配置的一些例子,希望對(duì)廣大開(kāi)發(fā)者有所幫助。

在后續(xù)的篇章中,我們將總結(jié)一些其他的 TrustZone 開(kāi)發(fā)中的常見(jiàn)問(wèn)題及調(diào)試技巧,例如 Hard Fault 異常的處理與調(diào)試,TrustZone 中 App 使用 RTOS 的注意事項(xiàng)等,歡迎讀者繼續(xù)關(guān)注。

資料預(yù)覽

相關(guān)推薦