TMS570LS3的闪存安全保护 问: 我正在使用 TMS570LS3137,希望确保闪存的安全性。我在技术文档 SPNS162中查找到一些有关 AJSM(高级 JTAG 安全模块)的信息,但说得太笼统。请问是否有人可以告诉我在何处可以找到有关如何锁定该器件,在何处写入密钥(特定地址)以及器件锁定后如何解锁 JTAG 端口等的详细信息。
答: 器件上的 AJSM 从 TI 发货时就处于解锁状态。这是通过在闪存 Bank 0 中的客户 OTP 部分编写正确的“可视化解锁代码”实现的。这是一个位于字地址 0xF0000000 和 0xF0000004 上的 128 位代码。 用户通过编写这 128 位中的一位或多个位,即可以锁定该器件。需要注意的是,编程时只能把 1 改写为 0。这部分不允许执行擦除操作(OTP 即为一次性可编程)。一旦这 128 位密码中的任何一位被修改,则该器件在加电后即处于锁定状态。在这种情况下,任何 JTAG 仿真器能看到的唯一测试访问端口 (TAP) 就是 AJSM TAP。AJSM TAP 看上去与 JTAG TAP 相同:有 4 位 IR 寄存器,但为了与 JTAG TAP 区分开,其 IDCODE 寄存器中的值不同。 为解锁器件,用户必须通过 AJSM 的“解锁扫描 (unlock-by-scan)”寄存器扫描正确的 128 位代码。IR 值为 0xB 时,可在 AJSM TAP 端口上访问该寄存器。待扫描的值必须具有这样的特征:即在与OTP 中修改后的值进行XOR 运算后,可以得到原始的正确可视化解锁代码。 用解锁扫描寄存器进行扫描时所使用的实用工具需由用户选定的仿真器厂商提供。我们已经用 Signum JTAGjet 仿真器以及 Spectrum Digital 提供的 XDS510 USB 仿真器成功验证了该流程。
问: 谢谢您的解说。我还需要了解一些其他信息,因为我想在使用 AJSM 模块之前确保自己对其有个正确而全面的了解。首先,我正在配有 CCS V5.1 和 Spectrum Digital XDS510 USB 仿真器的定制板上使用 TMS570LS3137。 我打算通过将四个含有密钥的32位常量分别映射到 OTP 中的 0xF0000000、0xF0000004、 0xF0000008和 0xF000000C 地址上来锁定我的器件。推测我使用 JTAG 仿真器为软件编程时,CCS 会自动为闪存中的应用以及 OTP 中的密钥编程。我的推测是否正确? 我没有理解您说的临时用 JTAG 仿真器解锁器件,以进行调试或重新在闪存中写入另一应用的方法。我是否需要在 GEL 文件中编写特殊函数,用于写入我的解锁密钥?这个解锁密钥是否与 OTP 中编程的那个相同?您能否提供一个示例,说明我应该怎么用 CCS V5.1来解锁器件,或者我是否需要使用其他程序?
答: 请看我下面的说明: 我打算通过将四个含有密钥的32位常量分别映射到 OTP 中的0xF0000000、0xF0000004、 0xF0000008和 0xF000000C地址上来锁定我的器件。推测我使用 JTAG 仿真器为软件编程时,CCS 会自动为闪存中的应用以及 OTP 中的密钥编程。我的推测是否正确? >> 是的,您还可以让 CCS 为 OTP 编程。有个选择框可以启用 OTP 编程功能。但我建议您使用专用的独立 OTP 编程步骤来锁定器件,正好可以避免意外器件锁定。 还有,我没有理解您说的用 JTAG 仿真器临时解锁器件,以进行调试或重新在闪存中写入另一应用的方法。我是否需要在 GEL 文件中编写特殊函数,用于写入我的解锁密钥?这个解锁密钥是否与 OTP 中编程的那个相同?您能否提供一下示例,说明我应该怎么用 CCS V5.1 来解锁器件,或者我是否需要使用其他程序? >>一旦您锁定器件,外部工具唯一能看到的测试访问端口 (TAP) 就是AJSM TAP 且无法访问 CPU 扫描链。 AJSM 扫描链上有一个名为“解锁扫描”的寄存器。您需要根据自己使用的仿真器选择特定的外部工具。这个工具可让您通过解锁扫描寄存器扫描所需的 128 位密码,实现器件解锁。“解锁扫描”寄存器位于 IR 值 0b1011 处。 假定原始可视化解锁代码为 0xFFFF0000 0xFF00FF00 0xF0F0F0F0 0xFFFF0000。(这只是举例。实际代码中零更少。) 为锁定器件,您需要把第四位的 1 改为 0,这样这个位置的闪存 OTP存储的是: 0xF0FF0000 0xFF00FF00 0xF0F0F0F0 0xFFFF0000 现在要解锁工具,需要通过“解锁扫描”寄存器扫描到 x0F000000 0x00000000 0x00000000 0x00000000值。其概念是扫描到的值和目前闪存 OTP 中存储的值进行 XOR 运算得到的结果必定是原始可视化解锁代码。 对于任何常用的仿真器,我们目前还没有可供使用的便利工具。Signum 提供的 JTAGjet 仿真器在没有抽象功能或便利工具的协助下,仅允许用户执行低级操作,可用于完成上述解锁流程。
|