我是DSP初学者,现在接触DSP6678,过程中感觉有很多困难和不解,尽力把错误和解决的方法记录下来。
昨天我模仿老大的例子写程序,感觉好像是一样的程序但是就是在程序一开始就在ipc_start这个函数里面死循环,最后实在ipc_attach这里,ipc_start老大告诉我必须要等到cfg文件所配置的核数都ipc_start之后才会继续,可以简单理解为是大家在同步等待。但是依然不能解决在死循环这个问题。程序是通过核0启动后去强制把其他的核启动,也就是把代码拷贝到各自的L1D_SRM中,。
for (i = 1; i < 8; i ++) {
boot_core(i, (unsigned long)0x9043bb20);/* */
}
最后问题是我这个地址0x9043bb20这里的问题,这个地址我理解是c_int00的地址,我看了我的map文件修改了过后,程序就没有在ipc_start死循环,但是我感觉好像没有把其他几个核启动起来,同时出现:
[C66xx_8] ti.sdo.ipc.heaps.HeapBufMP: line 622: E_noBlocksLeft: No more blocks left in buffer (handle = 0x802560, requested size = 40)
[C66xx_8] MessageQ_alloc failed
这个问题待解决之后再接着分享。
|