工具与软件:
#define ICSS_EMAC_ERR_TX_OUT_OF_BD (ICSS_EMAC_SWITCH_ERROR_MAJOR + 8u) /**< Tx ran out of Buffer descriptors to use.
/*Check if queue is full and there is an wrap around */ printf_INFO("P+%d,HWREG(0x%x) = 0x%x,wr_ptr=0x%x,size=0x%x,rd_ptr=0x%x, desc_off=0x%x\n",portNumber, temp_addr, temp, queue_wr_ptr, size, queue_rd_ptr, txQueue->buffer_desc_offset); if (((queue_wr_ptr + 4U) % size) == 0U) { if (queue_rd_ptr == txQueue->buffer_desc_offset) /* Since queue is not starting from 0. */ { txQueue->qStat.errCount++; if (emacMode == 0U) { /*Switch Mode*/ temp_addr = ((((ICSS_EmacHwAttrs *)icssEmacHandle->hwAttrs)->emacBaseAddrCfg)->dataRam1BaseAddr + txQueue->queue_desc_offset + 4U); HWREGB(temp_addr) = 0; } else { temp_addr = (pruSharedMem + txQueue->queue_desc_offset + 4U); HWREGB(temp_addr) = 0U; } hostStatPtr->txDroppedPackets++; printf_INFO("--ICSS_EMAC_ERR_TX_OUT_OF_BD(-1)=0x%x, M:0x%x + 8 \n", ICSS_EMAC_ERR_TX_OUT_OF_BD, ICSS_EMAC_SWITCH_ERROR_MAJOR); return ((int32_t)ICSS_EMAC_ERR_TX_OUT_OF_BD); /* No space in queue */ } }
P+1,HWREG(0x4b281ed8) = 0x162c14ac,wr_ptr=0x162c,size=0x1630,rd_ptr=0x14ac, desc_off=0x14ac
P+1,HWREG(0x4b281ed8) = 0x15ec15ec,wr_ptr=0x15ec,size=0x1630,rd_ptr=0x15ec, desc_off=0x14ac
[ 1471.745615] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.767063] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.783669] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.797017] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.810024] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.824034] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.838006] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.851038] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.864030] virtio_rpmsg_bus virtio1: msg received with no recipient [ 1471.878025] virtio_rpmsg_bus virtio1: msg received with no recipient
echo 40800000.dsp > /sys/bus/platform/drivers/omap-rproc/unbind