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.

[参考译文] TM4C1294KCPDT:"armhex"输出或"lm 闪存编程器"正在发送错误的二进制文件、在某一点处它似乎是内存对齐不良到器件闪存中。

Guru**** 2527740 points
Other Parts Discussed in Thread: UNIFLASH, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1279215/tm4c1294kcpdt-armhex-output-or-lm-flash-programmer-are-sending-a-bad-binary-it-appears-as-a-bad-memory-alignment-into-device-flash-at-some-point

器件型号:TM4C1294KCPDT
主题中讨论的其他器件:UNIFLASHEK-TM4C1294XL

如何解决此问题? 需要帮助!

我们可以看到它的起始价格为$C$L1、第一个是在 LM Flasher 完成 后、它在复位(故障 ISR)后不工作。

这个是在我使用 XDS110探针对其进行编程之后、它 在复位后工作。

我在 armhex 中丢失了一个参数、或者它是这种类型的 MCU 的错误?

我尝试了许多方法(fill、binary、memwidth=32)、尚未修复。

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

    您好!

     我对您的问题不是很清楚。 您能回答几个问题吗、让我与您的发现处于同一页面。

     -这里你正在显示$C$L1在内存浏览器窗口。 这是一个调试符号。 您尝试加载的程序映像格式是什么? 它是.hex、.bin 还是.out? 如果您加载.hex 或.bin 文件、则不会看到调试符号、除非您稍后执行"加载符号"。 只有.out 包含调试符号、而不是.bin 或.hex。 您能解释一下吗?

     -您 的意思是说您使用 LM Flash 程序员(下载工具)和 ICDI ( 调试探针)来加载 hex 文件吗?  

     -您说过当您在 CCS 内存浏览器中查看时、使用 LM 闪存编程器加载 hex 文件会创建错误的程序映像吗? 这就是 你的发现吗?

     -您是否曾尝试使用 Uniflash 加载相同的 hex 文件? Uniflash 支持 ICDI 和 XDS110调试探针以及多种其他探针。 请参阅下面的一个加载.hex 文件的示例。 假设您尝试加载 hex 文件。 使用 Uniflash 时、可以重复同样的问题吗? 原因是 LM Flash 程序员只能加载.bin 文件。 如果要加载 hex 文件、可以使用 CCS 或 Uniflash。 Uniflash 是一款独立的闪存编程器工具、支持各种调试探针。 LM 闪存编程器仅支持 ICDI、只能成功加载.bin 文件。  

     - LM Flash 程序员不支持 XDS110 不过、您说过使用 XDS110是可行的。 这意味着您将使用不同的闪存编程器、而不是 LM 闪存编程器。 我假设您使用的是 CCS 或 Uniflash。 是这样吗?

     -您可以提供完整的 armhex 命令吗?

      

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

    您好!

    首先、使用探针 XDS110以及使用 CCS 或 UniFlash 进行编程效果很好。 使用.out 根本没有问题。

    问题在于将 LM 闪存编程器与来自"TivaWare_C_Series-2.2.0.295"的引导加载程序配合使用。

    在图中、我确实使用 XDS110加载了.out、这是生成符号的方式。 然后、我使用 LM Flash 程序员将 bin 下载到闪存中。 我仅使用符号重新启动探头。 这就是我看到.out 和.bin 之间存在差异的方法。 我确保.bin 和.out 都不在中间更新。

    我使用 LM 闪存编程器(构建1613)的是.bin (由 armhex 生成)而不是 hex 文件。 十六进制文件似乎不受支持。 我尝试过,但 acsii 的东西已经写入闪存! 我一直在为 XDS110使用.out。

    是的、但我认为问题在于.bin 本身。 看起来像是在16位变量$C1$L1之后出现的填充问题。

    armhex"--linkerfill --memwidth=32 --romwidth=32 --diag_wrap=off --binary -o "Test.bin""Test.out"   

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

    您好!

    首先、使用探针 XDS110以及使用 CCS 或 UniFlash 进行编程效果很好。 使用.out 根本没有问题。

    [/报价]

    这预计会起作用。 这里没问题。

    问题在于将 LM 闪存编程器与来自"TivaWare_C_Series-2.2.0.295"的引导加载程序配合使用。

    在图中、我确实使用 XDS110加载了.out、这是生成符号的方式。 然后、我使用 LM Flash 程序员将 bin 下载到闪存中。 我仅使用符号重新启动探头。 这就是我看到.out 和.bin 之间存在差异的方法。 我确保.bin 和.out 都不在它们之间进行更新

    [/报价]

     基本上、您认为.bin 文件生成的闪存映像与.out 文件不同、对吗?  

     您能否将 TivaWare hello 示例导入 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c1294xl\hello 中。 查看用于生成.bin 文件的 CCS 编译步骤。 请参见下方的。   您可以看到、它生成.bin 文件的方式与您的文件的方式大不相同。 我将建议您使用相同的步骤来生成您的.bin 文件。 试一下、它是否解决了问题?

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

    如果您构建 hello 工程、则会在 POST 过程步骤中看到以下命令。 我使用的是 CCS10。  

    "C:/ti/ccs1011/ccs/utils/tiobj2bin/tiobj2bin " hello.out""hello.bin""C:/ti/ccs1011/ccs/tools/compiler/ti_cgt-arm_18.12.0.LTS/bin/armofd " C:/ti/ccs1011/ccs/tools/compiler/ti_cgt-arm_18.12.0.LTS/bin/armhex "C:/ti/ccs1011/ccs/utils/tiobj2bin/mkhex4bin "

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

    这就是我想要的。 我不知道该从哪里找到它。

    它现在运行良好、闪存现在与.out 相同。

    可能需要在 LM 闪存编程器的程序选项卡中添加一些信息来帮助用户正确操作或查找示例。

    谢谢。