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.
工具/软件:TI C/C++编译器
我仍在处理 https://e2e.ti.com/support/tools/ccs/f/81/t/768585中描述的同一个基本问题、 我想检查并查看建议是否已更改或是否已解决。
我需要一种方法来将特定输出段放置在给定存储器范围的最后。 我最近遇到了一个问题、即我们需要此属性的段碰巧是最后一个、但一旦我们增大其大小、链接器就决定将其放置在略小的段之前。 使用 HIGH 说明符也不能满足我们的要求、因为无论我们是否实际需要它、它都需要使用该区域中的所有空间。 突然的排序变化是一个意外的结果、这是因为它与 GNU 连接器不同、GNU 连接器将按照输出段默认显示的顺序放置输出段; 我认为这篇文章最初是在考虑到这种行为的情况下编写的、而最初的作者碰巧很幸运、"必须是最后的"部分也是最小的、但这不是一个保证。
我们不提供...
[引用 user="Christopher Copeland "]将特定输出段放在给定存储器范围内的最后位置的方法。
但这不是在旧论坛主题中讨论的请求。 在该线程中,请求被声明...
我的总体目标是在给定存储器区域中的所有段的末尾放置一个符号(在本例中是与所有闪存组相对应的存储器区域)。
我们确实有一个解决该请求的解决方案。 它在编译器版本20.2.0.LTS 中引入。 在链接器命令文件的 MEMORY 指令中、可以将符号与存储器范围中使用的最后地址相关联。 例如...
闪存:origin = 0x0FE000,length = 0x002000,lAST (_symbol_name_here)
有关更多详细信息、请在 《C28x 汇编工具手册》 中搜索标题 为"最后一个运算符"的子章节。
此新功能是否可以解决您的问题?
谢谢、此致、
乔治
我认为这种情况接近但并不完全解决我的问题... 我需要放置在末尾的符号具有实际内容、而不仅仅是链接器定义的地址。 我需要在结尾放置的符号的定义已经在翻译单元中、我只需要强制将其放置在结尾 上一篇文章是我尝试解决此问题的一种方法、它将该符号放置在组中最后的一个段中、 但是、一个组中的所有段都具有完全相同的放置属性(而不仅仅是具有相同的加载地址)的限制会影响到这种情况。
如果我使用最后一个(_symbol)方法、我还可以在翻译单元中定义它并使其具有实际数据吗? 我能否相对于我指定的任何符号定义其他符号? 符号将放置在哪个段中?
[引用用户="Christopher Copeland "]如果使用最后一种(_symbol)方法,我还可以在翻译单元中定义这种方法,并使其具有实际数据吗?
否
[引用 user="Christopher Copeland "]我能否定义与我指定的任何符号相关的其他符号?
否
[引用用户="Christopher Copeland "]哪个部分会放置_symbol?
最后指定的符号没有关联段。 它是一个绝对符号。 您的代码可以引用此符号。 但是、您不能对符号所代表的存储器地址的内容进行任何推定。
关于这个问题...
[引用用户="Christopher Copeland "]我需要在结尾放置的符号的定义已经在翻译单元中,我只需要强制将其放在结尾处即可[/引用]
我已详细考虑过这个问题。 到目前为止、我已经清空了。 不幸的是、我认为没有办法做到这一点。
谢谢、此致、
乔治