您好!
在读取数据表时、代码(程序)空间开头的存储器地址为0x8000至0xFFFF。 当我在 code composer 中查看我的汇编代码时、它实际上从0x882A 开始、如随附的屏幕截图所示。 我想这是由链接器定义的吗?
我之所以关注这一点、是因为我需要通过 BSL 向 MSP 发送更新的映像/位文件、并且我需要弄清楚确切的放置位置。
问题
1.我可以使用调试器中显示的地址0x882A、MSP 将会运行吗?
2.为什么程序代码不在0x8000上?
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.
您好!
在读取数据表时、代码(程序)空间开头的存储器地址为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。 这是否与您描述的内容大致一样?