TI 的工程师你们好 这个问题之前提问过了 但是依旧没有解决 之前的解决方法并不正确
我目前还是在调试6678 自己的自制板 使用了OpenEM + sysbios
目前发现一个问题 下面的这段代码如果取消那两句代码的注释 程序就会卡死。具体表现为程序开始运行之后没有任何输出,
CCS里点击suspend没有反应,程序无法暂停,只能点击terminate终止调试,而且点击终止调试也要卡一段时间程序才会退出
for(int i = 0; i < numFeatures; i++)
{
index <<= 1;
// fp0 = myImg[bbox[0] + off[0]];
// fp1 = myImg[bbox[0] + off[1]];
if(fp0 > fp1)
{
index |= 1;
}
off += 2;
}
代码中 myImg 和 bbox 以及 off是三个数组 myImg 放在私有L2中 , bbox放在msm中 , off放在了DDR中。
这段代码位于openEM 的my_processJob函数中 意味着这段代码将在所有核心并行运行。 但是由于程序让不同的核心工作在不同的数据段
所以不同核心读取的bbox值和off值是不同的。
以前我是将myImg也放入了msm中 程序也会卡死 我以为是多核同时读取msm出现了问题 但是现在各个核心读取myImg数据之前
我使用了QDMA将myImg从msm中搬运到了各个核心的私有L2中 因此此时各个核心会从自己的私有L2里读取数据 所以理论上没有冲突的问题
但是现在程序只要带着这两句话运行就会卡主不动了,只要注释掉这两句话就会正常运行。
所以想请问下TI的工程师 这个问题有没有什么可能的原因,有没有什么解决办法以及可能的调试排查方法?
littleWhite:
把stack改大一点试试