亲爱的香榭丽舍大街,
我是为我们的客户提出这个问题的。
他们希望对数据使用 CPU 到 CLA 存储器。
现在、我们测试后、发现 int16_t/uint16_t 和 int32_t/uint32_t 都起作用。
请注意、用户使用 driverlib、因此 int16_t/uint16_t 和 int32_t/uint32_t 的定义遵循我们的 driverlib。
在 main.c 中、
#pragma DATA_SECTION(testStructData1,"CpuToCla1MsgRAM");
TestStructType testStructData1 =
{
.a = 1234567, .b = -2, .c = 0.1234
};
#pragma DATA_SECTION(int16Example,"CpuToCla1MsgRAM");
int16_t int16Example = 500;
在 share.h 中
typedef struct
{
int32_t a; // Because int definition in C28x and CLA are different, int32_t/uint32_t (32-bit integer) is suggested.
int16_t b;
float c;
} TestStructType;
extern TestStructType testStructData1;
extern int16_t int16Example;
任务
interrupt void Cla1Task1()
{
__mdebugstop();
volatile int16_t aaa;
volatile int16_t bbb;
aaa = int16Example;
bbb = testStructData1.b;
...
}
我们发现的唯一区别是、在 CCS 监视窗口中、int16_t 未正确显示、但我们仍然可以使用本地 aaa、bbb (如上所示)进行调试。
Question:
1.我们了解 CLA 本身是32位浮点。 如果用户 在 CLA 上使用 int16_t/uint16_t 或 int32_t/uint32_t、这是否重要? 例如、计算周期就有很大不同? 如果它们使用 int16_t/uint16_t、CLA 仍然使用32位数据字。 对吗?
2. 对于 C28与 CLA 之间的数据通信、我们是否需要建议用户使用 int32_t/uint32_t 而不是 int16_t/uint16_t 进行数据通信?
