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.
您好!
客户使用 CCS 10.3.1.00003和 CTG 20.2.5。
客户在使用具有以下配置的 HEX2000工具生成引导加载程序以生成 S 记录文件时遇到一些问题:
1。 生成 S-Record 文件
在当前状态下,可以将 S-Record 文件写入闪存,但当跳转到应用程序时,它会跳转到非法的 ISR()。 为了确定可能的差异、我们创建并比较了2个内存转储文件。 从原始 blinky 工程中删除一次、并在刷写 S-Record 文件后从引导加载程序中删除一次。 存储器转储可设置为多种设置、包括8位和16位。 8位显示屏缺少高字节
原始 Blinky 16位存储器
原始 Blinky 8位存储器
8位存储器转储比较相同、但16位存储器转储比较不同。 但是、S-Record 文件仅返回8位内存转储的数据。
是否需要使用其他任何 HEX2000选项/设置?
我无法测试此解决方案以确定它是否正常工作。 但我有足够的信心让你尝试一下。
添加十六进制实用程序选项--romwidth=16。
要了解原因、 请在 C28x 汇编工具手册中搜索 标题 为将数据分区到输出文件的子章节。 了解--romwidth 的影响,对于 Motorola 输出格式,默认值为--romwidth=8。 因为--memwidth=16和--romwidth=8,这意味着有两个输出文件,一个用于偶数字节,另一个用于奇数字节。 我怀疑您的系统是否正确。
请告诉我此建议是否解决了问题。
谢谢、此致、
乔治
您好!
客户在生成 S-Record 文件时仍有问题。 如果她设置-romwidth=8、她将获得两个 S-Record 文件、如您所述。 但是、终端客户的 PC 固件仅允许一个 S-Record 文件。 她尝试使用 srec_cat srecord.sourceforge.net 工具将这两个文件合并为一个文件、但-unsplit 选项添加了这两个文件的地址。
如果她生成一个 S-Record 文件、且-romwidth=16、则该文件的内容似乎不正常。 她的客户的固件和 srec_cat 或 srec_info 都报告错误。
她使用 driver_support 示例中的 blinky 项目来测试构建。 您是否知道将两个文件合并为一个文件的不同方法?
此致、Holger
我不熟悉实用程序 srec_info。 我怀疑它假定存储器是8位字节可寻址的。 使用--Motorola=3时,C28x CPU 或 hex2000生成的记录的地址部分不是这种情况。 在这种情况下、每个地址对应一个16位宽字。 srec_info 中是否有可配置为解决此差异的设置?
谢谢、此致、
乔治
您好、George、
是的、此工具的选项中有设置(srec_cat、srec_info、srec_cmp)。 她在"srec_cat -unsplit"中使用此选项、通过 hex2000 -romwidth=8 S-Record 文件从两个文件中生成一个。 该工具会生成一个 S-Record 文件、其中正确汇编了16位字、但遗憾的是、这两个文件的地址都添加到了一个地址中。
(带有 srec_cat unsplit 的 S-Record 文件(添加了地址但正确汇编了16位字))
她以最不同的态度尝试,但不幸的是没有成功。 她猜、hex2000 --romwidth=16生成的 S-Record 文件的行长度会导致问题。 这是奇数。
(具有 hex2000的 S-Record 文件--romwidth=16)
行长度为直线后、srec_info 将不再返回任何错误消息、她的客户端工具也会读取该文件。
但遗憾的是、她没有找到将此 S-Record 文件转换为不同行长度的方法。
SRec_cat 原则上可以执行此操作、但它会给她一条错误消息、使用 hex2000工具、她找不到设置行长度的方法。
此致、Holger
我必须承认、我对客户想要做什么感到困惑。 我还没有看到任何东西表明 hex2000所做的事情与它的工作记录方式不同。
未指定 hex2000输出的许多详细信息。 其中一个细节是一行上的数据量。 事实证明、大多数线路具有15个16位字(30 8位字节)的数据。 在一条 S3 Motorola 格式记录中、字节计数是线路上8位字节的数量、不计算 S3和字节计数本身。 在典型的线路上有...
这总计为35个字节、或十进制为0x23。 这就是为什么有许多线路以 S323开头。 我不明白为什么0x23字节会导致问题、但显然确实如此。
[引用 userid="8038" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1016057/tms320f28075-hex2000-16bit-generation/3758905 #3758905"]使用 hex2000工具时,她找不到设置行长度的方法。遗憾的是、没有方法可以控制一条输出线路中的数据量。
如何说明 S3记录中的地址对应于16位字的位置、而不是8位字节?
以下是一个完全不同的建议。 我认为 srec_info 或其他相关工具之一可以读取二进制文件并将其转换为 Motorola 格式的十六进制文件。 如果正确、请使用带有--binary 选项的 hex2000创建二进制文件、然后将其转换为 Motorola hex 文件。 然后、您可以根据需要使用 srec_info 来格式化地址、字节计数、行长度等。
谢谢、此致、
乔治