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.

[参考译文] TMS320F28P650DH:加载到闪存后生成的.hex 和.bin 文件不同

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1434496/tms320f28p650dh-the-generated-hex-and-bin-files-are-different-after-being-loaded-to-flash

器件型号:TMS320F28P650DH
主题中讨论的其他器件:UNIFLASHC2000WARESysConfig

工具与软件:

尊敬的 Champs:

我使用 C:\ti\c2000\C2000Ware_5_03_00_00\driverlib\f28p65x\examples\c28x\led\led_ex1_blinky.c 以及 CCS12.8.1和 Uniflash 8.7.0。

我使用 CCS 和 Uniflash 加载.out 文件时、读取的存储器空间是相同的。

但当我加载.bin 文件时、存储器数据是不同的、 并且这里的数据小于0xFF

我的十六进制实用程序设置如下所示、我尝试将 memwidth 和 romwidth 修改为8、结果是相同的

我查看从 SysConfig 生成的.cmd、我不确定这是否因为 codestart 上没有 align (8)。

您能帮助检查一下吗? 谢谢!

Julia

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

    尊敬的 Julia:

    请留出另一天时间进行审核。 谢谢!

    此致、

    Allison

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

    尊敬的  Matt:

    我可以使用此 post-build 方法解决此问题。

    此问题将来会在十六进制实用程序上得到解决吗? 由于我已经看过其他线程、我们建议使用十六进制实用程序 来生成 bin 文件。

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

    尊敬的 Julia:

    我很高兴听到这种情况解决了问题!

    [报价 userid="486218" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1434496/tms320f28p650dh-the-generated-hex-and-bin-files-are-different-after-being-loaded-to-flash "]

    我的十六进制实用程序设置如下所示、我尝试将 memwidth 和 romwidth 修改为8、结果是相同的

    [报价]

    这就是您在十六进制实用程序中配置的所有内容吗? 您是否配置了任何其他标志/参数?  

    此致!

    Matt

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

    尊敬的 Matt:

    这就是您在 Hex 实用程序中配置的所有内容吗? 您是否配置了任何其他标志/参数?  [报价]

    是的、这就是我的全部配置。

    谢谢!

    Julia

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

    尊敬的 Julia:

    您是否尝试过使用二进制输出格式(--binary)? 这样、 ROMS 指令 是必需的、因为二进制选项会忽略段之间的空洞。 如果您使用 ROMS 指令指定系统存储器范围并使用--image 选项、则可以得到- binary 来填充空洞(例如使用0xFF)。 实际上、这就是实用程序 tiobj2bin 自动为您执行的操作。  

    下面是我如何使它使用-- binary 方法:

    1.   按如下所示配置十六进制实用程序的常规选项。   
    2. 在   Output Format Options (输出格式选项)菜单中将输出格式设置为 Binary (--binary)。
    3. 创建 ROMS 指令、并将其移至相关工程构建配置文件夹(CPU1_FLASH 等)。  下面是我的 ROMS 指令示例。  
      1. ROMS 
        {
         flash : org = 0x100000, len = 0x10000
        }
      2. 重要事项:  请注意、对于使用16位 ROM 宽度的格式、我将 ROMS 指令的地址和长度加倍(从0x80000和0x8000)。 由于 二进制格式仅支持8位物理存储器宽度和8位 ROM 宽度、因此当从16位格式变为8位格式时、ROMS 指令需要使原点和长度规格加倍。 请参阅   TMS320C28x 汇编语言工具 v22.6.0.LTS 用户指南的第12.15.6节 、了解示例。  
    4. 在 命令行 模式中指定 ROMS 指令文件名。  

    总之、这是用于生成 bin 输出的设置: --fill=0xFF --image --memwidth=16 --romwidth=16 --binary

    此致!

    Matt