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.

[参考译文] 编译器/TMS320F28335:使用 hex2000将.out 转换为.bin 时、会错过一个代码字(0xFFFF)

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/603129/compiler-tms320f28335-one-word-of-code-0xffff-would-be-missed-using-hex2000-to-convert-out-to-bin

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WARE

工具/软件:TI C/C++编译器

您好、香榭丽舍

我的客户正在设计 F28335 UART 引导加载程序。 当他们将.out 转换为.bin 文件时、他们发现使用 hex2000时会错过一个代码字、其内容为0xFFFF。 它们的引导加载程序代码位于 FlashA 中、应用程序代码位于 FlashC 中。

(1)他们使用 AppCode_COFF2BIN_28335.bat 转换代码、但错过了代码;(2)他们使用最新版本更新了 hex2000.exe、仍然错过了代码;(3)他们使用 CCS 编译后处理步骤、但仍然错过了代码。 请按以下方式查找脚本文件和.out。

e2e.ti.com/.../7356.files.zip

我们发现在.out 到.s2文件期间缺少0xFFFF。

在.out 文件中、存在0xFFFF。  

在.s2文件中、缺少0xFFFF。

您是否愿意帮助检查根本原因以及解决方法?

谢谢。

BR、

年轻

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、香榭丽舍
    是否有更新?

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

    S2文件不会丢失任何0xFFFF。  虽然.bin 文件可能缺少一个0xFFFF 字、但这不是因为.S2文件中存在任何错误、而是其他问题。

    通过与反汇编输出进行比较、可以看到.S2文件是正确的。  使用反汇编器 dis2000来反汇编文件。

    S2文件在关键行上显示了这一点...

    S21232F42C7700FF690006190156C33FFFF00067F
    S22232F434CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032CE920032 

    第1行是 ramfuncs 段的末尾。  第2行是.econst 段的开头。  您可以通过查看地址来解决该问题。  第1行的地址为0x32f42c、第2行的地址为0x32f434。  要了解如何解码这些行、请参阅 C2000汇编工具手册中的"Motorola Exorciser 对象格式"一节。  第一个比较是反汇编输出中 ramfuncs 的末尾...

    00008384 7700 || NOP
    00008385 ff69 SPM #0
    00008386 0006 LRETR
    00008387 _DSP28x_usDelay:
    00008387 1901子 B ACC、#1
    00008388 56c3 BF -1、GEQ
    00008389 FFFF
    0000838A 0006 LRETR 

    第二列是操作码。  请注意这是如何与.S2文件第1行中的数据部分匹配的。  第二个比较是.econst...的开头。

    数据段.econst (小端字节序)、0x32F434
    0032f434处的0x13C 字 _PieVectTableInit:
    0032f434 ce92 .word 0xce92
    0032f435 0032 .word 0x0032
    0032f436 ce92 .word 0xce92
    0032f437 0032 .word 0x0032
    0032f438 ce92 .word 0x92
    0032f439 0032 .word 0x0032
    0032f43a ce92 0xf32 .word
    0xce92 0xf4332 .word 0xce32 0032 0032 0032 0032 .word 0xcce32 0032 0032 0032 .word 0xcce32 0032 0032 0032 0032 .word 0xce92 .word 0xce32
    
    

    请注意第二列如何与.S2文件中第2行的数据部分匹配。  

    因此、我认为.S2文件是正确的。  生成.bin 文件的完整批处理文件具有以下命令...

    hex2000.exe AppCode_hex_28335.cmd CRH6_BC.out
    
    FileIOShell.exe -i AppCode.S2 -o AppCode.bin
    copy AppCode.S2 CRH6_BC.S2
    copy AppCode.bin CRH6_BC.bin
    del AppCode.S2
    del AppCode.bin
    del AppCode_hex.map 

    似乎.bin 文件是由命令 FileIOShell.exe 生成的。  此命令可能会出现问题。  FileIOShell.exe 是我无法识别的命令、因此我无法为您提供帮助。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    乔治
    FileIOShell.exe 可从本应用手册 www.ti.com/.../spraaq2.pdf 下载

    BR、
    年轻
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有关 C2000Ware 中现已推出的最新串行闪存编程解决方案、请参阅 www.ti.com/lit/sprabv4。

    SAL