• 资料介绍
    • 引言
    • 关于外设中断
    • 关于 DMA
    • 关于 GPIO 及其连接的外设
    • STM32CubeMX 外设初始化对 TrustZone 的支持
    • 小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1272 STM32 TrustZone开发调试技巧(2)——外设使用常见问题

03/24 10:43
336
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1272 STM32 TrustZone开发调试技巧(2)——外设使用常见问题

1.28 MB

引言

在 STM32 TrustZone 开发调试技巧的第(1)篇中,我们介绍了内核的 SAU/IDAU,地址的安全属性配置,资源的安全属性配置,以及内核访问资源的安全规则等内容,这部分作为 TrustZone S/NS 工程开发的基础,让 S 和 NS 工程代码能够基本运行起来。在此基础上,S/NS App 还需要使用片上外设等资源,实现应用程序的业务逻辑和功能,这时候往往会遇到一些与外设使用相关的问题。

在这一篇中,我们将把重点放在 Trust Zone 架构下应用开发中使用外设的环节,从外设中断、DMAGPIO 及其与 IO 连接的外设等几个方面,介绍这些部分与传统的不带TrustZone 的 STM32 开发相比有哪些变化,同时会列举一些相关开发中的常见问题,并给出问题的分析与解决方法,供开发者参考。

关于外设中断

中断向量表 Vector Table

传统的 ARM V6/V7 内核,例如 CM4、CM7,都只有一套中断向量表,而带 SecurityExtension 的 CM33 内核有两套中断向量表,分别对应 CPU 的 S 和 NS 两种状态。

关于 DMA

DMA TrustZone aware 特性

STM32 MCU 中的 DMA 单元(例如 GPDMA, LPDMA)在 Trust Zone 框架下属于 TZaware IP,DMA 能够直接支持 AHB5 总线

作为总线主设备,DMA 可以发出 S 安全或者 NS 非安全的 transaction。以 STM32U5GPDMA 为例,通过 GPDMA_SECCFGR.SECx 寄存器,可以将 DMA 的 Channel 设置为安全或者非安全通道。

关于 GPIO 及其连接的外设

GPIO TrustZone aware 特性

GPIO 在 Trust Zone 框架下是一个 TZ aware IP,每个管脚都可以单独配置其安全访问属性(通过 GPIOx_SECCFGR 寄存器)。上电默认所有的 GPIO pin 都是安全属性,当某个 GPIO pin 设置为安全,则它所对应的 AF 寄存器,MODE 寄存器以及 I/O 数据都只允许 S 访问,当出现 NS 访问时,效果会是 RAZ/WI,即读为零/写忽略。

如果某组 GPIO 其中如果至少一个 pin 具有 S 属性,那么这个 GPIO 在 RCC 中对应的clock 和 reset 控制位也会自动具有安全属性,只有安全代码才能控制。

STM32CubeMX 外设初始化对 TrustZone 的支持

这个部分,我们会结合前面提到的外设中断、DMA、GPIO、Securable 外设等,简要介绍一下在 STM32CubeMX 工具中如何做 TrustZone 相关的配置。

小结

本文针对 STM32 进行 V8M TrustZone 开发中使用外设需要的配置做了简要介绍,也列举了一些 TrustZone 环境下外设使用中的常见问题及其分析和解决方法,最后还提到了使用 STM32CubeMX 进行外设安全配置的一些例子,希望对广大开发者有所帮助。

在后续的篇章中,我们将总结一些其他的 TrustZone 开发中的常见问题及调试技巧,例如 Hard Fault 异常的处理与调试,TrustZone 中 App 使用 RTOS 的注意事项等,欢迎读者继续关注。

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐

方案定制

去合作
方案开发定制化,2000+方案商即时响应!