TMS320F28377D: 申请大数组后CPU2无法正常Flash启动

Part Number: TMS320F28377D

现在我的工程能够离线Flash启动,但是一旦我在CPU1申请了一定空间的数组,离线重启后CPU2无法正常启动。

我使用默认的flash配置的cmd会出现这种问题,我进行一定的改动也会出现这种问题。下面是使用syscfg配置的cmd

自定义区域只设置了部分gsram,并且不存在冲突。至于Device_bootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);的方法也尝试过无效,离线重启后双核都无法正常运行。

申请的数组如下,都是全局变量

以下为CPU1的Memory Allocation

CPU2全程没有改动

  • 您好,

    已经收到了您的案例,调查需要些时间,感谢您的耐心等待

  • 对了,补充一下,在连着仿真器的调试模式都是能够正常运行的,这个问题困扰很长时间了,麻烦你们了

  • 这个可能有很多原因导致这个问题。

    比如​内存分配冲突,CMD配置错误,Flash访问冲突等。请注意排查。

  • 关于Flash访问冲突应该怎么排查呢?内存分配我尝试过放在GSRAM及其他的ram内都出现一样的问题,查看内存分配也没有发现有冲突的地方,cmd配置默认的我也用过也无效,现在的配置我也发在描述里面了。

  • 可以看下Flash分区有无重叠。或者比如限制CPU1使用Flash,确保Flash初始化正确等。

    这些都是通用的办法,具体操作请查一下网上的相关资料。

  • 好的,谢谢您,我去尝试一下。如若还是无法解决有没有什么重点需要关注的地方?或者有没有其他的绕过这个问题的方法呢?

  • 不客气,

    其他的暂时也想不到什么,可以先试试上面的方法。

  • 现在问题被绕过了,但是并没有解决。之前由于硬件设计的问题,没有将GPIO84、76接高电平,导致默认的Flash启动无效,于是通过DCSM重新配置为其他的GPIO一直拉高,并且设置为Flash BOOT模式。并且将两个CPU都如此设置了,这就是为什么IPCBOOTCPU2这个函数无效。通过数据手册分析BOOT流程,我们发现CPU2不需要重新配置,可以默认进入WaitBOOT模式,这个时候使用IPCBOOTCPU2就能够启动。经过验证之后发现确实如此。(由于DCSM只能改一次,所以只能用新的28377主板)总结一下:就是只要不配置CPU2的DCSM(ZONE相关的寄存器),就可以通过CPU1启动CPU2,进而绕过我遇到的问题。为遇到类似的问题的人提供一个解决思路。其次就是这个问题还是没有解决,没有查清楚为什么申请了一定大小的数组就会导致CPU2无法启动,与数组多少无关,与数组的总共大小有关。

x 出现错误。请重试或与管理员联系。