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.

[参考译文] F29H850TU:F29 证书处理?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1593734/f29h850tu-f29-certificate-handling

器件型号: F29H850TU

尊敬的 TI 支持:

我目前正在根据文档 spradn0.pdf 和以下示例工程开发适用于 F29 器件的生产编程工具:

C:\ti\f29h85x-sdk_1_01_00_00\examples\driverlib\single_core\flash\uart_flash_kernel

但是、在客户的形象中(他们正在使用 模式 2 )、则有大量数据超出证书中指定的范围。

此外、 C29x3 似乎没有自己的证书 。 客户告诉我们、C29x3 与 C29x1 共享同一个证书。

您能否告知应该如何处理这种情况?
在这种情况下、对映像进行编程和验证的正确方法是什么?

感谢您的支持。

此致、

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

    您好 Lin、

    证书中指定的范围之外有大量数据。

    您是否知道客户为什么创建了图像大小不正确的证书? 它们应提供证书中的完整范围。  

    [quote userid=“119810" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1593734/f29h850tu-f29-certificate-handling C29x3 似乎没有自己的证书 。 客户告诉我们、C29x3 与 C29x1 共享同一张证书。

    客户还需要为 CPU3 创建证书。 当客户开始为其应用程序添加安全性并且需要对 CPU3 的映像进行身份验证时、这一点尤为重要。  

    此致、

    Marlyn

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

    您好 TI、

    抱歉、添加一点澄清。
    在 TI 的 F29 SDK 多核演示工程中、表明 CPU3 的 Link.cmd 中没有证书部分、但 CPU1 上有证书部分。
    在演示工程编译期间、CPU3 首先在 CPU1 之前编译、最后在 CPU1 的编译输出文件中生成证书。

    这种理解是否正确?

    ......

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

    尊敬的 ZW:

    是、对于 F29x SDK 中的多核工程、首先编译 CPU3 工程、然后编译 CPU1、还有一个联合证书

    可以按如下所示对 CPU1 和 CPU3 的编译后处理步骤进行修改、使每个步骤都使用 cert (projectName_cert.bin) 生成自己的 bin 文件。

    CPU1 工程

    删除预编译步骤:

    ${COM_TI_MCU_SDK_INSTALL_DIR}/tools/misc/$(UPDATECPUBINSIZE) ../cpuAppSec3.c $(CPU3APP_CERT_REL_PATH) 3
    

    更新编译后处理步骤:

    ${CG_TOOL_OBJCOPY} --remove-section=cert -O binary ${ProjName}.out ${ProjName}.bin
    $(PYTHON) ${COM_TI_MCU_SDK_INSTALL_DIR}/tools/boot/signing/mcu_rom_image_gen.py --image-bin ${ProjName}.bin --core C29 --swrv 1 --loadaddr 0x10001000 --sign-key ${COM_TI_MCU_SDK_INSTALL_DIR}/tools/boot/signing/mcu_gpkey.pem --out-image ${ProjName}_cert.bin --device f29h85x --boot FLASH --img_integ no 
    ${CG_TOOL_OBJCOPY} --update-section cert=C29-cert-pad.bin ${ProjName}.out ${ProjName}_cert.out 
    $(DELETE) -f ${ProjName}.out 
    $(RENAME) ${ProjName}_cert.out ${ProjName}.out
    

    CPU3 项目

    更新编译后处理步骤

    ${CG_TOOL_OBJCOPY} --remove-section=cert -O binary ${ProjName}.out ${ProjName}.bin
    $(PYTHON) ${COM_TI_MCU_SDK_INSTALL_DIR}/tools/boot/signing/mcu_rom_image_gen.py --image-bin ${ProjName}.bin --core C29 --swrv 1 --loadaddr 0x10401000 --sign-key ${COM_TI_MCU_SDK_INSTALL_DIR}/tools/boot/signing/mcu_gpkey.pem --out-image  ${ProjName}_cert.bin --device f29h85x --boot FLASH --img_integ no --fw_type CPU3 
    ${CG_TOOL_OBJCOPY} --update-section cert=C29-cert-pad.bin ${ProjName}.out ${ProjName}_cert.out 
    $(DELETE) -f ${ProjName}.out 
    $(RENAME) ${ProjName}_cert.out ${ProjName}.out
    

    我目前正在开发一款适用于 F29 器件的生产编程工具

    对于您正在开发的编程工具、它是否还支持安全编程? 还需要根据器件处于 FS 模式还是在 HS-SE 模式更改工程的编译后步骤。 对于 HS-SE、需要使用正确的客户信任密钥根对证书进行签名、并且需要为这两个工程打开映像完整性。

    [引述 userid=“119810" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1593734/f29h850tu-f29-certificate-handling

    根据文档 spradn0.pdf 和示例工程:

    C:\ti\f29h85x-sdk_1_01_00_00\examples\driverlib\single_core\flash\uart_flash_kernel

    [/报价]

    我们有一个更新的 SDK 版本 1.02、在该版本中、我们对 UART SBL 进行了显著更改。 您可以在此 SDK 中使用 SBL 吗? 为这个更新的版本提供支持会更容易。

    但是、在客户的图片中(他们正在使用 模式 2 )、则有大量数据超出证书中指定的范围。

    如果客户使用的是 MODE2、我假设您使用的是基于 RAM 的 UART SBL 正确吗? 基于闪存的 UART SBL 将仅支持 BANKMODE1/3。

    此致、

    Marlyn

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

    Marlyn 说:

    如果客户使用的是 MODE2、我假设您使用的是基于 RAM 的 UART SBL 正确吗? 基于闪存的 UART SBL 将仅支持 BANKMODE1/3。

    是的、我们将基于 RAM 的 UART SBL 用于模式 2。

    我们想澄清一点关于图像内容和证书覆盖范围。

    在客户的图像中、我们观察到有大量数据位于证书中定义的存储器范围之外。
    您能否告知、是否需要以特定方式处理证书范围以外的任何数据?

    出现此问题的原因是、根据我们引用的 SDK 示例、仅处理和验证证书中定义的存储器区域。

    请您作出澄清。

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

    您好 Lin、

    您能否告知是否需要以特定方式处理证书范围以外的任何数据?

    问题是否与安全编程有关? 如果您正在开发安全编程解决方案、或者只是开发非安全编程解决方案、我没有看到您的回复。 SBL 使用证书中提供的大小来了解映像的大小并对其进行相应编程。  证书是否具有映像完整性? 如果证书中的大小与映像大小本身不匹配、这将是导致问题的主要因素。 对于 HS-SE、需要进行完整性检查。

    仅处理和验证证书中定义的内存区域。

    您能否详细介绍一下您所说的“经过处理和验证的“? 是指 启用完整性检查的时间?

    此致、
    Marlyn

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

    是的、我目前使用的配置与 ZW Luan 相同、我怀疑是这样 映像完整性 在证书中启用。

    在他的工程中、证书仅涵盖截至的存储器范围 0x26000 然而,还有大量的数据位于以外 0x10027000

    我根据以下位置的示例创建和应用了证书:
    C:\ti\f29h85x-sdk_1_01_00_00\examples\driverlib\single_core\flash\uart_flash_kernel

    但是、这个示例仅对所涵盖的存储器区域进行编程和身份验证 颁发 而不是整个闪存。

    当我提到“处理和验证“时、我指的是 闪存编程过程和完整映像验证 而不仅仅是证书验证本身。

    请告诉我我的理解是否正确、或者是否有关于在启用图像完整性后执行全闪存映像编程和验证的任何推荐示例或指南。

    感谢您的支持。

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

    您好:

    C:\ti\f29h85x-sdk_1_01_00_00\examples\driverlib\single_core\flash\uart_flash_kernel

    我们不再支持此版本的示例。 请使用 1.02.01.00 版本的 F29 SDK 中的更新版本

    此外还有大量数据 0x10027000 .

    这是代码还是原始数据?

    如果要认证所有闪存、您将需要一个涵盖所有闪存的证书和映像。

    这可以通过使用链接器.cmd 文件中的 fill 命令来实现、例如:

    .text     :{}> FLASH_RP0、  palign (8)、fill=0x1234
    这将用 0x1234 填充存储器空洞、从而产生包含所有 CPU1 闪存的图像和证书。 您可以在此处阅读更多相关信息:  8.5.11.创建和填充孔洞—C29 Clang 编译器工具用户指南
    要在映像完整性中包括多余的数据、您需要在生成证书之前将数据合并到应用程序映像中。 这可以通过在应用程序链接器.cmd 文件中为它分配一个段、并在编译后处理步骤中使用 c29objcopy 工具来实现、例如:
    ${CG_TOOL_objcopy}--update-section my_data_section=data.bin ${ProjName}.out ${ProjName}.out

    此致、

    Alex