你好,
我们正在 RT1176 CPU 上测试签名和加密过程。
我们的基本系统配置为:UART/JTAG <-> RT1176 <-> SPI Nor Flash
我们用于测试的软件是:
- RT1176 测试固件(一个简单的固件,启动后会激活一个 LED)
- NXP MCUXpresso 安全配置/blhost(用于通过UART进行签名和加密)
- Segger JFlash(用于通过 JTAG 访问闪存)
到目前为止,我们进行了以下测试:
1)当 CPU 解锁且签名关闭时,固件(未签名/未加密)按预期启动,我们可以通过 JTAG 毫无问题地访问闪存。
2) 当 CPU 解锁且签名处于活动状态时,固件(已签名/未加密)按预期启动,我们可以通过 JTAG 毫无问题地访问闪存。
3) 当 CPU 被锁定且签名开启时,固件(已签名/加密)将无法启动,并且通过 JTAG 对闪存的访问变得不稳定。
所以,我们遇到了某种加密问题。但在深入探讨加密问题之前,我们想了解步骤 3 中不稳定的闪存行为。
在几次测试中,很明显,一旦 BT_FUSE_SEL 熔断,闪存问题总是会发生(BT_FUSE_SEL 完好:通过 JTAG 完全访问闪存,BT_FUSE_SEL 熔断:通过 JTAG 不稳定访问闪存)。由于我们仍在测试阶段,因此尚未通过熔丝位设置禁用 JTAG。
所以问题是:
为什么 BT_FUSE_SEL 会导致我们失去对闪存的访问权限?(CPU锁定时是否有读取保护机制?)Segger JFlash 工具在 CPU 锁定的情况下是否存在问题?……)
另请参阅:
https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/mxrt1176-quot-half-quot-bricked-after-programmin...
->同样的问题:BT_FUSE_SEL > 无闪存访问
提前致谢。
此致,
弗洛里安
感谢您对 NXP MIMXRT 系列产品的关注!
BT_FUSE_SEL 不会直接启用 SPI 或非 读取保护或禁用 JTAG。它的功能是强制 Boot ROM 使用存储在 eFuse 中的启动配置,而不是使用 BOOT_CFG 引脚。
如果 OTFAD/加密 XIP 配置也已编程到 eFuse 中,则烧录 BT_FUSE_SEL 可使该配置在每次启动时生效,并消除通过 BOOT_CFG 引脚绕过它的可能性。因此,错误的 OTFAD 上下文、密钥、地址范围或加密映像可能会导致 Boot ROM 在应用程序启动之前失败。
因此,我认为目前最可能的原因是与启动相关的 GPIO 已被旁路,但相应的 eFuse 没有正确配置。BT_FUSE_SEL 本身不会影响 JTAG 连接。我建议您进行A/B测试,以便快速找出问题所在。
此致,
加文
你好@Gavin_Jia ,
谢谢你的回答!
今天我们修复了加密过程(固件中的一个漏洞)。我们的固件现在已启动,CPU 中已激活签名/加密功能。
所以大问题解决了。
剩下的问题是设置 BT_FUSE_SEL 后通过 JTAG 读取 spi-flash 的问题。
附件是我们的保险丝图。
你觉得有什么因素可能导致我们遇到的问题吗?
提前致谢。
弗洛里安