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.

[参考译文] TMS320F28P650SH:TMS320F28P650SH:该芯片如何实现安全启动功能?

Guru**** 2318830 points
Other Parts Discussed in Thread: C2000WARE, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1509764/tms320f28p650sh-tms320f28p650sh-how-does-this-chip-implement-secure-boot-functionality

器件型号:TMS320F28P650SH
Thread 中讨论的其他器件:C2000WAREUNIFLASH

工具/软件:

  1. 在 C2000示例中、没有与 P65的安全启动相关的示例。

  2. 在2838x 芯片中、找到用于启动的安全启动功能、但CPU1BROM_calculateCMAC在可见过程中无法找到类似的功能。 P65库中似乎没有此函数。

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

    您好:

    F28P65的安全启动示例可在此处找到:

    C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f28p65x\examples\c28x\boot

    "可见流程"是什么意思? 这些函数存在于安全 ROM 中、因此无法观察到函数的内容。

    谢谢您、

    Luke

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

    好的、我将得到  C2000Ware_5_04_00_00、 5.2中没有 f28p65x\examples\c28x\boot。
    谢谢,让我试试

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

    好的、我将关闭此主题。

    --卢克

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

    "../boot_ex1_flash_hex_lnk_cpu1.cmd"、第5行:错误#10008-D:找不到文件"roms"
    "../boot_ex1_flash_hex_lnk_cpu1.cmd"、第6行:错误#10021-D:需要文件名、选项、存储器或段、而不是"{"
    "../boot_ex1_flash_hex_lnk_cpu1.cmd"、第7行:错误#10043-D:需要"";""而不是"l"
    "../boot_ex1_flash_hex_lnk_cpu1.cmd"、第8行:错误#10043-D:预期为";"、而不是"}"
    为什么出现此错误?
    我已设置十六进制实用程序标志:--cmac="${PROJECT_ROOT}/boot_ex1_user_cmac_key.txt"--image --memwidth=16 --romwidth=16 "${PROJECT_ROOT}/boot_ex1_flash_hex_lnk_cpu1.cmd"--diag_pwrap=off  

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

    能否发送 boot_ex1_flash_hex_lnk_cpu1.cmd?

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


    它与  F28P65的安全启动示例中的 boot_ex1_flash_hex_lnk_cpu1.cmd 相同

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

    我认为  boot_ex1_flash_hex_lnk_cpu1.cmd 不应用作链接器命令文件、但我设置了 C2000 hex 实用程序
     

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

    您能否尝试 从 build 中排除 boot_ex1_flash_hex_lnk_cpu1.cmd?

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

    谢谢、还有2个问题。

    1. cmac_sb_1是否仅针对小于16KB 的程序计算、 cmac_all 是否大于16KB? 或者这两个都是必需的。 这两个有一些连接吗?

     2.如果 cmac_all 不是 必需的,CPU1BROM_calculateCMAC 有三个 参数, 如何使用此函数  

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

    您好:

    cmac_sb_1和 cmac_all 无法同时启用、但您可以手动一次启用一个、并在存储器浏览器中观察生成的 CMAC 标签、然后根据其中一种方法手动合并标签。

    仅当您想在引导至应用程序代码后对闪存的其他区域进行身份验证时、才需要 cmac_all。 如果您使用 cmac_sb_1、启动 ROM 中的安全启动功能将对前16KB 进行身份验证。 如果对前16KB 进行身份验证就足够了、则无需在应用程序代码中调用 CPU1BROM_calculateCMAC。

    一个常见用例是在前16KB 区域具有 EXEONLY 保护功能的引导加载程序。 引导加载程序对固件进行编程后、用户可以调用 CPU1BROM_calculateCMAC 函数来验证已加载的闪存。

    谢谢您、

    Luke

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

    感谢您的答复

    1.如果是 cmac_sb_1、如何启用或检查该值? 因为 cmac_all 可根据进行检查

    "applicationCMACStatus = CPU1BROM_calculateCMAC (CMAC_AUTH_START_ADDRESS、
    CMAC_AUTH_END_ADDRESS、
    cmac_AUTH_TAG_ADDRESS);"

    2.如果我使用  cmac_all、  cmac_sb_1可以注释吗?

    3.如何更方便地加载此安全启动? 每次我第一次加载十六进制程序、然后加载符号。 uniflash 可以执行 加载 符号吗?

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

    您好:

    您应该通过 OTP 或仿真引导寄存器选择安全闪存启动模式、这将导致 BootROM 在跳转到应用程序代码的开头之前调用 CPU1BROM_calculateCMAC 函数。 如果 CMAC 身份验证失败、您永远不会输入应用程序代码。

    谢谢您、

    Luke

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

    如何更方便地加载此安全启动? 每次我第一次加载十六进制程序、然后加载符号。 uniflash 可以执行 加载 符号吗?

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

    据我所知、遗憾的是、您无法从.hex fil 加载符号。 以下两步过程必须使用.hex 加载程序、然后使用.out 加载符号。 除了寄存器读取之外、Uniflash 没有调试功能、因此我希望它没有符号加载功能。

    谢谢您、

    Luke

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

    我的需求是能够分批将带安全启动的程序导入生产线、而使用 CCS 逐个导入程序是不切实际的、您有任何推荐的方法吗?谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Uniflash 除了寄存器读取之外没有调试功能、因此我不希望它具有符号加载功能。

    Luke 是正确的(尽管也支持存储器读取)、在通常不需要调试可见性(即调试符号)的生产刷写环境中、通常会使用 UniFlash。 为了实现调试可见性、需要使用 CCS。