ZHCAFM7 July   2025 TMS320F28388D , TMS320F28388S

 

  1.   1
  2.   摘要
  3. 1TMS320F2838xD的介绍和功能框图
  4. 2过IPC模块实现CPU2和CPU1.CLA1间的数据传输的局限性
  5. 3利用"IO触发+DMA搬运"实现CPU2和CPU1.CLA1数据传输的原理
  6. 4"IO触发+DMA搬运"方法的验验证
    1. 4.1 时序说明及代码实现
    2. 4.2 实验环境搭建
    3. 4.3 时序波形验证
  7. 5总结
  8. 6参考文献

过IPC模块实现CPU2和CPU1.CLA1间的数据传输的局限性

由于CPU2和CPU1.CLA1之间不存在的共享RAM空间,传统的方法是通过IPC模块实现CPU2和CPU1.CLA1的数据交互。

首先,CPU2可以通过IPC模块(CPU1-CPU2 IPC)将数据传输到MSGRAMx/GSx RAM中,之后CPU1可以通过CPU1.DMA模块通过DMA搬运的方式将数据从MSGRAMx/GSx RAM中搬运到DMA-CLA1 MSGRAM中,最后CPU1.CLA1通过访问DMA-CLA1 MSGRAM将数据读出,并在CLA1中进行后续的处理。

 数据流,通过IPC模块实现CPU2和CPU1.CLA1之间数据交互 图 2-1 数据流,通过IPC模块实现CPU2和CPU1.CLA1之间数据交互

图 2-2为IPC模块实现CPU2和CPU1.CLA1间数据传输的具体过程:

  1. CPU2 首先将把需要传递给CLA1的数据写入 MSG RAMx/GSx RAM中。
  2. 在CPU2中向C2TOC1IPCSET 寄存器中的写1,将C2TOC1IPCFLG置1,由于CPU2的C2TOC1IPCFLG寄存器和CPU1的C2TOC1IPCSTS是同一个物理地址上的寄存器, 因此CPU1中的 C2TOC1IPCSTS 寄存器也置1,同时触发了CPU1产生了IPC的中断,告知 CPU1 数据已准备好,可以进行下一步操作。
  3. CPU1检测到C2TOC1IPCSTS 寄存器置1。
  4. CPU1开始从MSG RAMx/GSx RAM中读取数据,同时启动DMA任务,通过CPU1的DMA功能,将数据从MSG RAMx/GSx RAM搬运到DMA-CLA1 MSGRAM中。
  5. CPU1 将C2TOC1IPCACK 寄存器 置1 ,以确认它已收到数据。 随后清除了 C2TOC1IPCFLG 和 C2TOC1IPCSTS 中的标志位,完成本次数据传输流程。
 IPC模块实现CPU2和CPU1.CLA1之间数据交互 图 2-2 IPC模块实现CPU2和CPU1.CLA1之间数据交互

基于上述分析,由于CPU2和CPU1间的数据交互是通过IPC模块实现的,在数据交互过程中,CPU1需要完成上述过程的第三步到第五步,这一过程增加了CPU1的开销。因此在CPU1处理对时间敏感的任务或者CPU1的开销很大时,通过IPC模块实现CPU2和CPU1.CLA1间数据传输的方式存在一定的局限。

如图 2-3所示, CPU1完成第三步到第五步的时间,CPU的开销大约花费2.93us。

 使用IPC方法的CPU1的开销 图 2-3 使用IPC方法的CPU1的开销