1、问题描述
客户要在 STM32U5 SBSFU 的基础上开发自己的项目,SBSFU 由三个工程组成,Boot,APP,Loader。其中的 Boot 工程由开源项目 MCU boot 移植而来,它负责整个系统的安全启动以及升级部分。客户想在此基础上新增一个串口通信,不使用 DMA 模式的情况下,串口能够正常工作,但切换到 DMA 模式的时候就不正常了,PC 端连接串口发送引脚,显示接收的数据全为 0。
2、问题分析及定位
此问题看起来应该是 DMA 哪里配置出了问题。为了快速找到问题,不如先从STM32CubeMx 重新生成一个基于 trustzone 的 USART 且带 DMA 的测试工程,等到测试工程测试通过后,直接移植到 boot 工程内不就完了?于是我直接使用 STM32CubeMx 新建一个工程,使用 LPUART1 外设 PA2,PA3 引脚。并分配其为 M33 Secure。配置 115200 bps。1+8+1 数据格式。
3、小结
在 trustzone 使能的情况下,MCU 内的资源,若代码中没有显式设置的情况下,要注意其默认状态,内部 flash, SRAM, 片外存储映射区域以及 GPIO 引脚均为安全的,且特权,Securable外设基本都是非安全的,在 STM32U5 安全培训的一页 PPT 中有做总结。