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.

[参考译文] TMS320F2.8375万D:用于大型阵列的.cinit内存分配

Guru**** 2448780 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1088857/tms320f28375d-cinit-memory-allocation-for-large-arrays

部件号:TMS320F2.8375万D

大家好,

我正在尝试将当前值保存在全局共享RAM f2.8375万d中的大型(0x0.4万大小)阵列中。 我设置了一个变量,然后在RAMGS-1-2中找到它 ,当我尝试构建它时,会出现一个错误,指出:

程序由于太大而无法放入.cinit内存位置。

我不能使这个数组成为一个常量数组,我假定它应该使用来自.cinit位置的一组值进行初始化。

我目前提出的解决方案是为.cinit分配更多的空内存,这足以容纳我的整个阵列,但随后该内存将变得无用。

是否有办法用零初始化此数组,从而使.cinit不需要额外的内存?

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

    初始化阵列,这样:

    #pragma data_section(Current1ReadValues,"current_1_read_location")
    UINT16_t Current1ReadValues [8192]={0};

    而不是


    UINT16_t Current1ReadValues [8192]={0,0,0,0,...} ,0,0,0";

    解决了我的问题,--zero-init=on和--cinit-compression没有效果。