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.

[参考译文] TMS320F28P550SG:自定义引导加载程序中的 CMAC 和 CPU1BROM_calculateCMAC 问题

Guru**** 2411080 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1529008/tms320f28p550sg-problem-with-cmac-and-cpu1brom_calculatecmac-in-custom-bootloader

器件型号:TMS320F28P550SG
Thread 中讨论的其他器件:UNIFLASHC2000WARE

工具/软件:

大家好:

我遇到上述函数调用的问题 (CPU1BROM_calculateCMAC)、但需要一些帮助。

我确实有一个安全启动项目、当前通过仿真引导完成、当引导加载程序大于 16kB 时、为引导加载程序 ix 0x80000 到 0x83FFF 保留的存储器区域。 因此、我添加了一个函数 cmac_check_do_application_code_check 、该函数调用带有 0x80000、0x84000 和 0x00083F00 的 CPU1BROM_calculateCMAC 作为 ts 标签、所有这些操作都是根据 www.ti.com/.../spract3.pdf 完成的。

我们使用全新的 P55 器件启动了项目、并拥有具有样片(标记为 XF28P550SJ9PZ)的电路板、代码运行正常。 现在、我们得到了最终控制器(标记为 FS28P550SG8PZ)和代码执行中断:

仿真安全启动似乎有效、我已经向 0x78018...添加了虚拟读取 在调用 Bootrom 函数 CPU1BROM_calculateCMAC 之前的 CMACKEY。 但是、只要我单步进入函数 (LCR 0x3f402b)、控制器似乎就会进行复位 、调试器就会指出:program 计数器位于 0x3FEEAE 之后、“_system_post_cinit () 没有可用的源“。

希望提供任何建议。

提前感谢、

Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Marco。

    您能否说明问题是与安全启动还是单步执行有关?

    如果安全启动正常、而单步执行没有、则这是预期行为。 让我看看设备之间的行为差异、让您在大约一周内知道。

    -Kedar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kedar:

    我仅通过仿真器执行安全启动: 仿真启动(推荐用于示例/开发)。 在 CCS 存储器窗口中、将 BOOTPINCONFIG 位置 (0x0D00) 设置为 0x5AFFFFFF、并将 BOOTDEF 位置 (0x0D04) 设置为 0x0000000A。 这似乎在我到达 main 函数内的 init 代码时起作用、并且可以从此处单步执行。

    当我执行“正常“引导以从目标开始闪存时、我确实会看到它一直在复位。 一旦我删除了对执行虚拟读取的函数的调用以及对  CPU1BROM_calculateCMAC 的调用、控制器就会开始正常运行。

    Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marco、

    我在这里看到的一个主要问题是您尝试在 DCSM 上进行虚拟读取。 ROM 本身就是这样做的。 为什么要在此处手动完成? 此外、使用链路指针映射虚拟读取偏移、但我在您的主要问题中看不到任何这方面的引用。

    您能详细说明一下吗?

    -Kedar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kedar:

    我从 https://www.ti.com/lit/an/spract3/spract3.pdf?CPU1=1717693001038 第 9 章中扣除了虚拟读取的必要性、其中规定了: 类似地、如果使用 ts 身份验证 API 而没有在 CPU1 上运行安全闪存启动模式、则 A
    在调用这些 API 之前、必须从 CPU1 为 Z1 OTP CMACKEY 执行虚拟加载。

    但它没有任何区别、因为控制器具有相同的行为并且始终使用 FS28P550SG8PZ  控制器进行复位、但使用 XF28P550SJ9PZ  控制器不进行复位。

    如果没有虚拟读取、当调用 CPU1BROM_calculateCMAC 并在该代码之后执行步进或具有断点时、我仍然会获得复位。

    Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否共享这两个器件的完整 OTP 数据?

    -Kedar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kedar:

    有关此问题的任何新闻。 任何建议或提示都将非常感谢。

    此致、Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kedar:

    我已收到产品组的以下答案:

    “在早期器件(X 器件)中、这种保护机制不存在、但在 RTM 器件中是正常的。 我想客户对两个 DSP 使用相同的二进制文件。 他可以为新器件重新编译工程吗? 符号是不同的。 量产样片具有硬件安全修复、需要一组新的符号。 发布包应该包含所有内容、您可以在 C2000Ware 中找到它、C2000Ware 中应该包含所有符号库。“

    遗憾的是、这对我完全没有帮助:

    我确实正在将同一文件刷写到 SG8 RTM 器件和 SJ9 X 器件中。 我在编译 SG8 控制器时考虑到了该工程(例如,保留了不存在的闪存部分)。 我在编译 SG8 器件而不是 SJ9 器件时看不到任何其他差异。 我从 C2000Ware V.5.05 链接 F28P55x_SecureZoneCodeSymbols_fpu32.lib 库(位于 C:\ti\c2000\C2000Ware_5_05_00_00\libraries\boot_rom\f28p55x\rev0\ROM_symbol_libs\SafeZoneCode)、并指示 CPU1BROM_calculateCMAC 固定在地址 0x003f402b 处。

     

    那么如何获得新的符号呢? 您到底在谈论什么符号?

    此致、Marco

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marco、  

    量产样片中针对安全 CMAC 操作存在地址变化。 较旧符号具有一个地址、如果直接从非安全区域访问该地址、则会导致复位。

    /cfs-file/__key/communityserver-discussions-components-files/171/F28P55x_5F00_SecureZoneCodeSymbols_5F00_fpu32.lib/cfs-file/__key/communityserver-discussions-components-files/171/F28P55x_5F00_SecureZoneCodeSymbols.lib

    您能尝试链接这些符号并告诉我吗?

    您需要 在地址处调用 CPU1BROM_calculateCMAC 0x3f4000

    -Kedar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marco、  

    对此有任何更新?

    -Kedar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kedar:

    我再次把这个程序与你之前所附的新的谎言联系起来、这就成了一个伎俩。 最后、它按照预期工作。 非常感谢您对此的帮助。 我将关闭问题、如已解决。

    Marco