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.

[参考译文] MSP430FR2476:帮助查找存储器中程序的开始

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/863635/msp430fr2476-help-finding-beginning-of-program-in-memory

器件型号:MSP430FR2476

您好!

在读取数据表时、代码(程序)空间开头的存储器地址为0x8000至0xFFFF。  当我在 code composer 中查看我的汇编代码时、它实际上从0x882A 开始、如随附的屏幕截图所示。  我想这是由链接器定义的吗?

我之所以关注这一点、是因为我需要通过 BSL 向 MSP 发送更新的映像/位文件、并且我需要弄清楚确切的放置位置。  

问题

1.我可以使用调试器中显示的地址0x882A、MSP 将会运行吗?

2.为什么程序代码不在0x8000上?

 

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

    1) 1)您的程序入口点实际上不是 main()、而是一个名为与 c_int00类似的库函数。 该函数进行 C 初始化,然后调用 main()。

    2) 2)链接器将内容或多或少地放置在所需的位置(在其指令中)。 c_int00甚至可能不在代码内存的开头。

    当我使用 BSL 时、我使用"Hex Utility"来创建 TI-TXT 文件、PC 程序知道如何使用该文件。 十六进制实用程序确定要加载的段。 我最近没有这样做、所以事情可能已经改变了。 以使 TI-TXT 文件使用

    然后,“生成设置”->“生成”->“十六进制实用程序”->“启用十六进制实用程序”[复选框]

    生成设置->生成->十六进制实用程序->输出格式->输出格式->输出 TI-TXT

    。 .txt 文件将出现在 Debug 目录中。

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

    非常感谢 Bruce、他的帖子非常有帮助!

    我真的很不满意、我认为这是在 BSL 数据 Rx 命令上。  一旦我启动 BSL、另一个芯片将必须使用 BSL 命令发送映像。  从我在 MSP430FR2xx BSL 用户指南中看到的内容中、您发送一条命令、告诉 BSL 在存储器中的哪个位置放置传入的数据。  因此、我假设我需要知道位流的开头和位置。

    您是否暗示有一个实用程序可以构建 包含 BSL 命令的映像、这样您只需在目标中启动 BSL 并加载该位流、而不必担心管理各个命令?

    如果不是、策略是否只是模仿链接器?

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

    TI-TXT 文件包含一系列片段、每个片段前面都有一个"at-address"行[论坛不允许我键入 at-sign?]。 它类似于 S 记录、但我发现它更易于阅读。 我鼓励您生成一个并查看它。 十六进制实用程序也可以生成其他格式。

    BSL 接受一系列片段(这里是一个地址、现在这里是要放置的数据)。

    我使用了一个名为 BSLDEMO2的程序("已弃用"至今已有10年)。 可能有更现代的方法、因此请四处看看。

    第二个"加载器"MCU 从何处获取它发送的加载映像? 这可能是您希望加载映像存储方式的关键。

    链接器会生成所需的字节、还会生成一组其他结构/修饰。 十六进制实用程序仅从链接器构造的文件中提取所需的字节。

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

    噢、很酷。  

    我有一个软件应用程序、用于将位流发送到主处理器。  当需要更新时、主处理器将通过 I2C 将该位流转发到该小 MCU。  这就是软件->主处理器-> MSP430FR MCU。   

    这很有帮助。  我将查看该文件类型。  听起来您会获得包含数据块及其关联地址的数据块、因此我只需将其封装到 BSL 命令中、然后将内容转发到 MSP430FR MCU。  这是否与您描述的内容大致一样?