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.

[参考译文] CODECOMPOSER:解决警告:020000h 处的 xx.out 部分位于未配置的存储器中

Guru**** 2466550 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1546173/codecomposer-resolving-warning-section-xx-out-at-020000h-falls-in-unconfigured-memory

部件号:CODECOMPOSER


工具/软件:

您好 Champ、

我要找我的客户。

他们现在正在开发 F28P65x MCU、并 按照以下链接成功生成具有 hex2000 的.bin 文件。

 https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1113498/tms320f280025c-post-build-to-generate-bin-file-the-size-is-too-big/4138341 

生成.bin 文件、但也会弹出警告。  

想问专家,如何解决显示如下的警告?  

已完成构建目标:“boot.out"</s>“

“C:/ti/ccs1271/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/bin/hex2000.exe -q -b -image -o “boot.bin" roms_directive_file.txt“ roms_directive_file.txt “boot.out"</s>“

 警告:020000h 处的 boot.out (ramgs0) 段位于未配置的存储器中

.CMD 配置如下所示、  

RAMGS0          :原点= 0x010000、长度= 0x002000
…μ s

ramgs0:> RAMGS0、键入= NOINIT

ROMS{

 all_mem:o = 0x100000、l = 0x8000

}

感谢您的输入。

此致、

Johnny

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

    你看到的原因...

     警告:020000h 处的 section boot.out (ramgs0) 位于未配置的存储器

    ...是部分 ramgs0 超出中指定的存储器范围 ROM 指令。  。 ROM 指令错误、因为您在创建时跳过了一个步骤。  返回 此帖子 、并在其中搜索短语 “将这些值乘以 2“。  请小心遵循这些指示。

    谢谢。此致、

    -乔治

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

    您好、George、

    我们已经有 ROMS 指令乘以 2。

    闪存和 RAM 链接器命令如下所示。

    BEGIN                             : origin = 0x080000, length = 0x000002  // Update the codestart location as needed
    FLASH_BOOT_CODE  : origin = 0x080002, length = 0x003FEC, fill = 0xFFFF
    BOOT_FUNCTION_ID : origin = 0x083FEE, length = 0x000002, fill = 0xFFFF /* Function ID record  */
    BOOT_VERSION           : origin = 0x083FF0, length = 0x000010, fill = 0xFFFF /* Boot version record */
    …
    RAMGS0             : origin = 0x010000, length = 0x002000
    …
    ramgs0 : > RAMGS0, type= NOINIT
    
    ROMS {
      all_mem: o = 0x100000, l = 0x8000
    }
    

    W 可以 生成 32KB 的.bin、但没有问题。

    接下来、客户希望 DMA 缓冲区将配置初始化为 GS RAM -> ramgs0、初始化过程如下  

    #pragma SET_DATA_SECTION("ramgs0")
    Create_DMA_Object(dmaDcanRxObj, 16, DmaRegs.CH1);
    #pragma SET_DATA_SECTION()

     020000h 处的警告段 boot.out (ramgs0) 位于未配置的存储器中
    (跳过)将再次显示。

    但是、如果我从链接器中删除 type= NOINIT(如下所示)、上述警告将消失、但用户希望 ramgs0 区域不会被初始化。

    是否有一种方法 来满足  ramgs0 没有初始化,并且警告也消失了?

    感谢您的评论。

    此致、

    Johnny

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

    请配置内容、以便发生这种情况...

    [引述 userid=“488507" url="“ url="~“~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1546173/codecomposer-resolving-warning-section-xx-out-at-020000h-falls-in-unconfigured-memory

    “C:/ti/ccs1271/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/bin/hex2000.exe -q -b -image -o “boot.bin" roms_directive_file.txt“ roms_directive_file.txt “boot.out"</s>“

     警告:020000h 处的 boot.out (ramgs0) 段位于未配置的存储器中

    [/报价]

    请将这些文件放在一个 zip 文件中,并 其附加到您的下一个帖子。

    • 连接器命令文件
    • roms_directive_file.txt
    • boot.out

    谢谢。此致、

    -乔治

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

    您好、George、

    附加一个包含部分链接器命令文件和 roms_direction_file.txt 的 zip 文件。

    客户无法向我们提供.out 文件。

    问题是、是否有办法 在链接器命令文件中不初始化 ramgs0、并在编译后删除警告?

    e2e.ti.com/.../5126.files.zip

    感谢您的支持。

    Johnny

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

    基于 ROMS 指令文件、段 ramgs0 超出范围。  我怀疑这是有意的。

    如果是该段 ramgs0 未初始化(类似于 .bss )、然后执行此诊断...

    警告:020000h 处的 section boot.out (ramgs0) 位于未配置的存储器

    产生辐射。  因为它发射出来的、所以我不得不得出结论 ramgs0 初始化(类似于 .const )。  这是有意的错误、还是某种错误?  仅根据段名、我希望其未初始化。

    谢谢。此致、

    -乔治

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

    您好、George、

    感谢您的意见。  

    仅根据节名、我希望它未初始化。

    是的、同意您的意见。  在此段中、该段应未初始化。  

    这是有意的还是某种错误?  [/报价]

    您说警告是由用户定义的链接器命令文件还是我们的 CCS 引起的吗?  

     有什么解决方案吗?   

    谢谢、

    Johnny

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

    搜索 C28x   汇编工具手册以查找标题为“汇编器如何处理段“的子章节、以便更好地了解术语已初始化段和未初始化段。   

    因为我们看到诊断...

    警告:020000h 处的 section boot.out (ramgs0) 位于未配置的存储器

    ...我们知道 ramgs0 是初始化段。  这种诊断也意味着什么 ramgs0  在中 .bin 添加到工程。  程序需要这个初始化的数据、否则无法正常工作。

    我们看到的其他一切内容 ramgs0 指示打算保持未初始化状态。  因此、我们需要了解为什么要将其初始化。  您之前发送的任何文件都不能帮助解释其初始化的原因。

    该怎么办 ramgs0 创建?  请在创建该代码的 C 代码(或汇编代码)级别考虑这个问题。  它可能是在单个 C 文件中创建的。  如果正确、那么对于该 C 文件、 请遵循 如何提交编译器测试用例一文中的说明。  注意、需要提交的内容远少于整个 CCS 工程。

    谢谢。此致、

    -乔治

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

    您好、George、

    感谢您的意见。 我同意您的分析。

    如何操作 ramgs0 创建?  请在创建该代码的 C 代码(或汇编代码)级别考虑此问题。

    这只是一个由用户命名并分配给 器件中实际存储器 RAMGS0 的输出节。 没有 创建 ramgs0 的这样 C 代码(或汇编代码)。

    用户在这里的作用是命名输出段、然后分配给器件中的内存、然后将数据专门复制到该输出段。  

    客户还尝试将数据(使用#pragma SET_DATA_SECTION)分配到主代码中的其他段、随后进行诊断。  

    这是因为所有输出 段地址都超出的范围  ROM  指令?

    。  ROM  指令为 all_mem:O = 0x100000、l = 0x8000

    感谢您的支持。

    此致、

    Johnny

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

    在回答我的问题...

    如何操作 ramgs0 获得创建?

    您说...

    这只是一个由用户命名的输出节、然后分配给 器件中的实际存储器 RAMGS0。 [/报价]

    这很模糊。  细节很重要。   

    假设它类似于下面的 C 代码...

    __attribute__((section("ramgs0")))
    int array[] = { 5, 6, 7, 8, 9 };

    默认情况下、这会导致出现一个未初始化的段。  此外、还在中输入条目 .cinit 部分。  。 .cinit 该段由编译器 RTS 库中的启动代码进行处理、这会 将值 5、6、7、8、9 复制到 的 RAM 地址中 ramgs0 。   

    具体方法如下 ramgs0 写入到链接器命令文件中。

    ramgs0 :> RAMGS0、type= NOINIT [/报价]

    因为 类型= NOINIT 则禁用此默认行为。  相反、 ramgs0 是初始化段。  实际上、您同意以某种方式将可执行文件中的值 5、6、7、8、9 复制到的 RAM 地址 ramgs0 。  因此、 ramgs0 是超出指定范围的初始化段 ROM 指令。  噪声量  hex2000 要发出诊断...

     警告:020000h 处的 section boot.out (ramgs0) 位于未配置的存储器
    [/quote]

    这是否描述了正在发生的情况?

    谢谢。此致、

    -乔治

    [/quote][/quote]