Part Number:TMS320C6678
您好,想请教您一个dsp的问题
现象:
双核运行的情况下,比如一个变量a,赋值为128,但是程序跑的过程中被莫名改成了0。
排查:
由于双核在跑,我怀疑是否双核内存有冲突,我分别查了编译生成的map文件,我的代码和变量都是放在msmcram(8核共享的4M区域)里的,而两个核map文件里msmcram使用大小加起来已超过4M,这是不是会引起内存冲突,造成变量莫名被修改了?
疑问:
如何修改?是将大变量移到ddr中?还是修改cfg文件中.text等字段的映射,将这些段放在ddr里?
感谢您的回复
下图是我的cfg文件内存映射,两个核基本相同
Nancy Wang:
as a 说:这是不是会引起内存冲突,造成变量莫名被修改了?
也是有可能的,可以先测试一下都放到DDR上,看一下变量会不会被篡改。
,
as a:
您好,感谢回复
我把上图主核中cfg中内存section都由MSMCSRAM改为了DDR3,但是下载程序后程序无法运行,如下图
正常的都应该像从核一样,下面会有一个main() at …,但是主核下载了程序后下面什么也没有,点击运行后只有从核的程序运行了,主核没有任何动静,这是真么回事
,
Nancy Wang:
单独load到主核可以吗?
,
as a:
也不可以,单独load到主核也是无法点击运行按钮,下方也没有main() at…
,
Nancy Wang:
as a 说:双核运行的情况下,比如一个变量a,赋值为128,但是程序跑的过程中被莫名改成了0。
是在同一个核下观察的吗?单步调试看一下。
as a 说:也不可以,单独load到主核也是无法点击运行按钮,下方也没有main() at…
这个问题不太清楚,可以尝试将部分段分配到DDR看看。
,
as a:
我尝试将那个变量放在了每个核独有的512k内存上,该变量没有被篡改。是否就验证了内存冲突的问题?那我应该怎样修改呢,不可能所有的东西都放在512k上,空间有限也放不下。
,
Nancy Wang:
双核是共用的一个工程还是单独的工程?可以先阅读 DSP Code and Data Images :
www.ti.com.cn/…/sprab27b.pdf