工具与软件:
您好!
在几个月前发表的题为"CLA_SOFTINT_REGS Address and Location"的文章中、我收到了各种 CLA 寄存器集的地址。 我刚刚意识到 CLA_SOFTINT_REGS 的地址与 PieCtrlRegs (0x0CE0)相同。 我相信 PieCtrlRegs 的值为0x0CE0、因为我们按预期接收中断。 CLA_SOFTINT_REGS 位于不同的地址?
谢谢!
据
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_SOFTINT_REGS Address and Location"的文章中、我收到了各种 CLA 寄存器集的地址。 我刚刚意识到 CLA_SOFTINT_REGS 的地址与 PieCtrlRegs (0x0CE0)相同。 我相信 PieCtrlRegs 的值为0x0CE0、因为我们按预期接收中断。 CLA_SOFTINT_REGS 位于不同的地址?
谢谢!
据
尊敬的 Ed:
很抱歉我的答复被推迟。
这是因为 CLA 和 CPU 使用不同的地址空间(因为 CLA 地址最多只能达到16位、而 CPU 地址最多可以达到32位)。 从 CPU 的角度来看、0x0CE0是指 PieCtrlRegs、而从 CLA 的角度来看、0x0CE0是指 CLA_SOFTINT_REGS。 请参阅 此处链接的器件数据表中的 C28x 存储器映射部分。
CLA_SOFTINT_REGS 中的两个寄存器与 CLA_ONLY_REGS 中的同名寄存器 (如果您注意到它们引用的地址相同)之间实际上没有真正的区别。 我将 从未来的文档和软件中删除 CLA_SOFTINT_REGS、因为它们是冗余的。
此致、
Delaney
尊敬的 Delaney:
不用担心。 我已经有几个延迟响应自己:^)。
在 spruii0e 第995页的第8.7.2节中、它指出" CLA 使用与主 CPU 相同的地址来访问数据和寄存器。"。 此语句后面的示例适用于 ePWM。 外设的地址均位于 CLA 的16位寻址范围内。 您是否认为 PieCntrlRegs 是一个例外并且 CLA_SOFTINT_REGS (只可从 CLA 写入)被放置在同一地址?
谢谢!
据
尊敬的 Ed:
我同意 TRM 中的这些句子有点令人困惑。 CPU 和 CLA 可以使用相同的地址 可以访问的外设的寄存器 . 不同的器件各自有自己的情况、其中不同内核之间的地址空间使用不同、尤其是对于具有大量外设的较大器件(例如地址空间更受限的 F2838x)。 我将确保对 TRM 的这一部分进行更改、使其更加准确。
在这种特定情况下、CLA 无法访问 PieCtrlRegs 、因此无需在 CLA 的(受限)存储器空间中保留其地址。 这些地址可用于访问 CLA_ONLY_REGS 、只有 CLA 可以访问该地址。 如果 CLA 使用 hw_memmap.h 中的定义访问寄存器(例如如下所示)、编译器在为每个内核编译时会处理任何地址更改。
例如、如果访问.cla 文件中的 CLA1_ONLY_BASE、编译器将使用地址0xC00。 如果您尝试从为 C28x 编译的 C 文件访问此寄存器、编译器将抛出错误、指出 CLA1_ONLY_BASE 未定义、这意味着它不会意外访问 PieCtrlRegs。
如果此回答有用、请投反对票
此致、
Delaney