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.

[参考译文] TMS320F280039:C2000十六进制实用程序:具有--cmac 安全启动的二进制文件输出

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1331427/tms320f280039-c2000-hex-utility-binary-file-output-with---cmac-secure-boot

器件型号:TMS320F280039

您好!

我正在尝试在 TMS320F280039上启用--cmac 安全启动功能。  我使用的是 CGT 22.6.1 LTS。

很长时间以来、我们一直使用十六进制实用程序将.out 文件转换为可用于 OTA 更新的.bin 文件。

当我尝试在二进制选项上启用-- cmac 选项时出现以下问题。

error: CMAC tag, cmac_sb_1, region from start 0x80000 to end 0x82000 is not within allocated region from 0x100000 to 0x10c000

这是十六进制 cmd 文件。

/* .stack was throwing an warning because it had a fill on it so exclude it here */
--exclude=.stack
--memwidth=16
--romwidth=16
--image
--binary
--cmac=/Users/colinparker/sandbox/tahoe-bootloader/project/platforms/f28003x/cmac_key.txt

ROMS
{
	/*origin and length values are 8 bit.  Divide by 2 to match values in linker */
	FLASH: origin = 0x100000, length = 0xC000, romwidth = 8, fill = 0xFFFF
}

似乎-cmac 选项无法处理二进制输出的 ROMS 指令。  如果我删除-二进制文件并将 ROMS 部分更新为使用16位而不是8位、则一切正常。

您可以帮助我解决问题,以便我可以使用--binary 选项吗?

谢谢。

科林

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

    您好、Colin、

    似乎-cmac 选项无法处理二进制输出的 ROMS 指令。  如果我删除-二进制文件并将 ROMS 部分更新为使用16位而不是8位、则一切正常。

    您可以帮助我解决问题,以便我可以使用--binary 选项吗?

    [/报价]

    一种解决方案是在 ROMS 指令中添加 CMAC 所在的另一个段、而不是 将整个存储器段处理相同。 我不熟悉- binary 选项或十六进制实用程序、但如果它只是一个输出格式选项、并且您只想看到 CMAC 密钥、那么最好将输出限制在那个内存范围内。

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

    感谢

    很遗憾、您的建议并不完全符合我的目标。  我需要将整个图像转换为二进制格式。

    我见过您在工具集的这一部分回答问题。  是否有办法将 hex2000工具中的英特尔十六进制输出转换为等效形式,就像我们使用了`--二进制`选项一样?  如果我们想使用该工具来-- CMAC 一个 C2000映像,那么我们似乎无法生成--二进制输出。

    如果我试图把 hex2000输出放入工具,如`HEX2BIN.py`它抱怨文件是格式错误的。  (16位地址)

    `错误:错误的十六进制文件:十六进制文件在第3行的地址0x80010处具有数据重叠`

    有什么建议吗?  我需要一个二进制文件、因为这是我们 OTA 基础设施期望的格式。

    科林

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

    您好、Colin、

    我会让 George 回答、如果他有机会、我还会询问整个团队、看看是否有人更熟悉 HEX 实用工具来支持这项工作。

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

    我不熟悉 hex2bin.py 。  但我有一个可能有帮助的建议。  当使用 Hex2000 若要创建 Intel hex 文件、请使用选项 -字节 。  有关详细信息、请在 C28x 汇编工具手册中进行搜索

    谢谢。此致、

    -乔治

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

    谢谢 George,我的问题是,我认为我们不能使用 c2000hex 实用程序中的--byte 选项和--cmac 选项。  或者情况不是这样。

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

    尊敬的 Colin:

    您以前是否曾尝试过使用--byte 选项? 从你最初的帖子我的理解是,你不能使用--二进制选项与 CMAC。

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

    啊、感谢您指出这一点!  我误读了答案!

    `字节`选项会更新十六进制输出、以便之后我可以使用另一个工具将其转换为二进制输出!

    那么、对于后面跟着的人:

    1. 构建传统的`.out`文件
    2. 使用 hex2000为映像签名,并使用`-cmac`嵌入哈希
    3. 使用 hex2000以`--image`、`--byte`、`--memwidth=16 μ s、`--romwidth=16 μ s 创建 Intel hex 输出文件``
    4. 使用诸如`HEX2BIN`之类的其他工具将生成的 Intel hex 输出转换为二进制数
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    使用 hex2000签名图像并将散列嵌入`--cmac`

    抱歉、只是为了澄清一下您是否为第2步和第3步都运行了 hex2000? 还是您是单独使用它们、并以某种方式将它们组合在一起? 我对十六进制实用工具不是很熟悉、所以我有兴趣理解这一点。

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

    步骤2和3作为对 hex2000的单个调用来实现。  我将它们分开、因为第二步  在时间上发生在步骤3之前。  即、在将散列转换为最终输出文件之前、必须将其放入映像中。

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

    好的、这是有道理的。 感谢您的澄清!