主题中讨论的其他器件:C2000WARE
使用以下代码重新启动 CPU2时遇到问题(当然在 CPU1上运行):
EALLOW;
//将脉冲重置到 CPU2
DevCfgRegs.CPU2RESCTL.ALL = 0xA5A50001;
DELAY_US (100);
DevCfgRegs.CPU2RESCTL.ALL = 0xA5A50000;
EDIS;
//并重新启动 CPU2
IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _FLASH);
此代码在加电后工作正常、但可能无法在稍后重新启动。
调试 CPU2的引导代码我注意到文件 c2brom_boot.c 中的变量 c2brom_status 在复位后或至少在函数 c2brom_system_init ()的开头未初始化。
在函数 c2brom_system_init()中,引导过程显示了一个接一个地设置一个位。 CPU1等待引导状态的低4位上的特殊模式(0x2)、以查看 CPU2已成功引导。
由于 c2brom_status 未初始化且通常从 LSB 设置开始、因此无法达到模式0x2、而是0x3。 因此引导失败。
由此产生的问题是:
如何以节省的方式从闪存重新启动 CPU2?
此致
Stefan