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.

[参考译文] 编译器:C5505 -在EMIF中分配BIG Int16数组

Guru**** 2611705 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/640752/compiler-c5505---allocating-big-int16-array-in-emif

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

您好,根据C5505规格,应配备EM。

在我的链接器文件C5505.cmd中,我配置了EMIF,如下所示:

 

EMIF_CS0 (RW):原点= 5万h长度= 07B0000h /* mSDR */
EMIF_CS2 (RW):原点= 80万h长度= 40万h /* ASYNC1:NAND */
EMIF_CS3 (RW):原点= 0C0万h长度= 20万h /* ASYNC2:NAND */
EMIF_CS4 (RW):原点= 0E0万h长度= 10万h /* ASYNC3:NOR */
EMIF_CS5 (RW):原点= 0F0万h长度= 00E0000h /* ASYNC4:SRAM */

...

...

Channel_1   :> EMIF_CS0

我的阵列是  

#pragma data_section(array,"array";

Int16数组[7430]={

...

...

...};

编译器停止可加载代码生成,因为程序不适合内存。

我不明白错误在哪里,什么是解决方案

提前感谢

Paolo

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

    请阅读文章 链接器命令文件入门中的第一部分。  关注术语输入部分,输出部分存储器范围

    此行...

    Paolo Martinetti 说:
    #pragma data_section(array,"array");

    ...导致创建名为array的输入段。  我看不到它在输出部分中的组合位置。

    此行...

    Paolo Martinetti 说:
    通道_1   :> EMIF_CS0

    ...将名为channel_1的所有输入部分合并到同名的输出部分中,然后将其分配到EMIF_CS0内存范围。  输入部分数组将不是此输出部分的一部分。

    这可能不是您的全部错误。  但修复这些错误可能会使剩余的错误更加清晰。

    谢谢,此致,

    -George

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

    好的,

    已使用数组更正channel_1。

    我的电子邮件配置是:

    EMIF_CS0 (RW):原点= 5万h长度= 07B0000h  
    EMIF_CS2 (RW):原点= 80万h长度= 40万h  
    EMIF_CS3 (RW):原点= 0C0万h长度= 20万h  
    EMIF_CS4 (RW):原点= 0E0万h长度= 10万h  
    EMIF_CS5 (RW):原点= 0F0万h长度= 00E0000h  

     但问题仍然存在。

    谢谢

    Paolo

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

    请准确显示链接器的调用方式以及所有结果诊断。  并将链接器命令文件附加到下一篇文章。  因此,论坛将接受它,将文件扩展名".txt"添加到它。

    谢谢,此致,

    -George

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

    您好,  

    我注意到链接器在'array'以外的其他数组上显示错误,但只有在我创建'array部分时才会发生这种情况。

    内存

    MMR (RW):原点= 0万h长度= 0000c0h /* MMR */
    DARAM (RW):原点= 0万c0h长度= 00ff40h /*片上DARAM */
    Saram (RW):原点= 3万h长度= 01e000h /*片上SARAM */

    SAROM_0 (RX):原点= 0fe0000h长度= 0.8万h /*片上ROM 0*/
    SAROM_1 (RX):原点= 0fe8000h长度= 0.8万h /*片上ROM 1*/
    SAROM_2 (RX):原点= 0ff0000h长度= 0.8万h /*片上ROM 2*/
    SAROM_3 (RX):原点= 0ff8000h长度= 0.8万h /*片上ROM 3*/

    EMIF_CS0 (RW):原点= 5万h长度= 07B0000h /* mSDR */
    EMIF_CS2 (RW):原点= 80万h长度= 40万h /* ASYNC1:NAND */
    EMIF_CS3 (RW):原点= 0C0万h长度= 20万h /* ASYNC2:NAND */
    EMIF_CS4 (RW):原点= 0E0万h长度= 10万h /* ASYNC3:NOR */
    EMIF_CS5 (RW):原点= 0F0万h长度= 00E0000h /* ASYNC4:SRAM */

    }


    章节

    矢量(无负载)
    .bss :> DARAM /*, fill =0 */
    Vector:> DARAM ALIGN =256
    stack:> DARAM
    sysstack:> DARAM
    sysmem:> DARAM
    text:> SARAM
    数据:> DARAM
    .cinit:> DARAM
    const :> DARAM
    CIO:> DARAM
    .usect:> DARAM
    .switch:> DARAM


    buf :> DARAM
    rfftL:> DARAM
    ifftL:> DARAM
    cmplxBuf:> DARAM
    brBuf:> DARAM
    tmpBuf:> DARAM
    LPF_32:> DARAM
    LPF_42:> DARAM
    dbuffer :> DARAM
    Array :> EMIF_CS0

    }
    _hwafft_br = 0x00ff6cd6;
    _hwafft_1024pts = 0x00ff7a56;

    在附件中链接器输出

    谢谢

    Paolo

    e2e.ti.com/.../linker_5F00_output.txt

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

    您只是耗尽了DARAM。  链接器命令文件将除.text和array之外的所有部分都放入DARAM中。  您需要将某些部分放在其他内存范围中,或者减小其中某些部分的大小。  有关 详细信息和建议,请参阅此Wiki文章。

    谢谢,此致,

    -George

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

    很棒!

    我释放了一些DARAM空间,它可以工作!

    非常感谢!

    Paolo