发明名称 一种基于Linux系统的串行RapidIo数据传输方法
摘要 一种基于Linux系统的串行RapidIo数据传输方法,利用少量的DMA控制器资源,采用DMA链表模式,并将DMA控制器的寄存器空间映射到FPGA,从而实现FPGA通过写CPU的DMA模式寄存器MRn的[CC]bit,开始DMA链表传输,从而发起rapidio链路的数据传输,整个数据传输过程无论是写DMA寄存器还是DMA搬运数据以及最后的rapidio链路数据传输都不需要CPU参与,极大的提高了CPU效率,并且数据传输严格按照时序要求实现,摆脱利用中断实现时序同时频繁响应中断带来的性能下降的困境;利用uio技术,实现内核空间地址到用户空间地址的映射,使得在用户空间可以直接操作内核空间地址,避免用户空间和内核空间的数据拷贝。并且可以设计DMA链表节点,实现rapidio链路输出窗口的数据传输的灵活控制。
申请公布号 CN102880573A 申请公布日期 2013.01.16
申请号 CN201210323404.5 申请日期 2012.09.04
申请人 武汉邮电科学研究院 发明人 秦燕婷
分类号 G06F13/28(2006.01)I 主分类号 G06F13/28(2006.01)I
代理机构 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人 严彦
主权项 一种基于Linux系统的串行RapidIo数据传输方法,其特征在于:设置支持rapidio接口的CPU和与CPU相连的对端设备,由对端设备产生时序;在初始化后进行数据传输,初始化过程包括以下子步骤,步骤1.1,采用DMA基本链表模式,建立DMA 链表,DMA 链表中的节点包括头节点和数据传输节点,每个rapidio输出窗口对应一个DMA链表的数据传输节点;DMA 链表中每个节点的数据结构包括源地址、目的地址、传输长度、下一个节点的地址Next link addr,Next link addr中设一个标志位End of link表示当前节点是否为最后一个节点;步骤1.2,申请所需的多个rapidio输出窗口,并申请每个rapidio输出窗口相应的内核DMA空间;步骤1.3,每一个内核DMA空间地址和相应的rapidio输出窗口的IO空间地址分别填入DMA链表中对应数据传输节点的源地址和目的地址,建立rapidio传输通道;步骤1.4,申请一个rapidio输入窗口,rapidio输入窗口的地址转换单元的源地址包含CPU的DMA寄存器的地址;同时在对端设备中申请一个输出窗口,并且对端设备的输出窗口和rapidio输入窗口有相同的rapidio空间的地址;步骤1.5,使用uio技术,将DMA链表、为rapidio输出窗口申请的内核DMA空间的所有存储空间都映射到用户空间;数据传输过程包括以下子步骤,步骤2.1,写步骤1.5使用uio技术映射到用户空间的存储空间,实现数据装入;步骤2.2,当数据装入完成后,在用户态清除DMA链表头结点的end of link标志位;步骤2.3,当对端设备产生的时序到了发起传输数据的时刻后,由对端设备通过步骤1.3建立的rapidio传输通道,写CPU的DMA寄存器,将CPU的DMA寄存器的模式寄存器的[CC]bit置1。
地址 430074 湖北省武汉市洪山区邮科院路88号