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.

CLA to CPU MSGRAM中的变量数量会影响CLA的正确执行

变量在main.C里面定义 ,格式如下

#pragma SET_DATA_SECTION("Cla1ToCpuMsgRAM")

变量定义

变量定义

.......

int16_t 变量n,变量n+1,变量n+2;

.......

变量定义

变量定义

#pragma SET_DATA_SECTION()

如果在中间多定义2个(或偶数个)16位整数 变成 “int16_t 变量n,变量n+1,变量n+2,变量n+3;

变量n+3只是定义,未使用

CLA运行就会出现异常(无PWM波形)。

如果在中间多定义2个(或偶数个)16位整数 变成“int16_t 变量n,变量n+1,变量n+2,变量n+3,变量n+4;"

依然是只定义不使用。

CLA运行依然会正常(正常PWM波形)。

问题:

1.CLA读写的内存需要4字节对齐吗?

2.相比于16位数据,CLA对32位数据处理更快或者更适合处理32位数据?

  • 如果在中间多定义2个(或偶数个)16位整数 变成 “int16_t 变量n,变量n+1,变量n+2,变量n+3;

    更正:
    如果在中间多定义1个(或奇数个)16位整数 变成 “int16_t 变量n,变量n+1,变量n+2,变量n+3;
  • shu hai feng 说:
    1.CLA读写的内存需要4字节对齐吗?

    没看到有这方面的要求,这点我会和你的问题一起咨询一下其他工程师。

    shu hai feng 说:
    2.相比于16位数据,CLA对32位数据处理更快或者更适合处理32位数据?

    是的,CLA本身是一个32位的处理器

  • 感谢您的回复

    后续测试:

    仅仅是把中间这一行变量定义移动几行(依然在同一段CLA2CPU MSGRAM里面),程序也不能正常工作。

    是否有可能是编译器没有得到变量在内存里面的正确地址?
  • 已经对比过CLA的asm源文件,似乎没有差别。map文件里面变量的位置会变化,但是还是在制定点的内存段里面。
  • 抱歉目前没有遇到过类似的情况,咨询了一下其他同事也没有这方面的经验,建议你就这个问题直接前往英文E2E论坛咨询一下,英文E2E上会有这方面的专家为你解答:e2e.ti.com/.../c2000-microcontrollers-forum