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.

[参考译文] TMS320F28377S:使用 UniFlash 加载 ELF 文件时出错

Guru**** 2446470 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/970961/tms320f28377s-error-loading-elf-file-with-uniflash

器件型号:TMS320F28377S
主题中讨论的其他器件:UNIFLASH

在尝试加载 ELF 文件时、UniFlash 会出现文件类型错误(下面是完整的控制台输出)。 加载旧 COFF 文件时没有问题、但我正在尝试更新到 EABI。

使用 UNIX 文件实用程序检查文件会输出以下内容:

$文件 app.elf
app.elf:elf 32位 LSB 可执行文件、TI TMS320C2000 DSP 系列、版本1 (SYSV)、静态链接、带有 debug_info、未被剥离 

相关工具版本:UniFlash 版本3.4.1、CGT 版本20.2.3.LTS

UniFlash 控制台输出:

[09:14:28]开始启动会话操作。
[09:14:33]操作启动会话返回。
[09:14:33]已从:C:\Users\加载目标配置 \config.ccxml
[09:14:37]在目标内核上的多个程序上启动操作...
[09:14:39] C28xx_CPU1:GEL 输出:
内存映射初始化完成

[09:14:40]正在加载程序:C:\Users\ \app.elf
[09:14:40]错误>> C28xx_CPU1:GEL:加载文件时遇到问题:C:\Users\ \app.elf 无法确定文件的目标类型

[09:14:40]加载文件时遇到问题:C:\Users\ \app.elf
无法确定文件
[09:14:40]程序操作的目标类型。 

UniFlash 3.4.1的发行说明声称支持 TI COFF 和 TI ELF、因此我不确定问题出在这里。

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

    Jeremie、

    UniFlash 3.4.1非常旧、将支持基于 Arm 的器件的 ELF。  但是、该版本是在 ELF 是 C2000支持的输出之前完成的。  您将需要使用较新版本的 UniFlash。

    https://www.ti.com/tool/UNIFLASH

    此致、

    John

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

    John、

    我仍在使用 UniFlash 3.4的原因是、较新版本似乎不再支持在单个 JTAG 链上对多个目标器件进行编程。 我已经尝试过 v6、但无法使用我的*。ccxml 文件对我的目标进行编程。

    可能我在正确配置 CCXML 文件以便与 UniFlash v6配合使用时缺少一些内容?

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

    Jeremie、

    可以在较新的 UniFlash 版本中执行此操作、但明显更复杂。  我将与其他人联系以提供更多详细信息。

    此致、

    John

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

    [引用用户="Jeremie Snyder"]

    我仍在使用 UniFlash 3.4的原因是、较新版本似乎不再支持在单个 JTAG 链上对多个目标器件进行编程。 我已经尝试过 v6、但无法使用我的*。ccxml 文件对我的目标进行编程。

    可能我在正确配置 CCXML 文件以便与 UniFlash v6配合使用时缺少一些内容?

    [/报价]

    正确、这是 UniFlash 当前版本的限制。 有一个未决请求可解决此问题。 此请求的跟踪 ID 为: https://sir.ext.ti.com/jira/browse/EXT_EP-9784

    同时、可以使用 John 在以下主题中提到的权变措施:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/800192

    谢谢

    Ki

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

    我按照说明创建了多个 CCXML 配置、每个配置中仅启用了一个器件、但 UniFlash GUI 似乎只是损坏了。 "加载映像"按钮不起作用。 它最初会尝试连接到调试探针、但不会闪烁。 之后、该按钮不执行任何操作。 即使打开了详细模式,控制台中也不会出现任何信息。 "Verify Image"按钮的功能相同、也不会读取目标器件存储器。 自 v3.4版起、该程序的功能可能会严重倒退、这让我感到很损失。

    幸运的是、我至少能够使独立命令行工具正常工作、并使用 dlite 工具成功编程。

    遗憾的是、电源复位后、我的所有器件现在都无法启动。

    UniFlash/dlite 是否更改 DCSM 引导设置或其他内容? 我依赖通过默认 GPIO 引导选择引脚设置的默认引导获取/闪存模式。

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

    如果您使用 CCS IDE、是否能够使用带旁路的新 CCXML 文件成功刷写每个器件?  

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

    是的、我可以通过 CCS 中的 CCXML 文件进行编程和调试。 不过、结果与 dlite 相同、程序在编程后运行良好、但在复位后无法启动。

    我想知道、在从 COFF 迁移到 EABI 时、我是否错过了一些内容、现在出现了一个程序未加载到正确位置的问题。 GEL 脚本能否屏蔽在程序加载期间仅在目标复位时出现的问题?

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

    我似乎已经解决了启动问题。

    正如我在上面所怀疑的、EABI 与 COFF 之间的行为发生了变化。 TI 提供的用于定义所有外设寄存器(F2837xS_Headers_nonBIOS.cmd)的链接器命令文件不会设置 type=NOINIT。 为 EABI 编译时 、_c_int00零初始化所有这些寄存器。 这会对 WdRegs.WDCR.bit.WDCHK 执行无效写入、并立即触发看门狗。

    GEL init 脚本在编程前禁用看门狗,但我的应用程序代码一旦分支到 main(),就会禁用看门狗,因此在初始编程时会隐藏此行为。

    在分支到_c_int00之前禁用看门狗会导致忽略对 WDCHK 的写入并修复该问题。 在这些寄存器的链接器命令文件中设置 type=NOINIT 可能也会解决该问题。