TI中文支持网
TI专业的中文技术问题搜集分享网站

通过TMS320C6455EVM板测试 maintenance read/write 功能

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);
}

Shine:

把byteCnt设成4试试。

bin wang3:

回复 Shine:

TI员工:你好!

bytecnt设置为4故障未变化。

后来测试Maintenance write,成功执行;通过IO读取写入数据内容,完全正确。但Maintenance read仍不成功。

在执行Maintenance read命令后,读取本地SP0_ERR_STAT(1158h)寄存器内容,寄存器内容为0x12,PORT_WRITE_PND位为1,表示:The port has encountered a condition which required it to initiate a Maintenance Port-write operation.

在执行Maintenance write命令后,读取本地SP0_ERR_STAT(1158h)寄存器内容,寄存器内容为0x2,PORT_WRITE_PND位为0。

qian cui:

回复 Shine:

你好,我使用的是C6678, 通过maintenance read读取SW的偏移为0的寄存器值,结果显示为0, 但是通过I2C读出来的是正确的。NWRITE都是成功的(DSP通过SW给FPGA发送数据)。maintenance read配置和MWRITE的配置基本一致,就是ftype和ttype以及hopcounter和byteCnt不一样。ftype=8, ttype=0, hop_counter=0, byteCnt = 4。请问还需要检查那个方面?

赞(0)
未经允许不得转载:TI中文支持网 » 通过TMS320C6455EVM板测试 maintenance read/write 功能
分享到: 更多 (0)