|
问题: 我在使用NXP的LPC55S69微控制器,启用TrustZone后,如何将特定的外设(如USB)配置到非安全区,以便非安全世界的应用程序可以访问? 正确答案与解决方案:
LPC55S6x系列通过AHB安全控制器配置外设的安全属性。关键步骤如下: 在安全世界代码中配置AHB安全控制器: 在系统初始化早期(通常是安全启动代码或安全初始化函数中),使用AHB安全控制器的寄存器将目标外设的访问权限设置为非安全。 - // 示例:将USB外设配置为非安全
- // 地址:参考用户手册中AHB_SECURE_CTRL寄存器的偏移量
- #define AHB_SECURE_CTRL_BASE 0x40024000
- volatile uint32_t *AHB_SECURE_CTRL_SETTING = (volatile uint32_t *)(AHB_SECURE_CTRL_BASE + 0x118); // SETTING_0寄存器偏移可能不同
- // 将USB外设对应的位(例如bit 8)清零,使其成为非安全
- *AHB_SECURE_CTRL_SETTING &= ~(1UL << 8);
复制代码
注意执行顺序: 此配置必须在任何非安全代码运行之前完成。 验证: 编写非安全世界的应用程序,尝试访问USB寄存器进行读写,验证操作是否成功且不会触发安全异常。
|