您好,我正在使用的芯片是AM5728
1.描述:AM5728当一个dsp核发生crash,异常的DSP核会触发recover(复位)。目前看到复位流程卡在Ipc_attach——>Ipc_procSyncStart中等待远端要连接的DSP核ti_sdo_ipc_Ipc_PROCSYNCSTARTti_sdo_ipc_Ipc_PROCSYNCFINISH。
2.问题:
1.想要让发生crash的DSP核恢复到应用层的业务代码?我应该要怎么做呢?
2.你们有关于DSP复位的资料的吗?有的话请发我一份。
3.相关的代码
1).crash后复位的代码段
static void rproc_crash_handler_work(struct work_struct *work)
{
struct rproc *rproc = container_of(work, struct rproc, crash_handler);
struct device *dev = &rproc->dev;
dev_dbg(dev, "enter %s\n", __func__);
mutex_lock(&rproc->lock);
if (rproc->state == RPROC_CRASHED || rproc->state == RPROC_OFFLINE) {
/* handle only the first crash detected */
mutex_unlock(&rproc->lock);
return;
}
rproc->state = RPROC_CRASHED;
dev_err(dev, "handling crash #%u in %s\n", ++rproc->crash_cnt,
rproc->name);
mutex_unlock(&rproc->lock);
if (!rproc->recovery_disabled)
rproc_trigger_recovery(rproc); //在这里产生复位
}
2)ipc同步代码段
/* Synchronize the processors. */
status = Ipc_procSyncStart(remoteProcId, Ipc_module->ipcSharedAddr);
if (status < 0) {
return (status);
}
3)ipc完成同步代码段
/* Finish the processor synchronization */
status = ti_sdo_ipc_Ipc_procSyncFinish(remoteProcId,
Ipc_module->ipcSharedAddr)