ROM安全启动无法跳转到boot
-
目前已经在用户 Boot 中配置了 Secure Boot,但是实际烧写后发现 ROM 启动后没有正常进入 Boot,调试了一下发现主要是严格安全启动BOOT_SEQ_STRICT这个位导致进入不了boot,因此希望确认 ROM → Boot 的启动流程以及具体的调试方法
CM7_0_M_EN-1 BOOT_SEQ-1 BOOT_SEQ_STRICT-1 APP_WDG_EN-1 ROM_BOOT_SCST_EN-1 CPDIVS-0boot中secure group软件配置如下
const secure_boot_group_config_t secure_boot_group SB_CONFIG_SECTION_SEG = { .secure_boot_group_marker = SECURE_BOOT_GROUP_MARKER, .secure_boot_section_num = 1, .encrypt = true, .aes_key_size = KEY_LEN_128_BITS, .key_slot = 0, .section_config_addr[0] = (uint32_t)&secure_boot_section_config0, };boot中secure section软件配置如下
const secure_boot_section_config_t secure_boot_section_config0 SB_CONFIG_SECTION_SEG = { .secure_boot_marker = SECURE_BOOT_SECTION_MARKER, .aes_key_size = KEY_LEN_128_BITS, .key_slot = 0, .start_addr = 0x02000800, .length = 0xFC00, .cmac_addr = (uint32_t)&cmac0[0], };目前已经检查了生成的 HEX 文件,Secure Boot Group 和 Secure Boot Section 的相关配置在 HEX 中没有发现明显异常,并且编辑hex在最后加入了boot的cmac计算值

但烧写进去boot未启动
想确认一下:
1.ROM 没有进入 Secure Boot 流程
2.ROM无法跳转是因为CMAC 校验失败还是因为group/section配置校验失败
3.关于这部分调试方法或者相关资料和参考示例代码 -
Diga 在 ROM安全启动无法跳转到boot 中说:
密钥有没有更新
1.我现在通过iar attach上去查看运行卡住的地址是0x0100c784,我看这段其实并没有内容
2.密钥这点真是我现在迷惑的,ROM校验跳boot是根据boot中安全启动的配置来决定的吗,例如我现在工程中配置key_slot=0那么ROM校验的时候是使用密钥槽0中的来校验码,如果是这样密钥应该是没问题的,因为现在boot能通过安全启动跳转app,使用的也是该密钥槽
3.程序我查看内存是有更新的,可以查看到hex确实是有烧录到其中

-
Diga 在 ROM安全启动无法跳转到boot 中说:
- 这段地址是在 ROM 里,应该是停在 ROM 没跳过去
- 签名的输入,一是你的程序,即明文,二是你的密钥,这俩但凡有一个更新了,签名都要同步更新,不然肯定不匹配。
第二点没有调试手段吗,例如查看ROM算出的cmac值,然后我可以再和我工具计算出来的比较一下
-
Diga 在 ROM安全启动无法跳转到boot 中说:
- 这段地址是在 ROM 里,应该是停在 ROM 没跳过去
- 签名的输入,一是你的程序,即明文,二是你的密钥,这俩但凡有一个更新了,签名都要同步更新,不然肯定不匹配。
这部分下午尝试用yuntu_tool生成,生成出来可以跳转boot,但比较发现secure section被篡改了,和资料上说明的有点出入,例如头应该是0x5aa5,key slot这部分0x33也不太合理


yuntu_tool配置如下

快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...