CN112230998A - 一种VxBusⅡ驱动架构PCI设备动态加载方法 - Google Patents

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

Info

Publication number
CN112230998A
CN112230998A CN202011095130.XA CN202011095130A CN112230998A CN 112230998 A CN112230998 A CN 112230998A CN 202011095130 A CN202011095130 A CN 202011095130A CN 112230998 A CN112230998 A CN 112230998A
Authority
CN
China
Prior art keywords
pci
equipment
vxbus
loading
dynamic loading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011095130.XA
Other languages
English (en)
Inventor
唐亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Jinhang Computing Technology Research Institute
Original Assignee
Tianjin Jinhang Computing Technology Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin Jinhang Computing Technology Research Institute filed Critical Tianjin Jinhang Computing Technology Research Institute
Priority to CN202011095130.XA priority Critical patent/CN112230998A/zh
Publication of CN112230998A publication Critical patent/CN112230998A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

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

Description

一种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和Device ID;
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、进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载。
通过以上步骤,可以实现PCI设备驱动在VxBus Ⅱ驱动架构下的动态加载。
结合图1,为了实现PCI设备驱动在VxBus Ⅱ驱动架构下的动态加载技术,我们按照VxBus Ⅱ驱动架构的组织原理,在满足设备驱动挂载机制的前提下,找出驱动动态加载的方式,下面对本发明的内容作进一步描述。
1、按照树状拓扑结构对VxBus Ⅱ架构中的PCI设备进行遍历查找
S11、定义查找设备入口函数;
S12、获取PCI设备拓扑结构的根节点;
S13、设备节点指针pDev指向树状拓扑结构的第一个非空设备链表
S14、在这个链表下,从总线0开始遍历PCI设备。
S15、查找下一个非空设备链表
S16、重复S14的过程,直到所有设备链表遍历完成。
2、比较每个PCI设备节点信息与用户传递的目标设备信息是否相符
S21、定义传入参数函数,传入参数为目标设备信息;
S22、将用户传入的参数转换成VxBus Ⅱ识别的设备名称,对于PCI设备,在其厂商ID和设备ID之前加入字符串pci_device;
S23、对步骤S1中遍历的设备信息与S22中转换完成的设备信息进行比对,如果相符进入步骤S3。
3、指定设备的匹配机制,确认设备是满足要求的PCI兼容设备
S31、将步骤S2中查找到的设备指针转换成VXB_DEV_ID格式
S32、定义Probe函数,在系统扩展容器资源链表中寻找一个VXB_DEV_ID类型的容器;
S33、传递设备指针,根据S32中机制对设备进行匹配测试。
4、定义Attach函数,进行设备驱动资源的分配,寄存器地址的映射,初始化设备并完成设备在操作系统的挂载,该函数实现如下功能
S41、定义Attach函数
S42、根据设备驱动结构表在设备链表空间分配扩展资源
S43、初始化设备PCI配置空间
S44、在操作系统中注册PCI设备的属性参数,回调函数
S45、生成设备在VxBus中的设备指针并反馈给应用软件。
为实现上述目的,本发明还提供如下步骤:
(1)对于非系统自带驱动的PCI设备,实现在操作系统启动完成后,由上层应用执行动态加载;
(2)按照树状拓扑结构对VxBus Ⅱ结构下的PCI设备进行遍历;
(3)自定义查找参数和匹配机制,完成设备probe过程;
(4)调用attach过程,在VxBus Ⅱ下分配资源,创建设备索引并注册到操作系统中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (8)

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_device。
5.如权利要求3所述的VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,所述步骤S3具体包括:
S31、将步骤S2中查找到的设备指针转换成VXB_DEV_ID格式;
S32、定义Probe函数,在系统扩展容器资源链表中寻找一个VXB_DEV_ID类型的容器;
S33、传递设备指针,根据S32中机制对设备进行匹配测试。
6.如权利要求5所述的VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,所述步骤S4具体包括如下步骤:
S41、定义Attach函数;
S42、根据设备驱动结构表在设备链表空间分配扩展资源;
S43、初始化设备PCI配置空间;
S44、在操作系统中注册PCI设备的属性参数,回调函数;
S45、生成设备在VxBus中的设备指针并反馈给应用软件。
7.如权利要求1所述的VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,所述动态加载方法由上层应用决定,通过反复调用驱动入口函数,实现多个PCI设备驱动的连续加载。
8.一种VxBusⅡ驱动架构PCI设备动态加载方法,其特征在于,该方法包括如下步骤:
(1)对于非系统自带驱动的PCI设备,在操作系统启动完成后,由上层应用执行动态加载;
(2)按照树状拓扑结构对VxBusⅡ结构下的PCI设备进行遍历;
(3)自定义查找参数和匹配机制,完成设备probe过程;
(4)调用attach过程,在VxBusⅡ下分配资源,创建设备索引并注册到操作系统中。
CN202011095130.XA 2020-10-14 2020-10-14 一种VxBusⅡ驱动架构PCI设备动态加载方法 Pending CN112230998A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011095130.XA CN112230998A (zh) 2020-10-14 2020-10-14 一种VxBusⅡ驱动架构PCI设备动态加载方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011095130.XA CN112230998A (zh) 2020-10-14 2020-10-14 一种VxBusⅡ驱动架构PCI设备动态加载方法

Publications (1)

Publication Number Publication Date
CN112230998A true CN112230998A (zh) 2021-01-15

Family

ID=74112664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011095130.XA Pending CN112230998A (zh) 2020-10-14 2020-10-14 一种VxBusⅡ驱动架构PCI设备动态加载方法

Country Status (1)

Country Link
CN (1) CN112230998A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030231660A1 (en) * 2002-06-14 2003-12-18 Bapiraju Vinnakota Bit-manipulation instructions for packet processing
CN109508202A (zh) * 2018-09-27 2019-03-22 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 嵌入式操作系统的驱动开发系统、方法及介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030231660A1 (en) * 2002-06-14 2003-12-18 Bapiraju Vinnakota Bit-manipulation instructions for packet processing
CN109508202A (zh) * 2018-09-27 2019-03-22 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 嵌入式操作系统的驱动开发系统、方法及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
YZ2010: "VXBUS", 《百度 HTTPS://BLOG.CSDN.NET/YZ2010/ARTICLE/DETAILS/52334207》 *
李凯: "基于VPX的高性能嵌入式系统驱动与管理技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
李跃文: "基于VxWorks中间件设计与研究", 《测控技术》 *

Similar Documents

Publication Publication Date Title
CN109034814B (zh) 基于以太坊虚拟机的智能合约处理方法和装置
US8347318B2 (en) Application component communication apparatus of SCA-based system and method thereof
CN109324912B (zh) 面向软件通信体系结构的应用管理类软件的通信方法
WO2019205828A1 (zh) Android服务框架、实现扩展服务的方法及装置
CN108804100B (zh) 创建界面元素的方法、装置、存储介质及移动终端
CN110297670A (zh) 一种提高容器云上分布式任务训练效率的方法及系统
CN110308986A (zh) 基于优化调度的容器云上分布式训练数据通信的方法
US10078532B2 (en) Resource management method and device for terminal system among multiple operating systems
CN113253640B (zh) 飞控计算机及其通用硬件抽象层
CN110198364A (zh) 基于指定dns解析的容器云上分布式训练数据通信的方法
WO2021175105A1 (zh) 连接方法、装置、设备和存储介质
CN112230998A (zh) 一种VxBusⅡ驱动架构PCI设备动态加载方法
CN116724543A (zh) 容器集群的管理方法和装置
CN116680209A (zh) 基于wasm的多智能合约实例管理方法
CN110413285A (zh) 一种部署云端服务的方法以及开发云端服务的方法
CN115134427B (zh) 通信协议协调方法、装置、计算机设备和存储介质
CN115437647A (zh) 适配多框架的微服务部署方法、装置、终端及存储介质
CN113568603B (zh) 组件对象创建及接口方法调用方法、终端及存储装置
CN113193981B (zh) 一种配置下发方法及装置、网络系统
CN113810402B (zh) 多协议适配方法和系统,计算机设备,存储介质
CN112637037B (zh) 跨地域容器通讯系统、方法、存储介质及计算机设备
US20210173620A1 (en) System and method for providing integrated development environment
CN112559199A (zh) 在glibc环境下控制安卓蓝牙的装置、方法及终端设备
CN103064676A (zh) 一种对开放服务网关中组件的控制方法
CN114416222A (zh) 应用程序调用驱动接口的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20210115

RJ01 Rejection of invention patent application after publication