This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM5728: DSP复位问题

Part Number: AM5728


您好,我正在使用的芯片是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)