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.8377万D:无法将数据分配到大于64K范围的内存空间。

Guru**** 2555630 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/633484/compiler-tms320f28377d-can-not-allocate-data-to-memory-space-higher-than-64k-range

部件号:TMS320F2.8377万D

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

每当我将任何数据段移动到大于64K (0x1万)的空间时,我正在处理的应用程序都会停止操作。  如果所有数据都在低64K范围内,则代码工作正常。

堆栈始终位于较低的空间中。 但只要有.esysmem和.ebss,就可以使用。  

但是,如果我将.esysmem或.ebss分配给大于64K地址范围的空间。 代码在基本初始化后立即卡在malloc()处。

是否有任何提示或建议导致问题的原因?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请首先检查您的项目是使用大内存模型构建的吗?

    在CCS中,右键单击项目,选择“属性”,然后转至:
    C2000编译器->处理器选件。
    检查是否设置了-ml标志。

    此致,

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找到了原因。 在应用程序初始化过程中,将高于64K的RAM空间分配给CPU2。 在为CPU1设置了正确的GSxMSEL寄存器值后,它就会工作。