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.

[参考译文] TMS320F28388D:有关 IPC 通信的问题

Guru**** 2022830 points
Other Parts Discussed in Thread: C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1118001/tms320f28388d-question-about-ipc-communication

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARE

尊敬的团队:

我的客户想要将 例程(IPC_ex2_msgqueue_c28x1.c)的通信方法更改为中断方法。  他作了以下修改:

1、 添加了中断接收功能

//
//标志1的 IPC ISR
// C28x 内核使用标志0发送带有消息队列的数据
//
_interrupt void IPC_ISR1 ()  

int i;
//IPC_Message_t TxMsg、RxMsg;
bool status = false;

//
//从消息队列中读取消息
//
IPC_readMessageFromQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_ADDR_CORRECT_ENABLE、
&RxMsg、IPC_NONBLOCK_CALL);

if (RxMsg.command =IPC_CMD_READ_MEM)

状态= true;

//
//读取和比较数据
//
for (i=0;i<RxMsg.dataaw1;i++)

if ((*(uint32_t *) RxMsg.address + i)!= i)
状态= false;

//
//确认标志
//
IPC_ackFlagRtoL (IPC_CPU1_L_CM_R、IPC_FLAG1);

//
//确认 PIE 中断。
//
INTERRUPT_clearACKGROUP (INTERRUPT_ACK_Group1);

2、 启用 IPC 中断
//
IPC_registerInterrupt (IPC_CPU1_L_CM_R、IPC_INT1、IPC_ISR1);  

//
初始化消息队列
//
IPC_initMessageQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_INT1、IPC_INT1);

3、添加了用于测试的发送环路

while (1)  

DEVICE_DELAY_US (100000);
IPC_sendMessageToQueue (IPC_CPU1_L_CM_R、&messageQueue、IPC_ADDR_CORRECT_ENABLE、
&TxMsg、IPC_NONBLOCK_CALL);
DEVICE_DELAY_US (100000);

测试结果是 CPU1和 CM 之间的 IPC 通信不能中断。 问题是什么? 下面是完整的代码:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//
// Included Files
//
#include "driverlib.h"
#include "device.h"
//
// Defines
//
#define IPC_CMD_READ_MEM 0x1001
#define IPC_CMD_RESP 0x2001
#define TEST_PASS 0x5555
#define TEST_FAIL 0xAAAA
#pragma DATA_SECTION(readData, "MSGRAM_CPU_TO_CM")
uint32_t readData[10];
uint32_t pass;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

此致、

绿色

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    绿色、

    是否意味着说在 CM 侧未触发 IPC_ISR1中断? (或)  CPU1侧未触发 IPC_ISR1中断?  

    代码的 CPU1侧仅显示故事的一个侧? CM 发生什么事了?  

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Manoj:

    客户反馈:CM4侧可以正常进入中断、CPU1侧不能进入中断、CM4使用例程:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include "cm.h"
    #include "ipc.h"
    //
    // Defines
    //
    #define IPC_CMD_READ_MEM 0x1001
    #define IPC_CMD_RESP 0x2001
    #define TEST_PASS 0x5555
    #define TEST_FAIL 0xAAAA
    IPC_MessageQueue_t messageQueue;
    //
    // IPC ISR for Flag 1
    // C28x core sends data with message queue using Flag 0
    //
    __interrupt void IPC_ISR1()
    {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    此致、

    绿色

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    绿色、

    我将尝试从我的一方重现此问题。 请在3-4个工作日内回复。

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    曼诺伊:

    感谢您的帮助、并等待您的回复。

    绿色

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    绿色、

    我今天就开始讨论这个问题。 我遇到了编译问题并努力解决它。

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    曼诺伊:

    非常感谢你的帮助。

    此致、

    绿色

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    邓、

    我已开始处理该项目。 我会随时向您发布。

    我希望在明天作出回应。

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Manoj:

    此问题是否有任何更新?

    此致、

    绿色

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经能够让 CM 使用 IPC1中断 CPU1、但尚未成功让 CM 向 CPU1成功发送消息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    绿色、

    我已附加了 C2000Ware msgqueue 示例代码的修改版本、其中 CPU1通过信息(数据通过1到10)传递给 CM 和 CM 通过信息(数据通过11到20)、并使用中断方法。 CPU1和 CM 均使用 IPC1中断来中断 eachother。

    e2e.ti.com/.../ipc_5F00_ex2_5F00_msgqueue_5F00_cm_5F00_modified.c

    e2e.ti.com/.../ipc_5F00_ex2_5F00_msgqueue_5F00_c28x1_5F00_modified.c

    此致、

    曼诺伊