[发明专利]一种基于Linux的PXI/PXIe总线设备驱动系统有效
申请号: | 202010504652.4 | 申请日: | 2020-06-05 |
公开(公告)号: | CN111857839B | 公开(公告)日: | 2023-06-27 |
发明(设计)人: | 毕硕;杜影;刘康丽;安佰岳;赵砚博 | 申请(专利权)人: | 北京航天测控技术有限公司 |
主分类号: | G06F9/4401 | 分类号: | G06F9/4401;G06F13/10 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 刘西云;李微微 |
地址: | 100041 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 linux pxi pxie 总线 设备 驱动 系统 | ||
本发明提供一种基于Linux的PXI/PXIe总线设备驱动系统,事先搭建好资源管理服务模块和内核驱动模块,在驱动新的PXI/PXIe总线设备时,只需要为不同PXI/PXIe总线设备写一个配置文件,再将新的配置文件加入资源管理服务模块,该新的PXI/PXIe总线设备接入Linux系统时,资源管理服务模块即可自动加载相应的内核驱动模块,也即成功加载PXI/PXIe总线设备的底层驱动,实现PXI/PXIe总线设备各种功能的通用接口,使开发人员只需要关注PXI/PXIe总线设备应用程序本身的逻辑关系,专注于用户空间驱动程序的开发,无需再关注硬件的具体操作,从而减少开发虚拟仪器驱动的工作量,简化PXI/PXIe总线设备的开发流程。
技术领域
本发明属于测试设备技术领域,尤其涉及一种基于Linux的PXI/PXIe总线设备驱动系统。
背景技术
PXI/PXIe总线设备大部分都是作为虚拟仪器使用,每种不同的仪器设备都需要相应的设备驱动。在Linux系统中基于PCI总线的做法是根据总线设备的具体情况开发内核模块以及用户空间的应用程序。内核驱动模块运行于内核空间,用于初始化、操作寄存器、处理中断等一些直接操作硬件的工作。为了把PXI/PXIe总线设备作为虚拟仪器使用还需要开发用户空间的应用程序来实现相应的功能。在做仪器应用程序开发时也要关注内核,对于不同的PXI/PXIe总线设备都要修改编译内核模块,需要进行很多重复性工作。
发明内容
为解决上述问题,本发明提供一种基于Linux的PXI/PXIe总线设备驱动系统,能够减少开发虚拟仪器驱动的工作量,简化PXI/PXIe总线设备的开发流程。
一种基于Linux的PXI/PXIe总线设备驱动系统,包括资源管理服务模块与内核驱动模块,其中,所述内核驱动模块包括初始化子单元、探测子单元、输入输出子单元、块读子单元、块写子单元以及中断服务子单元;
所述资源管理服务模块用于存储待驱动的PXI/PXIe总线设备的配置文件,其中,所述配置文件包括厂家代码、仪器代码、中断标志寄存器、偏移地址、掩码以及回读数值;资源管理服务模块还用于根据Linux系统的system()函数来调用insmod命令加载所述初始化子单元;
所述初始化子单元用于被加载后,通过Linux系统内核中传递参数的宏module_param_array来获取资源管理服务模块中存储的配置文件,然后将其中的厂家代码和仪器代码存储于Linux系统中;
Linux系统探测当前接入的PXI/PXIe总线设备的配置文件与其自身存储的厂家代码和仪器代码是否匹配,若匹配成功,所述探测子单元用于将匹配成功的PXI/PXIe总线设备存储空间中所有bar寄存器的物理基地址分别映射为Linux系统内存的虚拟地址;同时,若匹配成功的PXI/PXIe总线设备的配置文件中包含有效的中断标志寄存器,则探测子单元还用于根据该PXI/PXIe总线设备存储空间中的中断号向Linux系统注册中断,使得发生该中断号的中断时,Linux系统可自动调用所述中断服务子单元;
用户空间程序调用匹配成功的PXI/PXIe总线设备时,使用Linux系统的ioctl函数将设定的CMD命令码传给输入输出子单元,其中,CMD命令码包括普通读写指令、块读指令以及块写指令;当CMD命令码为普通读写指令时,所述输入输出子单元从CMD命令码中解析出bar寄存器的物理基地址和寄存器地址偏移量,Linux系统获取该bar寄存器的物理基地址对应的虚拟地址与寄存器地址偏移量的和值,再确定该和值所在的虚拟地址对应的bar寄存器地址,然后用户空间程序从所述bar寄存器地址中读取或写入指定位数的数据;当CMD命令码为块读指令时,所述输入输出子单元用于从CMD命令码中解析并存储块读bar寄存器的物理基地址、寄存器地址偏移量以及读取方法,其中,所述读取方法包括读取一段寄存器或者循环读取同一个寄存器的同一位置;当CMD命令码为块写指令时,所述输入输出子单元用于从CMD命令码中解析并存储块写bar寄存器的物理基地址、寄存器地址偏移量以及写入方法,其中,所述写入方法包括写入一段寄存器或者循环写入同一个寄存器的同一位置;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航天测控技术有限公司,未经北京航天测控技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010504652.4/2.html,转载请声明来源钻瓜专利网。