1、問題描述
客戶要在 STM32U5 SBSFU 的基礎(chǔ)上開發(fā)自己的項(xiàng)目,SBSFU 由三個工程組成,Boot,APP,Loader。其中的 Boot 工程由開源項(xiàng)目 MCU boot 移植而來,它負(fù)責(zé)整個系統(tǒng)的安全啟動以及升級部分。客戶想在此基礎(chǔ)上新增一個串口通信,不使用 DMA 模式的情況下,串口能夠正常工作,但切換到 DMA 模式的時候就不正常了,PC 端連接串口發(fā)送引腳,顯示接收的數(shù)據(jù)全為 0。
2、問題分析及定位
此問題看起來應(yīng)該是 DMA 哪里配置出了問題。為了快速找到問題,不如先從STM32CubeMx 重新生成一個基于 trustzone 的 USART 且?guī)?DMA 的測試工程,等到測試工程測試通過后,直接移植到 boot 工程內(nèi)不就完了?于是我直接使用 STM32CubeMx 新建一個工程,使用 LPUART1 外設(shè) PA2,PA3 引腳。并分配其為 M33 Secure。配置 115200 bps。1+8+1 數(shù)據(jù)格式。
3、小結(jié)
在 trustzone 使能的情況下,MCU 內(nèi)的資源,若代碼中沒有顯式設(shè)置的情況下,要注意其默認(rèn)狀態(tài),內(nèi)部 flash, SRAM, 片外存儲映射區(qū)域以及 GPIO 引腳均為安全的,且特權(quán),Securable外設(shè)基本都是非安全的,在 STM32U5 安全培訓(xùn)的一頁 PPT 中有做總結(jié)。