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.

[参考译文] MSP430FR5994:在特定存储器空间中存储链接器段的起始地址和结束地址

Guru**** 2391415 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1049302/msp430fr5994-storing-linker-section-start-and-end-addresses-in-specific-memory-space

器件型号:MSP430FR5994

您好!

我正在尝试将 MSP 应用中链接器存储器部分的特定起始地址和结束地址(或大小来代替结束地址)存储到 FRAM 中的共享存储器空间中 、以供自定义 BSL 使用。

例如、应用程序链接器文件的一个片段如下所示:

存储器

shared_headers:origin = 0x6000,length = 0x0100

部分

.text:{}> FRAM
.cinit:{}> FRAM
.const:{}> FRAM
.cio:{}>RAM
init_array:{}> FRAM
.text:_ISR:{}> FRAM

我想将.text 和.init_array (例如)的起始地址和结束地址(或大小)存储到 shared_headers 存储器空间中、 理想情况下、仅使用链接器、应用本身无需代码更改、因为 BSL 需要在应用程序启动前了解相关信息。

在浏览论坛后、我在文档或其他类似问题中找不到任何内容、并且需要建议。

谢谢、

Philip

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

    您好 Phillip、

    要找出这一点、最好的资源是 《MSP430汇编语言用户指南》中的第8.5节链接器命令文件。 我鼓励您阅读本节以获得进一步的帮助和指导。 话虽如此、要为您提供快速解答、您只需修改链接器文件的 SECTIONS 部分、即可告知其存储内容的位置。 现在、".text"表示将其放入 FRAM 中。 如果您将"FRAM"更改为您的客户内存分配、它将存储在那里。 您还可以利用运算符来利用多个存储器段。 您可以在更大内存 MSP430部件的链接器文件中看到这一点。  

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

    尊敬的 Jace:

    感谢您的回复、但这并不是我想要做的事情;  我不想更改段的位置(即.text 应保留在 FRAM 中)、我希望将.text 存储在 FRAM 中的起始地址和结束地址(或大小)、并将该地址/大小存储在 FRAM 的另一部分中。

    例如、使用此行:

    .text   :start (text_start)、end (text_end){}> FRAM

    编译和链接后的输出文件将创建 包含起始地址和结束地址的 text_start 和 text_end 变量。 我想再进一步、将这些地址存储到 FRAM 的特定部分(上一个示例中的 shared_headers)中。

    我知道我可以通过应用程序对这些变量执行 extern 来执行该操作、但我的目标是将其作为链接器专用、因为我需要 BSL 读取这些值(在应用程序更改以存储它们之前会运行)。

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

    您好 Philip、

    我在这里假设您使用的是应用端引导加载程序、即 MSPFRBOOT、因为这种信息共享超出了提供的 BSL。 我不确定如果您不使用 FRAM 创建自己的分区、是否可以尝试执行该操作。 例如、如果您将 FRAM 拆分为"FRAM"和"FRAM_SHARed"区域、则可以在编译时准确控制放入"FRAM_SHARed"区域的内容。 然后、您不需要显示变量或函数所在位置的开始/停止的存储器部分、只需要指向该变量或函数的指针。  

    只是一个想法。

    我在上面提到的文档以及 MSPFRBOOT 文档应该为您提供继续研究您的选项所需的内容、但这一主题超出了我们目前可以为您提供的帮助。  

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

    您好 Jace、

    谢谢、我将继续查看该文档、并考虑您的建议。 如果我有任何更新/解决方案、我一定会更新此主题。