[STM32L5] STM32L562E-DK 上的TrustZoneEnabled 模板无法切换到非安全世界

[复制链接]
6|0
cutfall 发表于 2026-9-21 15:35 | 显示全部楼层 |阅读模式
我正在使用 STM32L562E-DK 开发板测试 "STM32Cube_FW_L5_V1.6.0" 软件包中包含的 "TrustZoneEnabled" 模板。目标是运行从安全区切换到非安全区的基础示例,但我在按照 "README.txt" 中的所有说明操作并编译项目之后发现,代码会卡在下面这个函数中:

static void NonSecure_Init(void)
{
  funcptr_NS NonSecure_ResetHandler;

  SCB_NS->VTOR = VTOR_TABLE_NS_START_ADDR;
  /* Set non-secure main stack (MSP_NS) */
  __TZ_set_MSP_NS((*(uint32_t *)VTOR_TABLE_NS_START_ADDR));
  /* Get non-secure reset handler */
  NonSecure_ResetHandler = (funcptr_NS)(*((uint32_t *)((VTOR_TABLE_NS_START_ADDR) + 4U)));
  /* Start non-secure state software application */
  NonSecure_ResetHandler();
}
具体卡在 "NonSecure_ResetHandler ()" 这一行;
当前option bytes配置(已通过 STM32CubeProgrammer 验证):

- DBANK => 已勾选(Checked)
- TZEN => 已勾选(Checked)
- nSWBOOT0 => 已勾选(Checked)
- nBOOT0 => 未勾选(Unchecked)
- NSBOOTADD0 => 值:0x100000 => 地址:0x08000000
- NSBOOTADD1 => 值:0x17f200 => 地址:0x0bf90000
- SECBOOTADD0 => 值:0x1 => 地址:0x00000080
- SECWM1_PSTRT => 值:0x0 => 地址:0x08000000
- SECWM1_PEND => 值:0x7F => 地址:0x0803f800
- SECWM2_PSTRT => 值:0x1 => 地址:0x08040800
- SECWM2_PEND => 值:0x0 => 地址:0x08040000

您需要登录后才可以回帖 登录 | 注册

本版积分规则

207

主题

209

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0