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.

F28377D两个CPU之间通讯问题

Other Parts Discussed in Thread: CONTROLSUITE

        对于多核没有什么概念,所以看了F28377D的一些事例,也没有看明白,应该是我看的太浅了,有几个初级问题想问下大家:

        1、CPU1和CPU2都可以控制所有的外设吗?还是说CPU1可以控制所有的,而CPU2受限制,或者是其他的?

        2、CPU1和CPU2是怎么工作起来的?有两个main?或者其他方式?应该有什么配置的吧?

        3、CPU1和CPU2之间的协调只有通过IPC来进行传输的吗?如果有一个变量,能共用吗?

        4、大家有没有什么比较初级的两个CPU都用起来的历程可以借鉴呢?

        谢谢了!

  •  1、CPU1和CPU2都可以控制所有的外设吗?还是说CPU1可以控制所有的,而CPU2受限制,或者是其他的?

    初始状态CPU1控制所以的外设加共享RAM GSRAM,通过CPU1初始化进行分配内存和外设

            2、CPU1和CPU2是怎么工作起来的?有两个main?或者其他方式?应该有什么配置的吧?

    有两个项目,CPU完成初始化后会释放CPU2运行

            3、CPU1和CPU2之间的协调只有通过IPC来进行传输的吗?如果有一个变量,能共用吗?

    IPC是一个方式,还可以用messageram和GSRAM

            4、大家有没有什么比较初级的两个CPU都用起来的历程可以借鉴呢?

    下载controlsuite, F28377D的dual core例程都可以参考

  •    2、CPU1和CPU2是怎么工作起来的?有两个main?或者其他方式?应该有什么配置的吧?

    有两个项目,CPU完成初始化后会释放CPU2运行

     

    controlsuite 里面的例程,比如有adc_epwm_cpu01和adc_epwm_cpu02 ,分别是两个CPU的程序吗? 如果两个CPU都要跑起来,是不是要编译和烧录两个不同的工程?

  • 是的,下载进两个CPU的,要下载两个内核

  • 1、在CCS Debug那里除了CPU1、CPU2还有CLA1、CLA2,这两个CLA不用烧程序的吧?

    2、是不是CPU1负责芯片IO口的初始化、配置,CPU2没有这个功能?然后CPU1需要运行后,CPU2才能工作,才可以去配置外设,使用外设?

    3、有没有可能就是CPU1和CPU2共用一个外设,比如说CPU1里面设置了EPWM1的频率、占空比,然后CPU2运行的时候也有同样的动作,不过是不一样的频率、不一样的占空比呢?

  • 1、在CCS Debug那里除了CPU1、CPU2还有CLA1、CLA2,这两个CLA不用烧程序的吧?

    CLA的程序是少在CPU的FALSH,然后menorycopy到LSRAM分配给CLA的区域,如要调试load symbol就可以,记得加DEBUGSTOP设置断点。

    2、是不是CPU1负责芯片IO口的初始化、配置,CPU2没有这个功能?然后CPU1需要运行后,CPU2才能工作,才可以去配置外设,使用外设?

    其实不是,有一个bit释放就会让CPU从held reset回复。具体看一下standalone的例程就知道

    3、有没有可能就是CPU1和CPU2共用一个外设,比如说CPU1里面设置了EPWM1的频率、占空比,然后CPU2运行的时候也有同样的动作,不过是不一样的频率、不一样的占空比呢?

    不可能,外设必须有owner。但是可以在程序中切换,但是不建议这样做,会乱掉。

  • 请问下,程序哪里可以更改,RAM还是FLASH、STANDALONE ?

  • 右键项目名字 make target就能改

  • 感谢您繁忙的时候还抽空为我解答,还有几个问题:

    在controlsuite的例程adc_epwm_cpu1和adc_epwm_cpu2,我分别给芯片的CPU1和CPU2烧了不同的程序测试(我是直接Load Program然后选择不同的.OUT文件):

    1、CPU1烧录文件夹CPU1_RAM_DEBUG的.OUT文件,CPU2烧录文件夹CPU2_RAM的.OUT文件,可以正常仿真,两个CPU运行正常,断电重启都没用;

    2、CPU1烧录文件夹CPU1_FLASH_STANDALONE的.OUT文件,CPU2烧录文件夹CPU2_RAM的.OUT文件,开始Debug芯片都不工作,断电重启都没用;

    3、CPU1烧录文件夹CPU1_FLASH_STANDALONE的.OUT文件,CPU2烧录文件夹CPU2_FLASH的.OUT文件,开始Debug芯片都不工作,断电重启都没用;

    4、CPU1烧录文件夹CPU1_RAM_DEBUG的.OUT文件,CPU2烧录文件夹CPU2_FLASH的.OUT文件,开始Debug芯片CPU2不工作,断电重启都没用;

    请问下,您知道是怎么一回事吗?还是我操作哪里有误呢?谢谢!

  • 你的现象是正常的,如果你要断电正常运行,CPU1烧写standalone,CPU2烧写FLASH就可以

    如果要debug, 烧写CPU1 FALSH DEBUG或者RAM DEBUG,CPU2烧写两个都可以,但是不能离线跑

  • 可是我目前的情况是,CPU1和CPU2都烧RAM的时候可以在线DEBUG;

    CPU1烧FLASH_STANDALONE,CPU2烧RAM或者FLASH,离线CPU1和CPU2都没有运行;

    CPU1烧FLASH_DEBUG,在线跑不起来。

     

    用的是blinky_dc例程

  • 我测试了一下

    CPU1烧FLASH_STANDALONE,CPU2烧FLASH,离线CPU1和CPU2都可以运行,你需要重新上电一下

  • 我和您说下我的步骤:

    1、板子SW1都是UP(1),A:SW1(ISO、UART)

    2、供电,连接板上的下载USB

    3、打开CCS,导入blinky_dc两个工程(V200--dual),开始时候CPU1和CPU2都是RAM-ACTIVE的,两个工程分别

          右键->Properties->General->Configuration->Manage Configurations   ->   CPU1_FLASH_STANDALONE (ACTIVE)   和 CPU2_FLASH(ACTIVE)->OK

    4、右键工程-> 分别Build Project    生成.OUT   (有警告,都是说编译器版本问题的,#10190-D,#10272-D)

    5、用CPU1的Target Configurations ->launch,CPU1和CPU2都连接,

         点击CPU1->LOAD->CPU1_FLASH_STANDALONE->OK,点击CPU2->LOAD->CPU2_FLASH->OK

    6、关电源,拔掉USB下载线,A:SW1(J-TAG,UART)

    7、上电,LD2和LD3没反应

    不知道哪里出错了,是不是编译器版本警告那里出问题了呢?  谢谢了!