您好、专家、
客户遇到这样一个问题:当"CPU 写入" 和 "CLA 读取"同时访问 CPUtoCLARAM 区域时、"CPU 写入"数据丢失。
如下图所示、 "CPU 写入"操作位于 dccpu_ISR 循环中、而 "CLA 读取"操作位于 Cla1Task3循环中。 两个环路都由 120kHz 的 PWM_CTR_ZERO 中断触发、CPU 和 CLA 带宽足以供代码使用。
测试步骤是
- 首先从"MdlCurrent LoadSwitch>2048L"跳转到"MdlCurrent LoadSwitch<1024L"条件、"uiDcdcVoltK3/4/5 "变量的值将被更改;
- 在 "MdlCurrent LoadSwitch<1024L"条件下、如果变量值等于以下一组测试结果、例如(17168/426/3130)、系统将跳转至 "1024L <MdlCurrLoadSwitch<2048L" condition.
- 然后、在 "1024L <MdlCurrLoadSwitch<2048L" condition, the variables value keep unchanged and same with the value in step2. 中
在步骤2中、如果 同时进行"CPU 写入" 和 "CLA 读取"访问 、则可接受 dccpu_ISR 循环中的变量值与变量值不同。
但是、在步骤3中、变量保持不变、这意味着"CLA 读取"后会忽略或丢失"CPU 写入"。 这种行为是否正确?
不过、它似乎与下面的 E2E 链接不一致、该链接" CPU 读取不会被忽略、但会被挂起、并且在 CLA 访问完成后提供访问。"
测试结果:
答:
uiDcdcVoltK3_CpuToCla = 17168;
uiDcdcVoltK4_CpuToCla = 426;
uiDcdcVoltK5_CpuToCla = 3130;
B:
uiDcdcVoltK3_CpuToCla = 17168;
uiDcdcVoltK4_CpuToCla = 168;
uiDcdcVoltK5_CpuToCla = 3130;
C:
uiDcdcVoltK3_CpuToCla = 3298;
uiDcdcVoltK4_CpuToCla = 168;
uiDcdcVoltK5_CpuToCla = 16742;
D:
uiDcdcVoltK3_CpuToCla = 3298;
uiDcdcVoltK4_CpuToCla = 426;
uiDcdcVoltK5_CpuToCla = 16742;
此致
Rayna

