TI中文支持网
TI专业的中文技术问题搜集分享网站

请问2837xD能否实现CPU1的程序在RAM中调试的同时,CPU2的程序烧录在flash中运行?

    我的程序是分在2837xD两个核中运行,目前CPU2的程序已经调试完成,想把CPU2的程序固化在FLASH中运行起来后,通过仿真器在RAM里调试CPU1的程序。但是研究了半天都没搞明白怎么实现。

    我仔细研究了blinky_dc双核例程,发现只有CPU1选择STANDALONE_FLASH模式,CPU2选择FLASH模式时,也就是将CPU1和CPU2的程序全部固化到FLASH后,重新上电,两个核的程序才能同时跑起来。

     但是如果CPU1选择RAM_DEBUG模式,CPU2选择FLASH模式时(烧写CPU2的程序,CPU1还是用仿真器在RAM里调试),要么两个核都不跑,要么只有CPU1的程序运行了,CPU2始终无法运行。我尝试在CPU1的RAM_DEBUG模式下添加IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);或者IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);均无法引导启动CPU2。

    所以我想问的是能否实现我说的通过仿真器在RAM中调试CPU1的程序同时,已经烧写在FLASH中的CPU2的程序还能运行?

    还是说2837XD只支持两个核同时在RAM中调试或同时烧录在FLASH中?不支持一个核在RAM中调试而另外一个核的程序FLASH中运行?

额外的问题:

    以blink_dc双核例程为例,CPU1的程序里RAM_DEBUG,FLASH_DEBUG,FLASH_STANDALONE的含义到底该怎么理解?尤其是其中的STANDALONE到底怎么理解?按照字面翻译STANDALONE是脱机模式,但是到底是CPU1脱机还是CPU2脱机?从程序中看,RAM_DEBUG,FLASH_DEBUG都是针对CPU1的,也就是CPU1_RAM_DEBUG,CPU1_FLASH_DEBUG,因为这两个模式中都没针对CPU2的IPC指令。而STANDALONE指的到底是是CPU2脱机还是CPU1和CPU2同时脱机?

   按照下面这段代码理解,STANDALONE指应该是CPU2脱机模式。但是里面又有CPU1在FLASH运行和在RAM运行时的两个分支。但是例程里的三种编译模式,只有选择FLASH_STANDALONE时,才会编译IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);这个语句。而无论选择什么模式,均无法编译到IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);

#ifdef _STANDALONE
#ifdef _FLASH
//
// Send boot command to allow the CPU2 application to begin execution
//
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
#else
//
// Send boot command to allow the CPU2 application to begin execution
//
IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
#endif
#endif

    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH)这句话怎么理解?是CPU1引导CPU2从CPU2的flash运行吗?   

    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);这句话倒底是什么意思?为什么感觉例程里没有用到?到底在什么时候用的?是CPU1引导CPU2从CPU2的RAM运行的意思吗?还是CPU1从RAM里引导CPU2启动?

Green Deng:

这个确实没这么操作过双核芯片,我需要咨询一下美国工程师看是否能提供一些建议。一旦收到对方回复,我会尽快解答你的两个问题。

赞(0)
未经允许不得转载:TI中文支持网 » 请问2837xD能否实现CPU1的程序在RAM中调试的同时,CPU2的程序烧录在flash中运行?
分享到: 更多 (0)