一种VxBusⅡ驱动架构PCI设备动态加载方法技术

技术编号:27058827 阅读:12 留言:0更新日期:2021-01-15 14:38
本发明专利技术涉及一种VxBus Ⅱ驱动架构PCI设备动态加载方法,属于PCI设备动态加载领域。本发明专利技术包括:按照树状拓扑结构对VxBus Ⅱ架构中的PCI设备进行遍历查找;比较每个PCI设备节点信息与用户传递的目的设备信息是否相符;指定设备的匹配机制,确认设备是满足要求的PCI兼容设备;进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。本发明专利技术实现操作系统在启动过程中并不加载驱动,可提高系统启动速度;驱动加载过程由上层应用决定,通过反复调用驱动入口函数,可实现多个PCI设备驱动的连续加载;上层应用容易获得驱动反馈的驱动加载状态,便于排查分析;按照VxBus Ⅱ驱动架构通用设计,实现probe和attach过程,安全可靠。

【技术实现步骤摘要】
一种VxBusⅡ驱动架构PCI设备动态加载方法
本专利技术属于PCI设备动态加载领域,具体涉及一种VxBusⅡ驱动架构PCI设备动态加载方法。
技术介绍
VxBus驱动架构具有以下特点:1.具有统一的驱动架构2.能够把设备组织成更为简单的拓扑结构3.加载和卸载设备驱动更加迅速4.提供了一种管理设备资源(比如配置空间、中断等等)的机制5.有效提升了驱动性能自VxWorks6.2操作系统引入了VxBus驱动架构,其成为了VxWorks操作系统未来驱动发展的方向,也是设计VxWorks操作系统中设备驱动的必经之路。经过几个版本的发展,VxBus驱动架构也在不断成熟,但是第一代VxBus在整体架构设计上存在固有缺陷,随着VxWorks7.0操作系统的推出,引入了第二代VxBus驱动架构,从根本上解决了VxBus一代架构设计中的问题,更加安全也更方面扩展,主要表现在以下几个方面:1.可自定义PCI设备的匹配机制,不拘泥于VendorID和DeviceID;2.驱动初始化过程完全脱离BSP和操作系统本身的限制,更接近Linux操作系统的框架结构设计;3.采用了新的内存设计模型,驱动初始化在基础内核加载完成进行,相比于在内核空间申请和释放内存的方式更加安全;4.采用FDT方式对设备进行配置,更加灵活。VxBusⅡ驱动架构整体设计理念更安全、更通用,但是其推出时间不长,基于VxBusⅡ架构设计的驱动动态加载技术还处于发展阶段,成熟化程度并不高,在这种情况下,本专利技术提出了一种简单、有效、可靠的VxBusⅡ驱动架构PCI设备动态加载方法,并且经过工程试验验证。
技术实现思路
(一)要解决的技术问题本专利技术要解决的技术问题是如何提供一种VxBusⅡ驱动架构PCI设备动态加载方法,以解决VxBusⅡ驱动架构下PCI设备的动态加载问题。(二)技术方案为了解决上述技术问题,本专利技术提出一种VxBusⅡ驱动架构PCI设备动态加载方法,该方法包括如下步骤:S1、按照树状拓扑结构对VxBusⅡ架构中的PCI设备进行遍历查找;S2、比较每个PCI设备节点信息与用户传递的目的设备信息是否相符;S3、指定设备的匹配机制,确认设备是满足要求的PCI兼容设备;S4、进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。进一步地,所述步骤S1具体包括如下步骤:S11、定义查找设备入口函数;S12、获取PCI设备拓扑结构的根节点;S13、设备节点指针pDev指向树状拓扑结构的第一个非空设备链表;S14、在这个链表下,从总线0开始遍历PCI设备;S15、查找下一个非空设备链表;S16、重复S14的过程,直到所有设备链表遍历完成。进一步地,所述步骤S2具体包括如下步骤:S21、定义传入参数函数,传入参数为目标设备信息;S22、将用户传入的参数转换成VxBusⅡ识别的设备名称;S23、对步骤S1中遍历的设备信息与S22中转换完成的设备信息进行比对,如果相符进入步骤S3。进一步地,所述步骤S22的转换方法为:对于PCI设备,在其厂商ID和设备ID之前加入字符串pci_device。进一步地,所述步骤S3具体包括:S31、将步骤S2中查找到的设备指针转换成VXB_DEV_ID格式;S32、定义Probe函数,在系统扩展容器资源链表中寻找一个VXB_DEV_ID类型的容器;S33、传递设备指针,根据S32中机制对设备进行匹配测试。进一步地,所述步骤S4具体包括如下步骤:S41、定义Attach函数;S42、根据设备驱动结构表在设备链表空间分配扩展资源;S43、初始化设备PCI配置空间;S44、在操作系统中注册PCI设备的属性参数,回调函数;S45、生成设备在VxBus中的设备指针并反馈给应用软件。进一步地,所述动态加载方法由上层应用决定,通过反复调用驱动入口函数,实现多个PCI设备驱动的连续加载。本专利技术还提供一种VxBusⅡ驱动架构PCI设备动态加载方法,该方法包括如下步骤:(1)对于非系统自带驱动的PCI设备,在操作系统启动完成后,由上层应用执行动态加载;(2)按照树状拓扑结构对VxBusⅡ结构下的PCI设备进行遍历;(3)自定义查找参数和匹配机制,完成设备probe过程;(4)调用attach过程,在VxBusⅡ下分配资源,创建设备索引并注册到操作系统中。(三)有益效果本专利技术提出一种VxBusⅡ驱动架构PCI设备动态加载方法,本专利技术的特点在于:第一,按照树状拓扑结构对VxBusⅡ架构中的PCI设备进行遍历查找和目标设备匹配;第二,自定义指定设备的匹配机制,确认设备是满足要求的PCI兼容设备;第三,进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。本专利技术的优点在于:(1)操作系统在启动过程中并不加载驱动,可提高系统启动速度(2)驱动加载过程由上层应用决定,通过反复调用驱动入口函数,可实现多个PCI设备驱动的连续加载;(3)上层应用容易获得驱动反馈的驱动加载状态,便于排查分析。(4)按照VxBusⅡ驱动架构通用设计,实现probe和attach过程,安全可靠。附图说明图1为本专利技术PCI设备驱动在VxBusⅡ驱动架构下的动态加载流程图。具体实施方式为使本专利技术的目的、内容和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。本专利技术属于第二代VxBus驱动架构下PCI设备动态加载技术。VxBus设备驱动架构提供了一种统一的、独立于BSP的驱动架构模型,第二代VxBus驱动架构从根本上进行了升级,改进了最初的设计和实现方式。在这种驱动架构下,集成了一部分PCI设备的驱动,对于特殊PCI设备,需要自己开发驱动,而之前将驱动加在BSP中进行引导的方式已经不在适用,而放到VIP工程中驱动通用性不强。在这种情况下,本专利技术提出了一种在第二代VxBus驱动架构下PCI设备动态加载技术,填补了在这领域中的空白。本专利技术的目的是实现PCI设备驱动在VxBusⅡ驱动架构下的动态加载技术。所谓动态加载,是指驱动在操作系统启动过程中不挂载设备,而是操作系统启动完成后,用户可以在自己的应用软件或通过终端随时调用驱动入口函数,完成设备加载的技术。为实现上述目的,本专利技术包括如下步骤:S1、按照树状拓扑结构对VxBusⅡ架构中的PCI设备进行遍历查找;S2、比较每个PCI设备节点信息与用户传递的目的设备信息是否相符;S3、指定设备的匹配机制,确认设备是满足要求的PCI兼容设备;S4、进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。通过以上步骤,可本文档来自技高网
...

【技术保护点】
1.一种VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,该方法包括如下步骤:/nS1、按照树状拓扑结构对VxBusⅡ架构中的PCI设备进行遍历查找;/nS2、比较每个PCI设备节点信息与用户传递的目的设备信息是否相符;/nS3、指定设备的匹配机制,确认设备是满足要求的PCI兼容设备;/nS4、进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。/n

【技术特征摘要】
1.一种VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,该方法包括如下步骤:
S1、按照树状拓扑结构对VxBusⅡ架构中的PCI设备进行遍历查找;
S2、比较每个PCI设备节点信息与用户传递的目的设备信息是否相符;
S3、指定设备的匹配机制,确认设备是满足要求的PCI兼容设备;
S4、进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。


2.如权利要求1所述的VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,所述步骤S1具体包括如下步骤:
S11、定义查找设备入口函数;
S12、获取PCI设备拓扑结构的根节点;
S13、设备节点指针pDev指向树状拓扑结构的第一个非空设备链表;
S14、在这个链表下,从总线0开始遍历PCI设备;
S15、查找下一个非空设备链表;
S16、重复S14的过程,直到所有设备链表遍历完成。


3.如权利要求1或2所述的VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,所述步骤S2具体包括如下步骤:
S21、定义传入参数函数,传入参数为目标设备信息;
S22、将用户传入的参数转换成VxBusⅡ识别的设备名称;
S23、对步骤S1中遍历的设备信息与S22中转换完成的设备信息进行比对,如果相符进入步骤S3。


4.如权利要求3所述的VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,所述步骤S22的转换方法为:对于PCI设备,在其厂商ID和设备ID之前加入字符串pci_de...

【专利技术属性】
技术研发人员:唐亮
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:天津;12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1