您好!
我的客户正在使用 F28033进行大规模生产。
它们使用相同的软件刷写设备。 但在某些器件中、它们将面临以下问题(约10%)。
通过单击 OK (确定)、问题再次出现。
通过将 GPIO34拉至低电平以设置为等待模式、我们能够连接目标、擦除闪存并对正确的软件进行编程。 然后拉高 GPIO34、我们仍然能够对软件进行编程。
这种问题的原因可能是什么?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我的客户正在使用 F28033进行大规模生产。
它们使用相同的软件刷写设备。 但在某些器件中、它们将面临以下问题(约10%)。
通过单击 OK (确定)、问题再次出现。
通过将 GPIO34拉至低电平以设置为等待模式、我们能够连接目标、擦除闪存并对正确的软件进行编程。 然后拉高 GPIO34、我们仍然能够对软件进行编程。
这种问题的原因可能是什么?
Howard、
我们通常建议客户将器件置于等待引导模式、以避免在建立仿真连接之前执行任何代码。 上述消息通常是由于代码安全模块(CSM)被激活、这将不允许 JTAG 连接完成。 如果器件未解锁、则 MCU 从 CSM 保护区域执行代码时会发生这种情况。
您能评论一下客户通常设置的引导模式吗?如果这种情况发生在出厂时的新器件上(所有器件都来自 TI 已擦除)、或者发生在之前编程的器件上吗?
最棒的
Matthew
Howard、
以下是我可以提出的方案:
引导模式为闪存引导:
1)器件处于擦除状态/从 TI 发货为新:
在这种情况下、器件将尝试跳转到闪存入口点。 由于它被擦除、它将尝试执行运行代码0xFFFF。 这不是有效的运算代码、将转换为非法指令(ITRAP1)。 然后、这将跳回到 Brom 中的陷阱 ISR。 这里的行为是永久启用 WD 和 LOOP。 WD 超时后、它将启动 XRSn、引导过程将再次开始。
如果此时尝试仿真连接、则由于 Brom 不安全、因此初始连接的可能性非常大(请记住、即使器件没有密码、仍必须读取 CSM 位置才能完全解锁器件)。
但是、存在一个持续存在的问题;在这种情况下、如果客户不停止器件(通过连接/停止)、最终代码将由于看门狗复位而重新获取闪存入口点。 执行此操作时、它将执行闪存中的单个指令、这仍然是安全的、并终止 JTAG 连接。
2)器件已编程:
假设客户没有将 CSM 密码编程到器件中、只要他们已经通过 CSM 读取其闪存代码来解锁器件; 调试连接应该是可以的、因为无论器件从哪个存储器执行、都将是不安全的、并且不会触发 CSM JTAG 断开逻辑。
在一个小窗口中、代码已经开始从闪存执行、但在客户解锁器件之前、这将导致 JTAG 连接问题、因为将存在到一个安全区域的存储器访问。 如果客户等了足够的时间让器件通过这部分代码、我认为这不太可能。
3)等待引导模式:
这可以解决上述任何潜在问题(包括客户是否已编程密码并且未解锁器件)。 在这种情况下启用 WD;但代码始终在不安全的 Brom 之外执行、因此任何 JTAG 连接都应该起作用。 请注意、即使在这种情况下、如果客户在解锁器件之前尝试从安全存储器中读取/执行、则在建立 JTAG 连接后、它仍将导致仿真断开。 我认为 CCS 中有 GEL 文件的默认操作来在连接时对 CSM 进行虚拟读取、以防止在 CSM 中没有密码时发生这种情况。 因此、这可能不会对客户造成问题。
最棒的
Matthew
Howard、
是的,我同意你的发言。 我认为、如果代码从一个安全区域执行、那么这里的问题就是操作;这是器件终止 JTAG 连接的问题。 CCS 将其解释为器件处于低功耗状态、因为它无法建立连接。
这不同于尝试使用正确的密码对器件进行编程。 在这种情况下、器件不会在 CSM 被锁定的情况下从安全存储器中运行、因此 JTAG 连接不会断开、但器件可以返回一条消息、指出闪存已被锁定、无法编程。
最棒的
Matthew