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.

[参考译文] 编译器/TMS320F28075:使用具有不同运行位置的组

Guru**** 2589245 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/609305/compiler-tms320f28075-using-group-with-different-running-location

器件型号:TMS320F28075

工具/软件:TI C/C++编译器

您好!

我需要创建一个具有特定格式的软件二进制文件:头文件、指令和文件末尾部分。 为了在链接过程中强制段顺序、我使用链接器的 GROUP 指令。

但某些初始化函数需要在 RAM 中执行源代码(例如:闪存参数初始化。 我创建了一个特定的代码段、以允许在 RAM 和 RAM 执行中复制代码。

问题是我无法将此段放入组中、因为其他段不会复制到 RAM 中。 在链接上生成警告:

"../Cmd/FLASH_lnk.cmd、第67行:警告#10082-D:"RamFuncSection"忽略放置: 对象作为"二进制"的一部分放置

   /*分配计划领域:*/
   GROUP (二进制):LOAD = FLASHABCDE PAGE = 0,SIZE (二进制_SIZE),ALIGN (4)
   {
       codestart
       BinaryHeader
       .text
       .cinit
       .pinit
       .econst

       RamFuncSection :run = RAMD0 | RAMD1,
                             LOAD_START (RAM_FUNC_LOAD_START_ADDR)、
                             load_size (RAM_FUNC_load_size)、
                             LOAD_END (RAM_FUNC_LOAD_END_ADDR)、
                             RUN_START (RAM_FUNC_RUN_START_ADDR)、
                             RUN_SIZE (RAM_FUNC_RUN_SIZE)、
                             RUN_END (RAM_FUNC_RUN_END_ADDR)

       BinaryCrc
   }

如何将此段(RamFuncSection)放置在与文件段的结构头-指令-末尾相关的二进制文件中?

感谢您的帮助

欧雷利恩

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

    GROUP 是按该顺序组合在一起并全部分配的一组输出段。  任何组的成员都不能具有有关分配的单独指令。  不过、这就是您尝试使用 RamFuncSection 执行的操作。

    我真的不明白你打算做什么。  我想您有两个选择。  第一、请不要将 RamFuncSection 作为组的一部分。  或者,对 RamFuncSection 的管理方式进行重大更改,使其成为集团的一部分。  我不知道 C28x 器件通常是如何开始运行的、因此无法提供相关建议。

    要更好地了解链接器命令文件的工作方式、请参阅文章 链接器命令文件入门

    谢谢、此致、

    乔治

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

    感谢 George 的回复。

    我想我将修复一些段的地址、以保持二进制结构、而不是使用组。 它允许将要在 RAM 中复制和执行的段以及在闪存中执行的段混合在一起。

    此致

    欧雷利恩