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.

TMS320F28388D: 关于CPU和CLA共享变量的读写问题

Part Number: TMS320F28388D

大家好,

我在调试CPU1和CPU1.CLA的共享变量时出现一些问题。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*CPU1 .c file */
#pragma SET_DATA_SECTION("cla_shared")
int32_t a = 10;
#pragma SET_DATA_SECTION()
//
// Configure LSRAMs
//
MemCfg_setLSRAMControllerSel(MEMCFG_SECT_LS0, MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
MemCfg_setCLAMemType(MEMCFG_SECT_LS0, MEMCFG_CLA_MEM_DATA);
MemCfg_setLSRAMControllerSel(MEMCFG_SECT_LS1, MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
MemCfg_setCLAMemType(MEMCFG_SECT_LS1, MEMCFG_CLA_MEM_DATA);
/*CPU1 .cmd file */
CLA_SCRATCHPAD_SIZE = 0x100;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start
CLAscratch :
{ *.obj(CLAscratch)
. += CLA_SCRATCHPAD_SIZE;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

上面是我工程代码大概的配置,就是当变量a在cla和cpu共享LSRAM定义时,变量a在c代码中进行了赋值,然后触发CLA执行任务,在CLA任务中执行Func1函数去读取变量a的值,发现此时a的值已经变成0了;

当我将Func1函数注释掉,直接去读a的值时又是正确的,而Func1函数只是执行一些if语句的判断。

所以在这里有一个疑问,有哪些原因会导致变量a在c代码中赋值而执行CLA时变量a的值是错误的,不再是c代码中写入的值。