F28377D双核开发经验(核间通信)

目录

1.1介绍

1.2 信息交互RAM

1.3 IPC标志和中断

1.4 IPC命令寄存器 

 1.5 自由运行计数器

1.6 IPC通信协议


1.1介绍

翻译的F28377D数据手册。IPC功能包括:

• 信息交互RAM

• IPC标志和中断

• IPC命令寄存器

• 自由运行计数器

• IPC通信协议

      所有的IPC功能都是相互独立的,并且大多数都不需要任何特定的数据格式。还有两个寄存器用于引导模式和状态交互(IPCBOOTMODE和IPCBOOTSTS)。

图1 IPC模块结构框图

1.2 信息交互RAM

      有两个专用的2KB信息交互RAM块,用于两个CPU之间的信息传递。每个CPU和其DMA对其中一个RAM块有读写访问权限,对另一个RAM块有只读访问权限,如表1所示。读取或写入信息到RAM不会触发另一个CPU上的任何事件。

表1 IPC信息交互RAM块

1.3 IPC标志和中断

       在两个CPU之间的每个方向上(CPU1 to CPU2,CPU2 to CPU1)都有32个IPC事件信号。这些信号可以用于基于标志的事件轮询。对于C28X核心,其中的四个(IPC0~IPC3)可以配置为在另一个CPU上产生中断,如图2和图3所示。

图2 CPU1 to CPU2方向的IPC标志和中断
图3 CPU2 to CPU1方向的IPC标志和中断

1.4 IPC命令寄存器 

       IPC命令寄存器为CPU之间交换复杂的信息提供了一种简单而灵活的方式。每个CPU有8个专用寄存器;4个用于发送信息,4个用于接收信息。这8个寄存器的名字命名仅仅是为了实现一个简单的命令/响应协议。8个寄存器的读写权限由硬件决定,数据格式完全由软件定义。结构如图4和图5所示。

图4 CPU1 to CPU2方向的IPC命令寄存器
图5 CPU1 to CPU2方向的IPC命令寄存器

       对于发送信息的CPU来说,有三个可写寄存器和一个只读寄存器;对于另一个接收信息的CPU来说这些相同的寄存器为三个只读寄存器和一个可写寄存器,如表2所示。

表2 IPC命令寄存器

 1.5 自由运行计数器

       在IPC中有一个64位自由运行的计数器,可以用于对CPU之间的IPC事件进行时间戳计时。这个计数器的时钟来自PLLSYSCLK并且被SYSRSn复位。计数器由两个32位寄存器组成,分别为IPCCOUNTERH和IPCCOUNTERL。当IPCCOUNTERL被读取时,IPCCOUNTERH的值被保存。随后对IPCCOUNTERH的读取操作返回这个被保存的值。因此必须先读IPCCOUNTERL然后再读IPCCOUNTERH。结构如图6所示。

      只有在所有CPU上的模拟挂起时(当调试器遇到断点时),自由运行的计数器才会停止。如果任何核心正在执行,计数器将运行。

1.6 IPC通信协议

      本节介绍两个CPU之间的IPC通信协议的硬件支持选项,这些选项可以独立使用,也可以组合使用。所有的标志意义和数据格式都是完全由用户定义的。

1.6.1 标志系统通过中断和寄存器轮询来实现基于事件的通信

  1. CPUx可以通过写入IPCSET寄存器的32位中的任何一个来触发IPC事件。这将设置CPUx的 IPCFLG寄存器和CPUy的IPCSTS寄存器中相应的位。
  2. CPUy可以通过在IPCACK寄存器中设置适当的位来表示对事件的响应。这将清除CPUx的 IPCFLG寄存器中的相应位和CPUy的IPCSTS寄存器中的相应位。
  3. 如果CPUx需要取消一个事件,CPUx可以在IPCCLR寄存器中设置适当的位。这与CPUy写入IPCACK有相同的效果。
  4. IPC1~IPC3(使用IPCSET[3:0]设置)可以触发另一个CPU的中断,另一个CPU必须正确配置ePIE模块以接收IPC中断。IPC4~IPC31(使用IPCSET[31:4]设置)不会产生中断。可以同时设置、确认和清除多个标志。

1.6.2   IPC命令寄存器支持发送多个不同的信息片段,并且只被命名为COM、ADDR、DATA和REPLY,并且可以保存应用程序需要的任何数据。

  1. CPUx可以将数据写入IPCSENDCOM,、IPCSENDADDR和IPCSENDDATA寄存器。CPUy在IPCRECVCOM,、IPCRECVADDR和IPCRECVDATA寄存器中接收这些信息。
  2. CPUy可以通过写入其IPCLOCALREPLY寄存器进行响应。CPUx在它自己的IPCREMOTEREPLY寄存器中接收这些数据。

1.6.3  为启动IPC或任何其他方便的使用提供了一对类似命令寄存器的寄存器——IPCBOOTMODE和IPCBOOTSTS。两个cpu都可以读取这些寄存器。CPUx只能写入IPCBOOTMODE寄存器,而CPUy只能写入IPCBOOTSTS寄存器

1.6.4 有两个共享的内存,用于在CPU之间传递大量的数据。每个CPU都有一个用于发送数据的可写内存和一个用于接收数据的只读内存。

1.6.5 下面是如何一起使用这些硬件特性的示例。CPUx需要从CPUy的LS内存中获得一些数据。数据位于CPUy地址0x9400,长度为0x80 16位字。该协议可以通过下面的方式来实现:

  1. CPUx将0x1写入IPCSENDCOM,在软件中定义为“从地址复制数据”。CPUx将地址(0x9400)写入IPCSENDADDR,并将数据长度(0x80)写入IPCSENDDATA
  2. CPUx写入到IPCSET[3]和IPCSET[16]。在这里,IPC标志3被配置为发送一个中断,而IPCSET[16]在软件中被定义为一个传入的命令。CPUx开始轮询,直到IPCFLG[3]处于低位。
  3. CPUy接收中断。在中断处理程序中,CPUy检查IPCSTS,发现标志IPC16已置位,并运行命令处理器。
  4. CPUy从IPCRECVCOM中读取命令(0x1),从IPCRECVADDR中读取地址(0x9400),从IPCSENDDATA中读取数据长度(0x80)。然后,CPUy将LS RAM数据复制到可写共享内存中起始偏移地址为0X210的空空间。
  5. CPUy将共享内存地址(0x210)写入IPCLOCALREPLY寄存器。然后CPUy写入IPCACK[16]和IPCACK[3]以清除标志并指示命令的完成。CPUy的工作结束。
  6. CPUx发现IPCFLG[3]复位。CPUx读取IPCREMOTEREPLY 寄存器以获得存放复制数据的共享内存偏移量(0x210)。

对于dsp28377d双核应用,根据引用\[1\]和引用\[2\]的内容,可以得出以下结论: 1. dsp28377d是一款双核芯片,适用于新能源并网和电机控制等领域的应用。 2. 使用TI的DSP技术,可以实现多种pwm应用,如逐波限流和输出倍频等高级功能。 3. 使用sys/bios作为操作系统可以提高实时性和稳定性,并简化DSP程序的移植和配置工作。 4. 学习dsp28377d的学习成本较高,因为相关的资料相对较少,但可以通过阅读datasheet和相关驱动程序来学习和应用。 5. 对于新接触dsp28377d的用户,建议结合重点,多翻阅相关资料,以便更好地理解和应用该芯片。 综上所述,dsp28377d双核芯片适用于新能源并网和电机控制等领域的应用,使用TI的DSP技术和sys/bios操作系统可以提高应用的实时性和稳定性。然而,学习和应用该芯片需要一定的学习成本,建议新接触的用户多翻阅相关资料以便更好地理解和应用该芯片。 #### 引用[.reference_title] - *1* *3* [TMS320F28377D的外设应用笔记(1)——Epwm配置](https://blog.csdn.net/aceyj/article/details/118967842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [TMS320F28377D的sys/bios应用笔记(1)——开发环境搭建](https://blog.csdn.net/aceyj/article/details/118239866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值