大家好,
我现在在将openem移植到我自己的工程中。在使用openem的时候遇到奇怪的问题。
由于我本身的工程代码段大,放不进L2中。所以我只好移到了DDR中,又由于我要在多核上跑,在ddr上共用一份代码会出现竞争,而且我用的主从结构,主核做主控,从核做算法,所以我主核和从核各建了一个工程,类似image_processing那个demo一样。现在在两个核上跑。两个工程的代码段,数据段和stack段都放在DDR上,两个工程靠不同的平台文件中,定义DDR中不同的区域做segment,然后两个工程的代码可以放在ddr的不同区域。
现在跑起来的情况是,从核dispatch会跑飞,core1的状态显示他跑到了一个只有core0中定义的地址上。
我就用原始的demo做了个测试:
我复制了一份Example_0,重命名Example_1. 改一下宏定义和cfg,让这两个工程在core0和core1上跑。
只做上面这一条改动,跑起来没问题。但是我换一下平台文件就不对了。
我定义了两个平台文件,包含Example_0原始平台文件中的所有,且保持一致,只不过分别多加了一个segment DDR_SRAM 。
在core0上 DDR_SRAM 定义是 0x90000000 大小 0x01000000.
在core1上 DDR_SRAM i定义是 0x92000000 大小 0x01000000.
然后code section data section和stack section都放在DDR_SRAM上。
我要是换上我自己的平台文件,core0可以正常跑,但是core1会停在0x90xxxxxx的一个地址上。可是0x90xxxxxx只有在core0上才可能有,core1上必然是no symbol。
请问这是什么问题,困扰挺久,怎么解决?
大神可以试着按我的情况测试一下,看会不会出现我一样的情况
谢谢!
Andy Yin1:
把stack放在LL2上试试,其他暂时也看不出什么问题。
TI中文支持网