IPC双核通信

1.  void IPC_setFlagLtoR(IPC_Type_t ipcType, uint32_t flags);

函数说明:本地核设置本地到远程的IPC标志。 此函数允许本地核系统设置指定的IPC标志并发送到远程核系统。flags 参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31参数说明

输入参数: - 参数 ipcType 是对应所使用IPC实例的枚举类型。
- 参数 flags 是要设置的IPC标志掩码。

返回参数 - 无

2.  void IPC_clearFlagLtoR(IPC_Type_t ipcType, uint32_t flags);

函数说明: 本地核清除本地到远程的IPC标志。 此函数允许本地核系统清除发送到远程核系统的指定IPC标志。flags 参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31。 参数说明

输入参数: - 参数 ipcType 是对应所使用IPC实例的枚举类型。 - 参数 flags 是要清除的IPC标志掩码。

返回参数 - 无

3.  void IPC_ackFlagRtoL(IPC_Type_t ipcType, uint32_t flags);

函数说明: 本地内核确认远程到本地的IPC标志。 此函数允许本地内核系统确认/清除远程内核系统设置的IPC标志。flags 参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数flags是用于确认的IPC标志掩码。

返回参数 - 无

4.  bool IPC_isFlagBusyLtoR(IPC_Type_t ipcType, uint32_t flags);

函数说明: 确定给定的IPC标志是否处于忙碌状态。 此函数允许调用者确定指定的本地到远程IPC标志是否处于待处理状态。flags参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数flags是用于确认的IPC标志掩码。

返回参数 - 参数 true是任意指定的IPC标志处于忙碌状态 - 参数 false是所有指定的IPC标志空闲

5.  bool IPC_isFlagBusyRtoL(IPC_Type_t ipcType, uint32_t flags);

函数说明: 确定给定的远程到本地IPC标志是否处于忙碌状态。 此函数允许调用者确定指定的远程到本地IPC标志是否处于待处理状态。flags参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数flags是用于确认的IPC标志掩码。

返回参数 - 参数 true是任意指定的IPC标志处于忙碌状态 - 参数 false是所有指定的IPC标志空闲

6.  void IPC_waitForFlag(IPC_Type_t ipcType, uint32_t flag);

函数说明: 等待远程内核发送标志。 此函数允许调用者等待远程内核发送远程到本地的标志。flag参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数flags是用于确认的IPC标志掩码。

返回参数 - 无

7.  void IPC_waitForAck(IPC_Type_t ipcType, uint32_t flag);

函数说明: 等待IPC标志被确认。 此函数允许调用者等待远程内核确认IPC标志。flag参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数flags是用于确认的IPC标志掩码。

返回参数 - 无

8.  void IPC_sync(IPC_Type_t ipcType, uint32_t flag);

函数说明: 同步两个内核。 此函数允许本地和远程内核进行同步。在另一个内核进入此函数之前,任何一个内核都不会从该函数调用中返回。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数flags是用于确认的IPC标志掩码。

注意:必须在两个内核上使用相同的标志掩码调用此函数。

返回参数 - 无

9.  void IPC_init(IPC_Type_t ipcType)

函数说明: 初始化IPC。 此函数通过清除所有标志来初始化IPC。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。

返回参数 - 无

10.  bool IPC_sendCommand(IPC_Type_t ipcType, uint32_t flags, bool addrCorrEnable,
                uint32_t command, uint32_t addr, uint32_t data);

函数说明: 向远程内核发送命令。 此函数允许调用者向远程内核发送命令。命令由唯一的命令值、一个32位地址和一个32位数据组成。 该函数还将指定的标志发送给远程内核。由于本地和远程内核的地址空间可能存在差异,例如在F2838X设备中,C28x内核和CM内核的地址空间不同。如果 addr指向的是IPC MSG RAM中的地址,addrCorrEnable参数可以用于纠正地址不匹配。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 flags 是用于确认的IPC标志掩码。 - 参数 addrCorrEnable 是用于确定是否将 addr 参数转换为远程内核地址空间的标志。 - 参数 command 是32位的命令值。 - 参数 addr 是作为命令一部分发送的32位地址。 - 参数 data 是作为命令一部分发送的32位数据。 - 参数 flags 参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31。 - 参数 addrCorrEnable 参数可以取以下值: - IPC_ADDR_CORRECTION_ENABLE : 将地址转换为远程内核的地址空间 - IPC_ADDR_CORRECTION_DISABLE : 不修改 addr 参数

应用程序应使用 IPC_getResponse 函数读取远程内核发送的响应。

注意:在收到响应之前,应用程序应等待,不能发送另一个命令。

注意addrCorrEnable 参数在发送和接收内核上必须保持一致。

返回参数 - 参数 true是命令发送成功 - 参数 false是指定的标志忙碌且命令未发送

11.  bool IPC_readCommand(IPC_Type_t ipcType, uint32_t flags, bool addrCorrEnable,
                uint32_t *command, uint32_t *addr, uint32_t *data);

函数说明: 读取远程内核发送的命令。 此函数允许调用者读取远程内核发送的命令。命令由唯一的命令值、一个32位地址和一个32位数据组成。 本地和远程内核的地址空间可能存在差异,例如在F2838X设备中,C28x内核和CM内核的地址空间不同。如果 addr 指向的是IPC MSG RAM中的地址,addrCorrEnable 参数可以用于纠正地址不匹配。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 flags 是用于确认的IPC标志掩码。 - 参数 addrCorrEnable 是用于确定是否将 addr 参数转换为远程内核地址空间的标志。 - 参数 command 是32位的命令值。 - 参数 addr 是作为命令一部分发送的32位地址。 - 参数 data 是作为命令一部分发送的32位数据。 - 参数 flags 参数可以是任何IPC标志值:IPC_FLAG0 - IPC_FLAG31。 - 参数 addrCorrEnable 参数可以取以下值: - IPC_ADDR_CORRECTION_ENABLE : 将地址转换为远程内核的地址空间 - IPC_ADDR_CORRECTION_DISABLE : 不修改 addr 参数

注意:在读取命令后,应用程序应确认标志并在需要时发送响应。

注意addrCorrEnable 参数在发送和接收内核上必须保持一致。

返回参数 - 参数 true是命令发送成功 - 参数 false是指定的标志忙碌且命令未发送

12.  void IPC_sendResponse(IPC_Type_t ipcType, uint32_t data)

函数说明: 向远程内核发送命令的响应。 此函数允许调用者对远程内核之前发送的命令进行响应。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 data 是要发送的32位响应值。

返回参数 - 无

13.  uint32_t IPC_getResponse(IPC_Type_t ipcType)

函数说明: 读取远程内核的响应。 此函数允许调用者读取远程内核对本地内核先前发送命令的响应。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。

返回参数 - 32位的响应值。

14.  uint64_t IPC_getCounter(IPC_Type_t ipcType)

函数说明: 读取时间戳计数器值。 此函数允许调用者读取IPC时间戳计数器值。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。

返回参数 - 64位的计数器值。

15.  void IPC_registerInterrupt(IPC_Type_t ipcType, uint32_t ipcInt,
                      void (*pfnHandler)(void));

函数说明: 为IPC注册中断处理程序。 此函数注册在发生IPC中断时调用的处理程序。该函数在中断控制器中启用全局中断。ipcInt 参数可以是任何IPC标志值:IPC_INT0 - IPC_INT7IPC_INT0对应于IPC标志0中断,依此类推。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 ipcInt 是正在注册中断的标志号。 - 参数 pfnHandler 是指向ISR函数的指针。

16.  void IPC_unregisterInterrupt(IPC_Type_t ipcType, uint32_t ipcInt);

函数说明: 注销IPC的中断处理程序。 此函数清除在发生IPC中断时调用的处理程序。该函数还会在中断控制器中屏蔽该中断,以确保不再调用中断处理程序。ipcInt 参数可以是任何IPC标志值:IPC_INT0 - IPC_INT7IPC_INT0对应于IPC标志0中断,依此类推。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 ipcInt 是正在注销中断的标志号。

17.  void IPC_initMessageQueue(IPC_Type_t ipcType, volatile IPC_MessageQueue_t *msgQueue,
                     uint32_t ipcInt_L, uint32_t ipcInt_R);

函数说明: 初始化IPC消息队列。 此函数使用环形缓冲区和索引地址为一对IPC中断初始化IPC消息队列。ipcInt_LipcInt_R 参数可以是以下值之一:IPC_INT0IPC_INT1IPC_INT2IPC_INT3参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 msgQueue 指定 IPC_MessageQueue_t 实例的地址。 - 参数 ipcInt_L 指定本地内核用于消息队列的中断号。 - 参数 ipcInt_R 指定远程内核用于消息队列的中断号。

注意:如果某个中断当前正被一个 IPC_MessageQueue_t 实例使用,该中断不应与另一个 IPC_MessageQueue_t 实例关联。

注意:对于特定的 ipcInt_L - ipcInt_R 配对,必须在本地和远程系统上定义并初始化 IPC_MessageQueue_t 实例。

返回参数 - 无

18.  bool IPC_sendMessageToQueue(IPC_Type_t ipcType,
                       volatile IPC_MessageQueue_t *msgQueue,
                       bool addrCorrEnable, IPC_Message_t *msg, bool block);

函数说明: 向消息队列发送消息。 此函数检查消息队列中是否有空闲插槽。如果有空插槽,它将把 msg 指向的消息放入空闲插槽并设置适当的IPC中断标志。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 msgQueue 指定 IPC_MessageQueue_t 实例的地址。 - 参数 addrCorrEnable 是用于确定是否将 addr 参数转换为远程内核地址空间的标志。 - 参数 msg 指定要发送到消息队列的 IPC_Message_t 实例的地址。 - 参数 block 指定是否允许函数阻塞,直到缓冲区有空闲插槽。 - 参数 addrCorrEnable 参数可以取以下值: - IPC_ADDR_CORRECTION_ENABLE : 将地址转换为远程内核的地址空间 - IPC_ADDR_CORRECTION_DISABLE : 不修改 addr 参数 - 参数 block 参数可以取以下值: - IPC_BLOCKING_CALL - IPC_NONBLOCKING_CALL

返回参数 - 参数 true消息成功发送 - 参数 false队列已满

19.  bool IPC_readMessageFromQueue(IPC_Type_t ipcType,
                         volatile IPC_MessageQueue_t *msgQueue,
                         bool addrCorrEnable, IPC_Message_t *msg, bool block);

函数说明: 从消息队列中读取消息。 此函数检查消息队列中是否有消息。如果有消息存在,它会读取消息并写入到 msg 指向的地址中。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 msgQueue 指定 IPC_MessageQueue_t 实例的地址。 - 参数 addrCorrEnable 是用于确定是否将 addr 参数转换为远程内核地址空间的标志。 - 参数 msg 指定要发送到消息队列的 IPC_Message_t 实例的地址。 - 参数 addrCorrEnable 参数可以取以下值: - IPC_ADDR_CORRECTION_ENABLE : 将地址转换为远程内核的地址空间 - 参数 block 参数可以取以下值: - IPC_BLOCKING_CALL - IPC_NONBLOCKING_CALL

返回参数 - 参数 true消息成功发送 - 参数 false队列已满

20.  bool IPC_readMessageFromQueue(IPC_Type_t ipcType,
                         volatile IPC_MessageQueue_t *msgQueue,
                         bool addrCorrEnable, IPC_Message_t *msg, bool block);

函数说明: 从消息队列中读取消息。 此函数检查消息队列中是否有消息。如果有消息存在,它会读取消息并写入到 msg 指向的地址中。 参数说明

输入参数: - 参数 ipcType 是与使用的IPC实例对应的枚举。 - 参数 msgQueue 指定 IPC_MessageQueue_t 实例的地址。 - 参数 addrCorrEnable 是用于确定是否将 addr 参数转换为远程内核地址空间的标志。 - 参数 msg 指定要发送到消息队列的 IPC_Message_t 实例的地址。 - 参数 addrCorrEnable 参数可以取以下值: - IPC_ADDR_CORRECTION_ENABLE : 将地址转换为远程内核的地址空间 - 参数 block 参数可以取以下值: - IPC_BLOCKING_CALL - IPC_NONBLOCKING_CALL

返回参数 - 参数 true消息成功读取 - 参数 false队列已空