CN110908785A - 一种基于优先级的数据驱动的扁平化设备驱动方法 - Google Patents
一种基于优先级的数据驱动的扁平化设备驱动方法 Download PDFInfo
- Publication number
- CN110908785A CN110908785A CN201911123015.6A CN201911123015A CN110908785A CN 110908785 A CN110908785 A CN 110908785A CN 201911123015 A CN201911123015 A CN 201911123015A CN 110908785 A CN110908785 A CN 110908785A
- Authority
- CN
- China
- Prior art keywords
- priority
- equipment
- driver
- queue
- drive
- 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
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000003068 static effect Effects 0.000 claims abstract description 6
- 230000001419 dependent effect Effects 0.000 claims abstract description 4
- 239000000523 sample Substances 0.000 claims description 2
- 238000001514 detection method Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002093 peripheral effect Effects 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
Abstract
本发明公开了一种基于优先级的数据驱动的扁平化设备驱动方法,驱动程序使用设备树或高级配置与电源接口作为设备数据源,使用静态定义或者动态加载的方式顺序加入驱动优先级所对应的列表中,每个驱动队列具有不同的优先级;低优先级列表中的驱动依赖于高优先级列表中的驱动。所述驱动程序初始化时,根据优先级从高到低的顺序访问驱动队列,调用驱动队列中每个驱动的探测函数,从设备数据源中获取设备并进行匹配,并在匹配成功后对设备进行初始化。本发明方法能够简化驱动开发和配置,减少设备驱动框架开支,具有规范驱动开发,降低驱动开发工作量,提升驱动效率的效果。
Description
技术领域
本发明属于操作系统设备驱动领域,涉及一种基于优先级的数据驱动的扁平化设备驱动方法。
背景技术
设备驱动模块的存在一般需要解决如下三个方面的问题:第一,设备驱动在不同硬件平台之间的共享;第二,设备驱动在不同硬件平台上的配置;第三,设备驱动之间的依赖关系,包括:总线设备对总线控制器设备的依赖;同一总线上或不同总线上设备之间的依赖。
现有操作系统的驱动方法分为3类:第一,没有统一的驱动模型,需要为每个硬件平台单独开发驱动;第二,具有统一的驱动模型,但是配置信息与具体BSP(板级支持包)和设备驱动捆绑在一起,需要根据不同的硬件平台修改代码,并在操作系统源代码中为每个硬件平台保留配置信息;第三,具有统一的驱动模型,使用自定义的数据结构或者DeviceTree(设备树)/ACPI(高级配置与电源接口)等作为配置方式,并使用树状结构来保存设备信息和初始化设备,能够实现数据驱动,但是使用驱动之间直接接口调用或者初始化流程反复失败重试的方式。
发明内容
本发明的目的是为了克服已有技术的缺陷,简化驱动开发和配置,减少设备驱动框架开支,提升设备驱动效率,提出一种基于优先级的数据驱动的扁平化设备驱动方法。
本发明采用的技术方案为:
一种基于优先级的数据驱动的扁平化设备驱动方法,驱动程序使用设备树或高级配置与电源接口作为设备数据源,使用静态定义或者动态加载的方式顺序加入驱动优先级所对应的列表中,每个驱动队列具有不同的优先级;低优先级列表中的驱动依赖于高优先级列表中的驱动。
具体地,所述驱动程序初始化时,根据优先级从高到低的顺序访问驱动队列,调用驱动队列中每个驱动的探测函数,从设备数据源中获取设备并进行匹配,并在匹配成功后对设备进行初始化。
具体地,设备以扁平化的形式添加到通用或子系统的设备队列中。
本发明方法对比已有技术,能够简化驱动开发和配置,减少设备驱动框架开支,具有规范驱动开发,降低驱动开发工作量,提升驱动效率的效果。
附图说明
图1为本发明实施方式的设备驱动框架图;
图2为本发明实施方式的初始化流程图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
一种基于优先级的数据驱动的扁平化设备驱动方法,其基本实施过程如下:
本发明使用自定义的数据结构或者Device Tree(设备树)/ACPI(高级配置与电源接口)作为设备数据源,不在源代码中保留硬件平台和设备的配置信息;将设备驱动根据需要使用静态定义或者动态加载的方式顺序加入驱动优先级所对应的列表中;每个驱动队列具有不同的优先级;低优先级列表中的驱动依赖于高优先级列表中的驱动;操作系统在初始化时,根据优先级从高到低的顺序访问驱动队列,调用驱动队列中每个驱动的探测函数,从设备数据源中获取设备并进行匹配,并在匹配成功后对设备进行初始化;所有驱动之间只存在优先级关系,即初始化顺序关系,不存在上下级关系;设备驱动的优先级可以根据需要增删;设备以扁平化的形式添加到通用或子系统的设备队列中;主要通过将驱动划分成不同的优先级来解决设备之间的依赖关系;通过将设备注册到子系统的方式,将设备之间依赖转换成对设备对子系统的依赖,辅助解决设备之间的依赖关系。通过可以子系统提供的可选的通知回调机制,使得设备对子系统的访问延后执行,辅助解决设备之间的复杂依赖关系。
图1为设备驱动框架图,其具体驱动方法的实现过程如下:
步骤一、实现设备基础库,提供如下必须功能:
1)提供设备配置数据解析功能,可以使用自定义数据结构、设备树或ACPI;
2)定义设备的描述结构,包含设备的描述信息,配置信息,驱动信息等;
3)定义驱动的描述结构,包含驱动的描述信息,以及用于与设备匹配的探测函数指针和用于初始化设备的初始化函数指针等;
4)实现设备队列初始化功能,初始化通用设备队列,并利用1)提供的设备配置数据解析功能,将静态配置到硬件平台中的设备添加到通用设备队列中;图2为初始化的流程顺序图。
5)实现驱动的静态定义功能,将驱动静态添加到相应驱动队列;
6)实现驱动探测和初始化函数,为指定驱动调用3)定义的驱动描述结构中的探测函数,遍历通用设备队列,检查是否匹配;或者匹配成功后调用3)定义的驱动描述结构中的初始化函数进行初始化;
7)实现驱动队列遍历并初始化功能,为指定优先级的驱动队列中的每个驱动执行6)实现的驱动探测和初始化函数。
8)实现设备的动态添加功能,将通过总线扫描或热插拔等方式得到的动态设备添加到通用设备队列,并调用7)实现的驱动队列遍历并初始化功能遍历指定优先级的驱动队列;
9)将7)实现的驱动队列遍历并初始化功能添加到操作系统初始化流程的合适位置,即该功能需要的功能模块可以正常使用之后,按照优先级顺序为所有驱动队列执行该功能。
设备基础库提供后续步骤需要的基本功能。
步骤二、实现必须的设备子系统,包括中断子系统、定时器子系统、PCI(外设组件互连标准)子系统(x86处理器架构必须)等,提供如下必须功能:
1.定义子系统对应设备的描述结构,包含设备的描述信息,以及用于操作设备的函数指针等;
2.实现子系统对应设备的注册功能,用于将设备添加到子系统的设备队列中;
3.实现子系统对应设备的控制功能,解除其他设备对子系统对应设备的直接依赖关系;
4.对于PCI总线控制器等总线类设备,实现总线扫描功能,用以扫描总线上的子设备并调用
5.可选的实现通知队列回调函数注册功能,使得依赖于子系统对应设备的其他设备可以在期待的子系统对应设备设备初始化完成后再进行相应的操作;
6.可选的实现子系统初始化函数,并放到步骤一中9)提到的驱动队列遍历并初始化操作之前。
设备子系统用于简化驱动开发,并辅助解决设备之间的依赖关系。
步骤三、根据子系统和具体硬件平台的的要求实现设备驱动,已静态配置或动态调用子系统接口的方式注册到对应的子系统。
步骤四、根据已实现的设备驱动的要求,使用自定义数据结构、设备树、ACPI等方式创建设备配置数据。
自此,就完成了/实现了基于优先级的数据驱动的扁平化设备驱动方法。
Claims (3)
1.一种基于优先级的数据驱动的扁平化设备驱动方法,其特征在于,驱动程序使用设备树或高级配置与电源接口作为设备数据源,使用静态定义或者动态加载的方式顺序加入驱动优先级所对应的列表中,每个驱动队列具有不同的优先级;低优先级列表中的驱动依赖于高优先级列表中的驱动。
2.根据权利要求1所述的扁平化设备驱动方法,其特征在于,所述驱动程序初始化时,根据优先级从高到低的顺序访问驱动队列,调用驱动队列中每个驱动的探测函数,从设备数据源中获取设备并进行匹配,并在匹配成功后对设备进行初始化。
3.根据权利要求1所述的扁平化设备驱动方法,其特征在于,设备以扁平化的形式添加到通用或子系统的设备队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911123015.6A CN110908785A (zh) | 2019-11-16 | 2019-11-16 | 一种基于优先级的数据驱动的扁平化设备驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911123015.6A CN110908785A (zh) | 2019-11-16 | 2019-11-16 | 一种基于优先级的数据驱动的扁平化设备驱动方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110908785A true CN110908785A (zh) | 2020-03-24 |
Family
ID=69816877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911123015.6A Pending CN110908785A (zh) | 2019-11-16 | 2019-11-16 | 一种基于优先级的数据驱动的扁平化设备驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110908785A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630076A (en) * | 1995-05-05 | 1997-05-13 | Apple Computer, Inc. | Dynamic device matching using driver candidate lists |
CN104572165A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾服务器的uefi固件实现方法 |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
CN109656844A (zh) * | 2018-12-03 | 2019-04-19 | 郑州云海信息技术有限公司 | 一种AT24xx EEPROM驱动方法和装置 |
-
2019
- 2019-11-16 CN CN201911123015.6A patent/CN110908785A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5630076A (en) * | 1995-05-05 | 1997-05-13 | Apple Computer, Inc. | Dynamic device matching using driver candidate lists |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
CN104572165A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾服务器的uefi固件实现方法 |
CN109656844A (zh) * | 2018-12-03 | 2019-04-19 | 郑州云海信息技术有限公司 | 一种AT24xx EEPROM驱动方法和装置 |
Non-Patent Citations (1)
Title |
---|
沈利香,郭麦成,黄兆祥,陈中举: "基于WDM的设备驱动程序设计" * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8572159B2 (en) | Managing device models in a virtual machine cluster environment | |
US9921949B2 (en) | Software testing | |
US20080162764A1 (en) | Processing method and processing device for a hardware interrupt | |
US7111200B2 (en) | Apparatus and method for debugging a logical partition | |
US7016826B2 (en) | Apparatus and method of developing software for a multi-processor chip | |
CN112764981B (zh) | 一种协同测试系统及方法 | |
CN114443221A (zh) | 基于buildah构建跨平台容器镜像的方法、系统及电子设备 | |
CN110908785A (zh) | 一种基于优先级的数据驱动的扁平化设备驱动方法 | |
CN112162919A (zh) | 车载设备的调试方法、调试系统及计算机可读存储介质 | |
CN108376087B (zh) | 一种电子设备的启动控制方法、装置及服务器 | |
US7447618B2 (en) | Method and system for ASIC simulation | |
CN115374017A (zh) | 一种仿真运行可执行文件时抓取现场的方法及计算设备 | |
CN111367799B (zh) | 定位源代码崩溃位置的方法、装置、介质及电子设备 | |
CN116414589A (zh) | 车载操作系统、调试系统及方法、电子设备及存储介质 | |
CN112363906B (zh) | 一种测试数据处理装置和方法 | |
US5504920A (en) | Video driver system for communicating device specific primitive commands to multiple video controller types | |
CN113609052A (zh) | 基于fpga和微处理器的芯片模拟系统及实现方法 | |
CN111459564A (zh) | boot阶段初始化兼容的实现方法、系统及计算机设备 | |
CN117408060B (zh) | 整车模型仿真性能优化方法、存储介质和电子设备 | |
CN116661859B (zh) | 一种mcu外设电路模块的驱动方法、装置、终端设备 | |
CN113657069B (zh) | 片上系统soc仿真验证方法、装置、验证服务器及存储介质 | |
US20220398083A1 (en) | Providing system updates in automotive contexts | |
US8555046B2 (en) | Computer system and its HW abstraction method | |
EP3961389A1 (en) | Virtual machine for developing and testing target code for hardware designs | |
KR20240009779A (ko) | 차량용 소프트웨어 플랫폼의 시뮬레이션을 위한 디바이스 드라이버 가상화 장치 및 방법 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200324 |