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.

[参考译文] TMS320F280039C:实时更新时不会出现静态数组#39;t perserve

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1406523/tms320f280039c-static-array-don-t-perserve-when-live-update

器件型号:TMS320F280039C

工具与软件:

您好:

我使用 LFU 静态数组、它们不存在、为什么?

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

    尊敬的 Max:

    我需要一些详细信息/说明:

    -看起来像 txQueue 和 rxQueue 是 int_comm_drv.c 和 meter_comm_drv.c 中定义的静态数组?

    -上面显示的代码对应于哪个.c 文件?

    -使用的编译器版本是什么?

    -使用了哪些编译器选项/设置? (您能否复制粘贴)

    谢谢!

    SIRA

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

    尊敬的 Sira:

    这里为您提供了一些信息

    1.看起来像 txQueue 和 rxQueue 是 int_comm_drv.c 和 meter_comm_drv.c 中定义的静态数组?  

    答:是的。

    上述显示的代码对应于哪个.c 文件?

    答案:meter_comm_drv.c.  

    int_comm_drv.c 的代码 与 meter_comm_drv.c 类似

    使用了哪个编译器版本?

    使用了哪些编译器选项/设置? (您能否复制粘贴)

    最大值

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

    最大值、

    我指的是 LFU 编译器设置。 例如:

    --lfu_default=preserve --lfu_reference_elf=C:\workspace_v12\buck_F28003x_lfu\BANK1_FLASH/../BANK0_FLASH/buck_F28003x_lfu.out

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

    SIRA:

    这里是编译器设置。

    Q2:如果我 在 const  MeterRespCmdTable 数组中添加了新的一个元素、 则报告编译错误:

    #30014无法保留符号 MeterRespCmdTable 的地址、因为其大小大于参考 ELF 中的地址。 新符号大小= 256位、而参考符号大小= 192位。

    MeterRespCmdTable 是常量数组表、不应是错误。 对吧?

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

    最大值、

    您能提供一个测试用例吗? 请参阅此 文章  

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_How-to-Submit-a-Compiler-Test-Case.html

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

    SIRA,

    如内部一致、请协助编译器团队对其进行调查。

    请在此处随时发布任何更新、谢谢。

    Johnny

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

    约翰尼,是的,会这样做。

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

    Johnny/Max、

    使用测试用例、我能够在 const MeterRespCmdTable 更改大小的情况下重现错误。  我创建了一个 Jira 用于跟踪问题、并将在该问题公开后添加链接。 但是、问题是 在编译器决定避免将常量变量处理为"preserve"之前、大小检查操作有误。 因此、唯一的解决方法是将 MeterRespCmdTable 变量保持为相同大小或标记为属性(更新)。 这将在22.6.2.LTS 中修复

    关于 txQueue/rxQueue 的问题、我无法使用提供的测试用例再现。
    我的参考构建映射文件具有:

    .bss 0 0000b000 00000196 UNINITIALIZED
           0000b000 00000079 int_comm_app.obj (.bss)
           0000b079 00000041 int_comm_drv.obj (.bss:rxQueue)  
           0000b0ba 00000041 meter_comm_drv.obj (.bss:rxQueue)
           0000b0fb 00000041 int_comm_drv.obj (.bss:txQueue)
           0000b13c 00000041 meter_comm_drv.obj (.bss:txQueue)
           0000b17d 00000002 meter_comm_app.obj (.bss)
           0000b17f 00000001 app_isr.obj (.bss)
    

    我的 LFU 构建映射文件具有:
    .TI.bound:rxQueue 
    *          0    0000b079    00000117     UNINITIALIZED
                    0000b079    00000041     int_comm_drv.obj (.TI.bound:rxQueue)
                    0000b0ba    00000041     meter_comm_drv.obj (.TI.bound:rxQueue)
                    0000b0fb    00000041     int_comm_drv.obj (.TI.bound:txQueue)
                    0000b13c    00000041     meter_comm_drv.obj (.TI.bound:txQueue)
    


    我对该项目所做的唯一更改是使 MeterRespCmdTable 保持 相同大小、以便 Bank2 LFU 构建不会出错

    谢谢
    Greg

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

    以下是 const 大小错误的链接:
    sir.ext.ti.com/.../EXT_EP-11935