嵌入式开发者社区

标题: SRIO_LSU_Transfer传输的疑问 [打印本页]

作者: 朱宝军    时间: 2017-1-12 16:56
标题: SRIO_LSU_Transfer传输的疑问
我们知道srio传输就是设置lsu的几个寄存器(以nwrite传输为例),这几个寄存器作用是:
寄存器0和1表示目的端MEMORY地址支持64BIT地址
寄存器2表示传输端MEMORY地址支持32BIT范围
寄存器3表示一次传输的BYTE_COUNT,12个BIT表示一次传4KB数据,大于256B时物理层自动拆分
寄存器4表示输出口、目标ID、是否产生中断
寄存器5表示LSU传输的触发字,PACKET TYPE表示包类型 寄存器6状态寄存器,传输启动BUSY1,传输结束BUSY0
设置寄存器代码如下:
                SRIO_REGS->LSU[n].LSU_REG0 = 0;
                SRIO_REGS->LSU[n].LSU_REG1 = uiRemoteAddress;
                SRIO_REGS->LSU[n].LSU_REG2 = uiLocalAddress;
                SRIO_REGS->LSU[n].LSU_REG3 = byte_count;
                SRIO_REGS->LSU[n].LSU_REG4 = (uiDestID << 8)|(uiIdSize << 24)|(outPortId << 30);
                SRIO_REGS->LSU[n].LSU_REG5 = (packetType)|(hopCount << 8)|(doorbellInfo << 16);
由于reg0 reg1 reg2是代表源、目的memory地址,那么我们只能用相当于内存拷贝的方式(源地址的内容拷贝到目的地址)来传输数据了,假如我想把数据1,2,3,4......通过srio由dsp传到fpga,是不是我首先需要把这些数据暂时先存入到dsp端指定地址处,然后再用内存拷贝方式进行srio传输?


作者: human    时间: 2017-1-13 13:49
是的。
创龙有现成的案例可以参考的。




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4