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.

[参考译文] 编译器/MSP432P401R:是否在链接图像的*末尾*放置变量或符号?

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/955082/compiler-msp432p401r-placing-a-variable-or-symbol-at-the-end-of-linked-image

我想在  所有使用的存储器的末尾放置一个特定的数据项(甚至只是一个链接器符号就足够了)。 使用案例在某种程度上面向开发/调试、但需要通用/自动化解决方案、而不是从 IDE 手动复制整个尺寸。

通过 spnu118y.pdf 的第8.7.2节、我在旧的常见问题解答"如何让链接器放置一段代码或数据、以便它先于所有其他代码或数据?"中找到了一个条目 (https://processors.wiki.ti.com/index.php/Code_Generation_Tools_FAQ#Q:_How_can_I_get_the_linker_to_place_a_piece_of_code_or_data_so_that_it_comes_before_all_the_rest.3F)

不清楚的是如何做到这一点、以便"一段代码或一段数据" 会在 剩下的全部之后出现、因为放置算法不仅处理手动配置的段、还处理大量隐式/自动放置。 是否有一种简单的方法来控制最后放置的项目?

基本上、我只需要一个指向固件映像"已使用"部分最后一个字节/字的指针。 如何在链接器命令文件中指定该位置?

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

    [引用 USER="Nathan Vander Wilt"]我想在  所有使用的内存的末尾放置一个特定的数据项(甚至只是链接器符号就足够了)。

    您可以在所有使用的存储器的末尾放置一个符号。  如果您使用 TI ARM 编译器版本20.2.x.LTS 或更高版本,则链接器命令文件的 MEMORY 指令中可以有一个类似的条目...

    最高点_memory_range:org = 0x20000020 len = 0x20000000 lAST (symbol_name_here) 

    有关详细信息、 请在 TI ARM 汇编工具手册 中搜索标题 为 Last Operator 的子章节。

    谢谢、此致、

    乔治

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

    好的、我认为我至少找到了一种方法、通过 spnu118y.pdf 中 有关"最后一个运算符"的第8.5.10.8节来实现它。

    我修改了存储器块中链接器命令文件的主线、以在所需的符号名称周围添加`last ()`:

    主(RC):origin = 0x8000、length = 0x38000、lAST (APP_END)

    然后在我的代码中:

    extern void* app_end;

    printf ("结束为:%p\r\n"、_symval (&app_end));

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

    哎呀、抱歉、我认为我们在找到解决方案后都键入了内容。 感谢您的帮助以及最后()操作人员确实是此工作的正确工具的确认!