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.

F28M35的C28核FLASH烧写问题

大家好,我想请教个问题。我现在在用F28M35这块开发板官网下的双核流水灯程序。问题是这样的,当我把程序烧到M3核内部时,烧写成功,重新上电程序可以在M3中运行;但当我把程序烧到C28核内部时,显示erase和load program成功后,重新上电后发现对应C28核的LED等没有亮,如果我不复位的话,直接点调试界面的运行,LED可以点亮,程序正常运行。现在怀疑c28重新上电复位后,没有进入bootloader程序再次运行,而是进入了idle模式。

这个现象,我截图了。第一张图是C28程序烧写完成后,调试界面的选项。第二张图是我点了reset CPU后,调试界面选项,发现程序没有回到复位开始段0x3fffc0,而是在0x3ffead,而且这个存储位置没有source,再次点击运行程序,发现程序进入了idle状态。

想问一下,reset cpu后没进入reset的0x3fffc0的位置是否正确,如不正确,如何修改让程序再次上电复位或软件复位后仍能正常运行。谢谢大家能给予回答。

  • 注意一下,C28x内核启动的时候,需要M3来发命令告诉C28启动的。

    M3初始化代码应该有这一段,如果C28X跑在FLASH,则是前者,否则后者。

    #ifdef _FLASH
    // Send boot command to allow the C28 application to begin execution
    IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_FLASH);
    #else
    // Send boot command to allow the C28 application to begin execution
    IPCMtoCBootControlSystem(CBROM_MTOC_BOOTMODE_BOOT_FROM_RAM);
    #endif

    之所以用仿真器和CCS能让C28x跑起来,是因为CCS功能强大,能自动找到C28X的启动入口地址code start 和 main入口。如果是脱机跑,则一定要前面的代码。

    ERIC

  • 谢谢回复,确实是这样的原因造成的,学习了。现在遇到了新的问题,我自己画了块基于f28m35的最小系统,但是运行在ram中时,c28核的时钟频率一直为10Mhz,我用的外部20Mhz时钟输入,而且在M3核中配置了倍频,与M3例程中的语句相同,倍频为15倍。但是C28的工作时钟始终为10Mhz,如何检查系统是否倍频呢,期待你的答复。