买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
摘要:本发明公开一种支持多进程的FPGAxdma驱动方法,本方法在不改变硬件的情况下,通过驱动程序实现对多进程、多用户的支持,最大支持数量可配置,可实现多进程的同时读写操作,传输过程不丢包,通道间数据互相独立,单个进程的阻塞不会影响其他进程,应用程序操作简单,只需对设备节点进行读写即可完成,传输速率大幅优于原生驱动程序。本方法同时兼顾速率与时效性,大数据量传输时可保证速率,少量数据传输时可保证时效性,减少CPU占用。
主权项:1.一种支持多进程的FPGAxdma驱动方法,其特征在于:首先创建多个设备节点,每个设备节点对应一个进程,并创建多个FIFO与设备节点一一对应,FIFO用于缓存各个进程接收到的数据;各个进程封装私有协议后,通过对设备节点的读写实现数据接收和发送;单个设备节点同时只被一个进程打开;本方法实现数据写入的过程为:当应用程序通过设备节点写入数据后,调用驱动程序的写入接口,驱动程序的写入接口首先获取当前写入数据的设备节点编号,然后对后续代码进行加锁,根据设备节点号检查对应的接收FIFO空间是否充足,如果空间不足则直接返回0,待该进程将FIFO中的数据读取后再次写入,如果剩余空间充足,则将应用进程的数据拷贝到dmabuf中,对dma描述符进行相应配置并添加结束标识,如果当前描述符不是链表的首个,则清除前一个描述符的结束标识并将其下一个设置为当前描述符;随后执行唤醒操作,唤醒接收线程准备接收数据,如果描述符链表到达尾部,即当前描述符是描述符链表的最后一个,则启动发送,等待发送结束后返回应用进程写入的数量,如果当前描述符不是链表的最后一个,则设置延时时间,当延时时间到达后自动发送,如果延时时间到达前再次被设置,则前一次的延时时间被取消并重新计时;本方法实现数据读取的过程为:当应用程序通过设备节点读取数据时,调用驱动程序的读取接口,驱动程序的读取接口首先获取当前读取数据的设备节点编号,根据节点编号检查对应的FIFO是否有数据,如果没有数据直接返回0,如果有数据则读取私有协议头部,解析当前包的长度,根据长度将数据拷贝到应用程序的buf中,返回数据长度;本方法设有接收线程,接收线程启动时设定idle和busy两种状态下接收线程的运行时间,idle表示没有数据传输时的状态,busy表示持续有数据传输时的状态,随后接收线程开始循环执行以下操作:首先读取FPGA寄存器,判断是否有新数据到达,如果没有,则判断idle状态是否超时,如果超时则使接收线程进入休眠,等待被唤醒或者睡眠时间到达后重新设置idle和busy状态时接收线程运行时间;如果读取FPGA寄存器有新数据到达,则判断busy状态是否超时,如果超时则进入休眠,如果busy状态没有超时,则定位到描述链表的相应位置,读取数据,并根据协议解析数据,如果数据不符合协议则丢弃,如果符合协议则将数据存入对应的FIFO中,进行下一次循环。
全文数据:
权利要求:
百度查询: 山东华翼微电子技术股份有限公司 一种支持多进程的FPGA xdma驱动方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。