现在我的工程能够离线Flash启动,但是一旦我在CPU1申请了一定空间的数组,离线重启后CPU2无法正常启动。
我使用默认的flash配置的cmd会出现这种问题,我进行一定的改动也会出现这种问题。下面是使用syscfg配置的cmd
自定义区域只设置了部分gsram,并且不存在冲突。至于Device_bootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);的方法也尝试过无效,离线重启后双核都无法正常运行。
申请的数组如下,都是全局变量
以下为CPU1的Memory Allocation
CPU2全程没有改动
关于Flash访问冲突应该怎么排查呢?内存分配我尝试过放在GSRAM及其他的ram内都出现一样的问题,查看内存分配也没有发现有冲突的地方,cmd配置默认的我也用过也无效,现在的配置我也发在描述里面了。
现在问题被绕过了,但是并没有解决。之前由于硬件设计的问题,没有将GPIO84、76接高电平,导致默认的Flash启动无效,于是通过DCSM重新配置为其他的GPIO一直拉高,并且设置为Flash BOOT模式。并且将两个CPU都如此设置了,这就是为什么IPCBOOTCPU2这个函数无效。通过数据手册分析BOOT流程,我们发现CPU2不需要重新配置,可以默认进入WaitBOOT模式,这个时候使用IPCBOOTCPU2就能够启动。经过验证之后发现确实如此。(由于DCSM只能改一次,所以只能用新的28377主板)总结一下:就是只要不配置CPU2的DCSM(ZONE相关的寄存器),就可以通过CPU1启动CPU2,进而绕过我遇到的问题。为遇到类似的问题的人提供一个解决思路。其次就是这个问题还是没有解决,没有查清楚为什么申请了一定大小的数组就会导致CPU2无法启动,与数组多少无关,与数组的总共大小有关。