TMS320C6455EVM由两块板通过RapidIO接口互联,测试IO读写功能、DOORBELL功能正确,但maintenance read返回错误代码(“Transaction complete, non-posted response packet (type 8 and 13) contained ERROR status, or response payload length was in error”)。
通过LSU测试程序测试:仅修改包类型为0x80,偏移地址offset=0x0,长度为0x10。
srio_read(0x0, 0x900300, 0x10);
void srio_read(Uint32 src, Uint32 dst, Uint32 len)
{
Uint8 lsu_no;
CSL_SrioDirectIO_ConfigXfr lsu_conf = {0};
/* Create an LSU configuration */
lsu_conf.srcNodeAddr = dst; /* Local address */
lsu_conf.dstNodeAddr.addressHi = 0;
lsu_conf.dstNodeAddr.addressLo = src; /* Remote address */
lsu_conf.byteCnt = len;
lsu_conf.idSize = 1; /* 16 bit device id */
lsu_conf.priority = 2; /* PKT priority is 2 */
lsu_conf.xambs = 0; /* Not an extended
address */
lsu_conf.dstId = LARGE_DEV_ID;
lsu_conf.intrReq = 0; /* No interrupts */
lsu_conf.pktType = 0x80;
/* write with no
response */
lsu_conf.hopCount = 0; /* Valid for
maintainance pkt */
lsu_conf.doorbellInfo = 0; /* Not a doorbell pkt */
lsu_conf.outPortId = 0; /* Tx on Port 0 */
lsu_no = SELECTED_LSU;
CSL_srioLsuSetup (hSrio, &lsu_conf, lsu_no);
/* Wait for the completion of transfer */
response.index = lsu_no;
do {
CSL_srioGetHwStatus (hSrio, CSL_SRIO_QUERY_LSU_BSY_STAT, &response);
} while(response.data == 1);
}