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.

[参考译文] TMS320F2.8377万D:处理器间通信(IPC)

Guru**** 2539600 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/615849/tms320f28377d-inter-processing-communication-ipc

部件号:TMS320F2.8377万D
主题: controlSUITE中讨论的其他部件

你好  

我正在尝试使用双核功能构建具有TMS320F2.8377万D的电动机驱动器,以便使逆变器切换频率尽可能快。

我在CPU1中为电机控制器侧和CPU2中为ADC数据采集侧制作了代码。 因此,我需要将测量数据从cpu02中的ADC传输到cpu01,并将命令数据从cpu01中的控制算法传输到cpu02。  TI的( C:\ti\controlSUITE\DEVICE_SUPPORT\F2837xD\V210\F2837xD_Examples_Dual)中2837中提供的示例对我来说很难理解。

偶然,我发现了一个双核应用程序的例子,它运行良好。 当我检查两个内核之间的变量时,两个内核中每个变量的地址都相同。

我也是这样做的。 但它不起作用,我发现两个内核中每个变量的地址都不同。 我检查了一个示例项目和我的项目的环境,但没有发现任何差异  

让两个内核通信时,我缺少什么?

———  CPU 01面--------------------

#pragma data_section(CPU1toCPU2_variable,"PUTBUFFER";
#pragma data_section(CPU2toCPU1_variable,"GETBUFFER";

Float32 CPU1toCPU2_variable[7];

Float32 CPU2toCPU1_variable[8];

-------- CPU 02面-----------------------

#pragma data_section(CPU1toCPU2_variable,"GETBUFFER";
#pragma data_section(CPU2toCPU1_variable,"PUTBUFFER";

Float32 CPU1toCPU2_variable[7];

Float32 CPU2toCPU1_variable[8];

此外,是否有任何关于IPC的好示例让我更容易理解?

谢谢你

Chunki

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

    您好,Chunki,

    您如何在链接程序cmd文件中定义GETBUFFER和PUTBUFFER位置?

    此致,

    Vivek Singh

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

    您好,Vivek

    将GETBUFFER和PUTBUFFER作为链接器cmd文件在TI的示例项目中执行

    为了更好地理解,我输入了仿真告诉我的IPC变量的地址。

     CPU01和CPU02中变量的地址之间存在0x80差异。 我不知道这种区别来自哪里。

                 表达式               类型         值

      - CPU01  

                  CPU1toCPU2_variable  float[7]  0x0003FC80@数据

                  CPU2toCPU1_variable  float[8]  0x03F800@程序

      -CPU02  

                  CPU1toCPU2_variable  flo[7]  0x03FC00@程序

                  CPU2toCPU1_variable  float[8]  0x0003F880@数据

                 

    在回复中,我将 " linker cmd file for CPU01 and CPU02"放入 如下

    内存

    第0页:

    ~~~~~~~~

    第1页:

             ~~~~~~

             CPU2TOCPU1RAM:原点= 0x03F800,长度= 0x0.04万
             CPU1TOCPU2RAM:原点= 0x03FC00,长度= 0x0.04万

    }

    章节

       ~~~~~

     

    /*使用IPC API驱动程序时,需要以下部分定义*/

       :> CPU1TOCPU2RAM,= 1

       {

           PUTBUFFER

           PUTWRITEIDX

           GETREADIDX

       }

       

       :> CPU2TOCPU1RAM,= 1

       {

           GETBUFFER:   类型= DSECT

           GETWRITEIDX: 类型= DSECT

           PUTREADIDX :  类型= DSECT

       }  

      }

    感谢您的回复

    权镇