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:将.bin 文件刷写到目标中会使程序无法运行

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1276555/tms320f28335-flashing-a-bin-file-to-the-target-makes-program-not-work

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

大家好!

使用 CCS v12.2.0编写我们的程序。 配置正在生成.out 文件。 当被 CCS 刷写到目标并使用 Uniflash 时、程序工作正常。

由于我想要计算.bin 文件的 CRC、因此我启用了十六进制实用程序并选择.bin 作为输出格式。 现在、.obj 和.bin 文件都在生成后生成。

所需的链接器设置:

MEMORY
{
PAGE 0:
   FLASHHG     : origin = 0x300000, length = 0x010000     /* on-chip FLASH */
   FLASHF      : origin = 0x310000, length = 0x008000     /* on-chip FLASH */
   FLASHA      : origin = 0x318000, length = 0x027F7E     /* on-chip FLASH */
   FLASHACRC   : origin = 0x33FF7E, length = 0x000002     /* on-chip FLASH */
   CSM_RSVD    : origin = 0x33FF80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x33FFF6, length = 0x000002     /* Part of FLASHA.  Used for "boot to Flash" bootloader mode. */
   CSM_PWL     : origin = 0x33FFF8, length = 0x000008
}

SECTIONS
{
    GROUP : > FLASHA
    {
      .econst
      .cinit
      .text
    }
}

构建后、.map 文件会确认设置、而且我可以看到 econst、cinit 和文本段的地址连续放置在 FLASHA 中。

然后、我使用 Uniflash 刷写目标、而我们的程序无法正常工作。 我从 FLASHA 的起始地址导出了存储器内容(.bin 文件中的字节数)。 将其与.bin 文件的内容进行比较、它们是相同的。 我还在刷写.out 文件后导出了相同的存储器内容、而 FLASHA 也是相同的。

我还尝试使用 Uniflash 刷写.bin 文件并指定加载地址、但程序仍然无法正常工作。  

你有什么想法,为什么这不起作用,或如果我做了一些错误的事情?

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

    您好!  

    代码执行是否滞留在任何特定的地址?  是否在加载.bin 文件后发出复位。

    此外、您是否正在为文件中的代码设置任何入口点?  如果是这样、您将必须将程序计数器更新为应用起点地址。  

    此致

    西达尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码执行是否滞留在任何特定地址?

    我不知道它卡在哪里。 当我刷写.out 文件时、我可以看到来自的 CAN 总线消息。 我使用.bin 文件看不到它们。

    您加载.bin 文件后是否正在发出重置命令。

    到目前为止、我刷入的任何.out 代码都将在不复位的情况下开始工作(发送 CAN 消息)。 我在刷写.bin 文件后对开发板进行下电上电、仍然没有什么希望。

    此外,您是否为文件中的代码设置了任何入口点?  [/报价]

    codestart 段被设定为开始内存块。 我不知道如何将 PC 设置为应用起点地址?除了 TMS320C28x 汇编语言工具 v22.6.0.LTS 文档之外是否有任何资源?

    BEGIN       : origin = 0x33FFF6, length = 0x000002
    
    codestart           : > BEGIN       PAGE = 0

    谢谢你。

    米罗

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

    Miro,  

    您可以使用 CCS 调试代码。 加载.bin 文件后、您可以连接到目标并检查 PC 值。

    此外、文件中是否有需要初始化的全局变量的任何 RAM 段?

    此致

    西达尔特