各位专家,目前在c6678上进行应用程序开发时,代码放在共享内存的0xc000000~0xc0a0000,堆分配到共享,栈都分配到核上LL2,8核共享同一个代码程序,我的应用程序分4个步骤,每个处理步骤内部8核并行处理不同数据块,8核对属于自己处理的数据块的处理方法一样,每个步骤完了之后都会进行8核同步,同步完成后再进入下一步骤处理,进行程序调试时发现经常遇到个别核进行函数调用时参数传递不正确问题,不正确的参数出现的位置和个数没有规律,我们进行函数调用时一共传了6个参数,有时出现前几个都错了只有最后一个没问题,有时出现在前4个里面的两个,有时出现第三个参数出错,但是唯一有规律的就是每一次编译出来的程序代码重复多次加载到芯片上运行,固定出现在某个核的固定位置的几个参数出现问错误,开始我怀疑是栈不够,加大栈的分配,还是传递不对,请问这是什么原因导致的?
Andy Yin1:
1 只在一个core上运行程序会有问题么?
2 传递参数使用的是局部变量还是全局变量,试试全局变量;
3 确定cmd文件中将栈放在每个core的私有memory,可以将cmd发上来看看。