问题很简单,双核同时工作,cpu1有pwm1、2、3、11,adca,eqep1外设,cpu2有pwm4、5、6、12,adcb,eqep2外设。仿真情况下,两个核心外设都可以正常工作,但是烧写到flash启动后,cpu2中的pwm无法产生中断。请问TI工程师何解?
注意仿真情况下是正常工作的。
Seven Han:
有类似的帖子,请参考这边:http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/99274.aspx
问题很简单,双核同时工作,cpu1有pwm1、2、3、11,adca,eqep1外设,cpu2有pwm4、5、6、12,adcb,eqep2外设。仿真情况下,两个核心外设都可以正常工作,但是烧写到flash启动后,cpu2中的pwm无法产生中断。请问TI工程师何解?
注意仿真情况下是正常工作的。
MiloBai:
回复 Seven Han:
参考贴已经看过了,此帖中对于CPU2工作在flash模式中中断问题没有给出解决办法。
还有其它解决方法吗?
问题很简单,双核同时工作,cpu1有pwm1、2、3、11,adca,eqep1外设,cpu2有pwm4、5、6、12,adcb,eqep2外设。仿真情况下,两个核心外设都可以正常工作,但是烧写到flash启动后,cpu2中的pwm无法产生中断。请问TI工程师何解?
注意仿真情况下是正常工作的。
Eric Ma:
想问一下,烧写到FLASH的时候,用没有用IPC指令启动CPU2?
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
还有,有没有对flash进行初始化,CPU1的能工作吗?
Eric
问题很简单,双核同时工作,cpu1有pwm1、2、3、11,adca,eqep1外设,cpu2有pwm4、5、6、12,adcb,eqep2外设。仿真情况下,两个核心外设都可以正常工作,但是烧写到flash启动后,cpu2中的pwm无法产生中断。请问TI工程师何解?
注意仿真情况下是正常工作的。
MiloBai:
回复 Eric Ma:
1、使用了IPC启动CPU2,CPU2可以启动程序;
2、对flash进行了初始化,但是在 IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);命令前初始化。CPU1工作正常,包括GPIO、外设初始化,程序功能也全部正常,只是CPU2对外设进行设置失败;
我的双核程序工作流程是:
1、CPU1通过IPC启动CPU2,此时CPU2等待(判断IPC)CPU1继续工作;
2、在CPU1中设置GPIO(包括CPU1/CPU2使用到的所有GPIO),初始化CPU1使用到的外设,并通过DevCfgRegs.CPUSELx寄存器将CPU2使用的外设分配给CPU2;
3、CPU1所有初始化工作结束后,通过IPC通知CPU2。CPU2接收到IPC后对外设进行初始化;
现象为CPU1工作正常,CPU2无法进入ePWM的中断。
问题很简单,双核同时工作,cpu1有pwm1、2、3、11,adca,eqep1外设,cpu2有pwm4、5、6、12,adcb,eqep2外设。仿真情况下,两个核心外设都可以正常工作,但是烧写到flash启动后,cpu2中的pwm无法产生中断。请问TI工程师何解?
注意仿真情况下是正常工作的。
Eric Ma:
回复 MiloBai:
你的双核启动流程看起来都没问题。
CPU2的PWM初始化完成之后,能输出PWM吗?
能够给个代码看看?
ERIC
问题很简单,双核同时工作,cpu1有pwm1、2、3、11,adca,eqep1外设,cpu2有pwm4、5、6、12,adcb,eqep2外设。仿真情况下,两个核心外设都可以正常工作,但是烧写到flash启动后,cpu2中的pwm无法产生中断。请问TI工程师何解?
注意仿真情况下是正常工作的。
MiloBai:
回复 Eric Ma:
非常感谢Eric以及Seven。
我的问题已经找到了。因为我使用了controlSUITE中IDDK参考例程中的flash.cmd作为CPU2的cmd使用,此cmd中的.ebss与.esysmem段放在了GS RAM中,在CPU1未指派的情况下CPU2是无法使用的,因此影响到CPU2的初始化工作,最终导致程序在CPU2中无法进入中断。
解决办法是将.ebss与.esysmem段放在LS RAM中。
再次感谢Eric和Seven。