CN112230998A - 一种VxBusⅡ驱动架构PCI设备动态加载方法 - Google Patents
一种VxBusⅡ驱动架构PCI设备动态加载方法 Download PDFInfo
- 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
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000008569 process Effects 0.000 claims abstract description 17
- 230000007246 mechanism Effects 0.000 claims abstract description 15
- 239000000523 sample Substances 0.000 claims abstract description 8
- 238000013507 mapping Methods 0.000 claims abstract description 6
- 238000012360 testing method Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 8
- 230000006870 function Effects 0.000 description 16
- 238000011161 development Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring 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
技术领域
本发明属于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Ⅱ下分配资源,创建设备索引并注册到操作系统中。
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)
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 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 嵌入式操作系统的驱动开发系统、方法及介质 |
-
2020
- 2020-10-14 CN CN202011095130.XA patent/CN112230998A/zh active Pending
Patent Citations (2)
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)
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 | |
CN105282765A (zh) | 一种管理配置信息的方法、设备及网元管理系统 | |
CN109324912B (zh) | 面向软件通信体系结构的应用管理类软件的通信方法 | |
CN110162314A (zh) | 一种软件升级管理的方法、服务器、终端、装置及存储介质 | |
WO2019205828A1 (zh) | Android服务框架、实现扩展服务的方法及装置 | |
CN111857801B (zh) | 一种移动应用的构建方法 | |
CN108804100B (zh) | 创建界面元素的方法、装置、存储介质及移动终端 | |
US20160378553A1 (en) | Resource Management Method and Device for Terminal System | |
CN101944033A (zh) | 一种嵌入式系统中动态支持多种协议的装置及方法 | |
CN112637037B (zh) | 跨地域容器通讯系统、方法、存储介质及计算机设备 | |
CN113253640B (zh) | 飞控计算机及其通用硬件抽象层 | |
WO2021175105A1 (zh) | 连接方法、装置、设备和存储介质 | |
CN112230998A (zh) | 一种VxBusⅡ驱动架构PCI设备动态加载方法 | |
CN117194039A (zh) | K8s驱动集成系统、请求处理方法、设备及存储介质 | |
CN116724543A (zh) | 容器集群的管理方法和装置 | |
CN116680209A (zh) | 基于wasm的多智能合约实例管理方法 | |
CN110413285A (zh) | 一种部署云端服务的方法以及开发云端服务的方法 | |
CN113810894A (zh) | 通信方法及装置、系统 | |
CN106648805A (zh) | 一种智能装置、智能系统及智能安装应用的方法 | |
CN110377298B (zh) | 一种分布式集群升级方法及分布式集群 | |
CN115134427B (zh) | 通信协议协调方法、装置、计算机设备和存储介质 | |
CN113810402B (zh) | 多协议适配方法和系统,计算机设备,存储介质 | |
US20210173620A1 (en) | System and method for providing integrated development environment | |
CN113568603A (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 |