CN112612523B - 一种嵌入式设备驱动***及方法 - Google Patents
一种嵌入式设备驱动***及方法 Download PDFInfo
- Publication number
- CN112612523B CN112612523B CN202011501469.5A CN202011501469A CN112612523B CN 112612523 B CN112612523 B CN 112612523B CN 202011501469 A CN202011501469 A CN 202011501469A CN 112612523 B CN112612523 B CN 112612523B
- Authority
- CN
- China
- Prior art keywords
- driving
- layer
- equipment
- resource management
- data
- 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.)
- Active
Links
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Power Sources (AREA)
Abstract
本发明公开了一种嵌入式设备驱动***及方法,涉及嵌入式***技术领域,包括基于嵌入式实时操作***的驱动框架,所述驱动框架包括应用层、设备管理层和设备驱动层;所述应用层用于根据所述嵌入式实时操作***的操作信息生成控制指令,并下发所述控制指令给所述设备管理层;所述设备管理层用于将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;所述设备驱动层用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。本发明解决了现有嵌入式设备驱动***存在资源消耗较大,应用开发与硬件设备剥离不彻底的问题,提高了应用层操作***的开发效率及可靠性。
Description
技术领域
本发明涉及嵌入式***技术领域,尤其涉及一种嵌入式设备驱动***及方法。
背景技术
随着智能设备的建设与发展,作为终端的水表、气表、电能表等嵌入式设备需要承载的业务越来越多,其功能应用也越来越复杂,因此对嵌入式设备的驱动***的要求也逐渐增多。基于前后台***方案的嵌入式设备驱动***具有稳定可靠,资源占用少的优势,但其能承载的业务较少,随着业务的不断增加,基于前后台***方案的嵌入式设备驱动***已经很难满足业务扩展和任务实现性的需求。
目前有人提出引入成熟的嵌入式操作***到嵌入式设备的驱动***中,以提高任务响应的实现性,但这种方案存在资源消耗较大,应用开发与硬件设备剥离不彻底,可靠性得不到保障的问题。
因此,现有技术中,嵌入式设备的驱动***存在资源消耗较大和应用开发与硬件设备剥离不彻底的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于:提供一种基于嵌入式实时操作***的嵌入式设备驱动***及方法,旨在解决现有嵌入式设备驱动***存在应用开发与硬件设备剥离不彻底的技术问题。
本发明采用的技术方案如下:
为实现上述目的,第一方面,本发明提供了一种嵌入式设备驱动***,包括基于嵌入式实时操作***的驱动框架,所述驱动框架包括应用层、设备管理层和设备驱动层;
所述应用层用于根据所述嵌入式实时操作***的操作信息生成控制指令,并下发所述控制指令给所述设备管理层;
所述设备管理层用于将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
所述设备驱动层用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
可选地,上述嵌入式设备驱动***中,所述设备管理层包括设备注册接口模块、抽象设备访问接口模块和数据资源管理模块;
所述设备注册接口模块用于对设备进行注册,以构建与所述设备对应的抽象设备;
所述抽象设备访问接口模块用于根据所述应用层发送的控制指令,对抽象设备进行访问;
所述数据资源管理模块用于利用数据块划分算法对所述目标设备的数据资源进行分配,以及利用读写锁机制对所述目标设备的数据资源进行访问冲突处理。
可选地,上述嵌入式设备驱动***中,所述设备驱动层包括目标设备访问接口模块;
所述目标设备访问接口模块与所述抽象设备访问接口模块存在映射转换关系,以将所述控制指令映射转换为驱动指令;
所述目标设备访问接口模块用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
可选地,上述嵌入式设备驱动***中,所述驱动框架还包括公用资源管理层;
所述公用资源管理层用于根据生产者消费者模型对公用资源进行管理。
可选地,上述嵌入式设备驱动***中,所述公用资源管理层包括存储资源管理模块、显示资源管理模块和通信资源管理模块,以及数据缓存器;
所述存储资源管理模块用于对公用资源中的存储数据进行管理;
所述显示资源管理模块用于对公用资源中的显示数据进行管理;
所述通信资源管理模块用于对公用资源中的通信数据进行管理;
所述数据缓存器用于暂存对公用资源进行访问的任务的数据。
可选地,上述嵌入式设备驱动***中,所述公用资源管理层通过消息队列与所述应用层通讯;
所述消息队列用于接收所述应用层发送的任务,并根据所述任务的优先级进行处理,利用信号量机制实现所述应用层与所述公用资源管理层的资源互斥访问。
可选地,上述嵌入式设备驱动***中,所述驱动框架还包括API接口模块;
所述API接口模块用于接收所述嵌入式实时操作***的数据,进行映射转换后发送到所述应用层。
可选地,上述嵌入式设备驱动***中,所述驱动框架还包括运行状态管理模块;
所述运行状态管理模块用于对目标设备的格式化信息进行管理,并跟踪记录所述驱动框架的运行状态信息。
第二方面,本发明提供了一种设备驱动方法,所述方法应用于上述嵌入式设备驱动***中,所述方法包括以下步骤:
利用应用层,根据所述嵌入式实时操作***的操作信息生成控制指令,并发送所述控制指令给所述设备管理层;
利用设备管理层的抽象设备访问接口模块,根据所述控制指令对所述抽象设备进行访问;
利用所述目标设备访问接口模块与所述抽象设备访问接口模块之间的映射转换关系,将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
根据所述驱动指令,利用所述设备驱动层的目标设备访问接口模块,对目标设备进行访问,以控制所述目标设备进行对应的操作,从而实现所述应用层对所述目标设备的驱动控制。
可选地,上述设备驱动方法中,在实现所述应用层对所述目标设备的驱动控制的同时,所述方法还包括:
利用公用资源管理层,定义和配置数据缓存器;
创建消息队列,并根据信号量机制设定消息队列中互斥信号量的初始值;
利用应用层,发送任务到所述消息队列,根据所述任务的数量逐减所述互斥信号量;
利用公用资源管理层,根据所述任务的优先级从所述消息队列中获取待处理的任务;
根据所述待处理的任务,对公用资源管理层的资源进行访问,以对所述待处理的任务进行处理;
在对所述待处理的任务进行处理后,释放信号量,所述互斥信号量逐增,以使所述消息队列继续接收任务。
本发明提供的一个或多个技术方案,至少具有如下优点或技术效果:
本发明提出的一种嵌入式设备驱动***及方法,包括基于嵌入式实时操作***的驱动框架,所述驱动框架包括应用层、设备管理层和设备驱动层;本发明通过自定义的驱动框架和函数接口,将应用层生成的控制指令映射转换为驱动指令,实现在应用层对设备驱动层的访问,以控制目标设备进行对应的操作;本发明在引入嵌入式实时操作***的同时,可满足嵌入式设备逐渐增多的业务扩展和实时性的需求,减少***的资源消耗,实现了嵌入式设备的应用层与硬件设备的完全剥离,提高了应用层操作***的开发效率及可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明实施例一的一种嵌入式设备驱动***的驱动框架的结构示意图。
图2为本发明实施例一的一种嵌入式设备驱动***的驱动框架的接口模块示意图。
图3为本发明实施例一的一种嵌入式设备驱动***的驱动框架中数据资源管理模块的示意图。
图4为本发明实施例一的一种嵌入式设备驱动***的驱动框架中公用资源管理层的结构示意图。
图5为本发明实施例一的一种嵌入式设备驱动***的驱动框架中API接口模块的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
在本发明中,除非另有明确的规定和限定,术语“连接”、“固定”等应做广义理解,例如,“固定”可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连;可以是两个元件内部的连通,也可以是两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,全文中出现的“和/或”的含义,包括三个并列的方案,以“A和/或B”为例,包括A方案、或B方案、或A和B同时满足的方案。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
对现有技术的分析发现,对于有人提出的直接引入成熟的嵌入式操作***到嵌入式设备的驱动***中的方案,由于嵌入式操作***的应用比较广泛,种类也比较多,比如free RTOS、μC/OS、RT-Thread、Ali-Thing OS、MS-RTOS等等,这些操作***都是聚焦在通用嵌入式设备或物联网应用的操作***,虽然其中有些操作***提供了丰富的组件资源,可提高任务响应的实现性,但这些操作***大多存在资源消耗较大,应用开发与硬件设备剥离不彻底的问题,容易导致嵌入式设备驱动***也存在资源消耗大,以及可靠性得不到保障的问题。
鉴于现有技术中嵌入式设备驱动***存在资源消耗较大,应用开发与硬件设备剥离不彻底的技术问题,本发明提供了一种嵌入式设备驱动***,总体思路如下:
所述***包括基于嵌入式实时操作***的驱动框架,所述驱动框架包括设备驱动层、设备管理层和应用层;所述设备驱动层包括目标设备访问接口模块,所述目标设备访问接口模块用于根据所述设备管理层发送的指令对目标设备进行访问;所述设备管理层包括设备注册接口模块和抽象设备访问接口模块,所述设备注册接口模块用于根据所述设备驱动层的注册请求对目标设备进行注册,所述抽象设备访问接口模块用于根据所述应用层发送的指令对抽象设备进行访问,其中,所述抽象设备根据所述目标设备构建而成;其中,所述抽象设备访问接口模块与所述目标设备访问接口模块存在映射转换关系,以实现在所述应用层对所述设备驱动层的访问。
通过上述技术方案,本发明通过自定义驱动框架和其中的函数接口,在引入嵌入式实时操作***的同时,可满足嵌入式设备逐渐增多的业务扩展和实时性的需求,减少***的RAM资源消耗;实现了嵌入式设备的应用层与硬件设备的完全剥离,硬件设备的方案调整时,应用层操作***不会受影响,提高了应用层操作***的开发效率及可靠性;且支持多种嵌入式实时操作***,应用更广泛。
实施例一
参照图1至图5,本实施例提出了一种嵌入式设备驱动***,所述***应用于嵌入式设备,包括基于嵌入式实时操作***的驱动框架,如图1所示,为本发明的一种嵌入式设备驱动***的驱动框架的结构示意图,所述驱动框架包括应用层、设备管理层和设备驱动层;
所述应用层用于根据所述嵌入式实时操作***的操作信息生成控制指令,并下发所述控制指令给所述设备管理层;
所述设备管理层用于将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
所述设备驱动层用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
在具体实施方式中,所述嵌入式设备可以为电表、水表、气表等资源受限的嵌入式设备,所述驱动框架可以通俗理解为基于嵌入式实时操作***设计的软件平台,所述目标设备为嵌入式设备内的带电可擦可编程只读存储器(EEPROM)、闪存(flash存储器)、实时时钟(RTC)、显示器(LCD、LED)等设备。
具体的,所述控制指令包括读指令、写指令、关闭指令、查找指令、打开指令、初始化指令、复位指令、清除指令、中止指令、刷新指令、配置指令等等。本实施例可根据电能表应用的需求,通过驱动框架实现电能表的应用层与硬件设备完全剥离,提高应用层软件的开发效率及可靠性。
本实施例以电能表为例,为了满足电能表的业务扩展和实时性的需求,基于嵌入式实时操作***设计的驱动框架,是一组标准化的设备访问抽象接口定义。本实施例的嵌入式实时操作***作为一个可替换的操作***,可以根据后续的产品应用需求进行替换,而设备驱动***不需要进行重新开发,大大提高了本发明***的可共用性。
如图2所示,为本发明的一种嵌入式设备驱动***的驱动框架的接口示意图,可选地,所述设备管理层包括设备注册接口模块、抽象设备访问接口模块和数据资源管理模块;
所述设备注册接口模块用于对设备进行注册,以构建与所述设备对应的抽象设备;
所述抽象设备访问接口模块用于根据所述应用层发送的控制指令,对抽象设备进行访问;
所述数据资源管理模块用于利用数据块划分算法对所述目标设备的数据资源进行分配,以及利用读写锁机制对所述目标设备的数据资源进行访问冲突处理。
在具体实施方式中,所述设备驱动层获取设备信息后,利用所述设备注册接口模块对所述设备进行注册,获得所述设备的设备名称后,以该设备名称构建与所述设备对应的抽象设备;当应用层根据所述嵌入式实时操作***的操作信息生成控制指令并发送所述控制指令给所述设备管理层后,利用所述抽象设备访问接口模块根据所述控制指令对所述抽象设备进行访问。通过设备管理层的抽象定义,实现应用层与硬件设备完全解耦,硬件方案调整时,应用软件不受影响。
本实施例中,所述设备驱动层获取到EEPROM、flash存储器、RTC和LCD等设备后,对这些设备进行注册,比如,对EEPROM进行注册,定义其设备名称为DEV_EEP,再根据该设备名称构建EEPROM的抽象设备;
如图3所示,为本发明的一种嵌入式设备驱动***的驱动框架中数据资源管理模块的示意图,结合图3,对所述数据资源管理模块进行详细描述,所述数据资源管理模块合理定义和划分数据资源,将参数和运行数据分别划分为参数块和运行数据块,结合操作***信号量等资源,实现电能表数据资源访问读写锁控制,在解决RAM资源访问冲突的同时,提高RAM资源的互斥访问效率。
在具体实施方式中,数据块划分算法根据每个任务中RAM数据更新频率和数据特点对数据资源进行划分,如电压、电流、功率等瞬时量数据为一块(每秒更新),电量数据为一块(用户用电时每秒更新),参数数据为一块(用户输入时更新),电表运行状态信息为一块(电表运行状态发生变化时更新),每块数据定义一个读写锁进行数据读写控制。读写锁机制的特点为可以多个任务进行数据读操作,但同一时刻只能有一个任务进行写操作,写操作执行过程中读操作也不能执行。
可选地,所述设备驱动层包括目标设备访问接口模块;
所述目标设备访问接口模块与所述抽象设备访问接口模块存在映射转换关系,以将所述控制指令映射转换为驱动指令;
所述目标设备访问接口模块用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
在具体实施方式中,利用所述目标设备访问接口模块与所述抽象设备访问接口模块之间的映射转换关系,将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;再根据所述驱动指令,利用所述设备驱动层的目标设备访问接口模块,对目标设备进行访问,以控制所述目标设备进行对应的操作,从而实现所述应用层对所述目标设备的驱动控制。
可选地,结合图1所示,所述驱动框架还包括公用资源管理层;
所述公用资源管理层用于根据生产者消费者模型对公用资源进行管理。
具体的,在应用层对公用资源管理层的访问中,需要进行多个任务访问,就可能存在访问冲突的问题,本实施例中采用生产者消费者模型,应用层作为生产者,生产者就是生产数据的线程,公用资源管理层作为消费者,消费者就是消费数据的线程。
在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据,同样的,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者,这会耗费大量的处理时间。为了解决这个问题,引入了生产者消费者模型,通过一个容器来解决生产者和消费者的强耦合问题。
本实施例中,为了方便电能表应用层软件开发,结合电能表资源使用情况,设计的公用资源管理层,为应用层提供统一的资源管理,解决了公用资源访问冲突的问题。
可选地,如图4所示,为本发明的一种嵌入式设备驱动***的驱动框架中公用资源管理层的结构示意图,所述公用资源管理层包括存储资源管理模块、显示资源管理模块和通信资源管理模块,以及数据缓存器;
所述存储资源管理模块用于对公用资源中的存储数据进行管理;
所述显示资源管理模块用于对公用资源中的显示数据进行管理;
所述通信资源管理模块用于对公用资源中的通信数据进行管理;
所述数据缓存器用于暂存对公用资源进行访问的任务的数据。
具体的,通过公用资源管理层对存储资源、显示资源和通信资源等公用资源统一进行管理,解决了应用层多任务对公用资源访问冲突的问题。在具体实施过程中,对于多个生产者或者多个消费者共享队列的情况,容易出现两个或以上的进程同时读或写同一个队列的竞争情况。为了解决这个问题,需要寻找一种方法来互斥地执行临界区的代码。为了达到这个目的,在公用资源管理层定义数据缓存用的数据缓存器(buffer),数据缓存器是用于特定基本类型数据的一种容器,具体实施过程中,根据资源情况配置好数据缓存器的大小和数量,以在一定程度上优化公用资源管理层处理数据的效率。
具体的,在生产者消费者模型中,生产者和消费者彼此之间不直接通讯,而是通过队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给队列,消费者不找生产者要数据,而是直接从队列里取,队列的作用是携带信息进行任务间通信,相当于一个缓冲区,平衡了生产者和消费者的处理能力,这个队列就是用来给生产者和消费者解耦的。
可选地,所述公用资源管理层通过消息队列与所述应用层通讯;
所述消息队列用于接收所述应用层发送的任务,并根据所述任务的优先级进行处理,利用信号量机制实现所述应用层与所述公用资源管理层的资源互斥访问。
具体的,所述任务包括目标设备的名称、设备操作方法、数据缓存器的地址、数据缓存器的数据长度、任务ID和任务优先级中的至少一种。所述消息队列与普通的队列区别在于,当消息队列为空时,公用资源管理层从消息队列获取元素的操作将会被阻塞,直到消息队列中被放入了元素;当消息队列满时,往消息队列里存放元素的操作也会被阻塞,直到有元素从消息队列中被取出。
所述消息队列的深度根据所述公用资源管理层中数据缓存器的数量进行设定,本实施例设定消息队列的深度等于所述公用资源管理层所开辟数据缓存器的数量的总和。所述消息队列支持优先级处理,先处理高优先级任务,再处理低优先级任务,对于同优先级的多个任务,按先到先服务的机制进行处理。
所述消息队列配合操作***的信号量功能,利用信号量(Semaphore)机制实现所述应用层与所述公用资源管理层的资源互斥访问。其中,信号量机制是一种进程同步工具,用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理使用公用资源。具体的,根据互斥信号量和应答信号量进行信号量的等待和释放,等待和释放是针对同一个信号量的操作,是成对出现的;所述互斥信号量为计数信号量,根据已经定义和配置好的数据缓存器,设定所述信号量的初始值为所述公用资源管理层中数据缓存器的数量;所述应答信号量为二值信号量,根据所述公用资源管理层对任务的完成情况取值。
在具体实施方式中,在应用层发出公用资源访问申请的任务之前,先检查消息队列是否为满状态,即检查消息队列内未处理的任务的数量是否刚好是所述消息队列的深度;若消息队列内未处理的任务的数量小于所述消息队列的深度,即为空闲状态,则所述应用层可直接发送任务到消息队列;若消息队列内未处理的任务的数量刚好是所述消息队列的深度,即为满状态,则需等待消息队列归为空闲,此时,应用层不能发送任务到消息队列,需等待公用资源管理层从消息队列中获取未处理的任务,并根据所述未处理的任务的内容对所述数据存储器的资源进行访问,完成任务后才可发送。
在具体实施方式中,所述应用层发送公用资源访问申请的任务到消息队列,根据所述任务的数量逐减互斥信号量。具体为,应用层发送多个公用资源访问申请的任务到消息队列后,对应地,互斥信号量由原来的初始值减去所述多个任务的数量,直到当互斥信号量为0时,表示消息队列已满,这时应用层将无法发送新的任务到消息队列。其中,所述任务中申请的内容包括目标设备名称或虚拟文件名、设备操作方法、操作数据内容或数据缓存器地址、数据缓存器的数据长度、申请任务ID、消息紧急程度或自定义的任务优先级。
比如,在本实施例的电能表中,要同时对电能表进行电量处理和冻结,电量处理任务和冻结任务需要同时对EEPROM进行读写操作,则应用层通过消息队列同时向公用资源管理层发出两个公用资源访问申请的任务,信号量由初始值减去2。若信号量的初始值大于2,则应用层可继续发送其他任务到消息队列,若信号量的初始值等于2,则应用层无法再发送任务,需等待公用资源管理层反馈应答信号量,释放信号量后便可继续发送任务。
具体的,所述应用层成功发送任务后,消息队列未满时,应用层可以继续发送其他任务,也可以等待公用资源管理层反馈应答信息,具体根据任务操作类型来决定。比如,在本实施例的电能表中,如果是对EEPROM单独进行写操作,当发送完对EEPROM进行写操作的任务后,就可以继续发送后面的任务,因为后面的任务不受写操作的影响;而如果是对EEPROM单独进行读操作,当发送完对EEPROM进行读操作的访问申请后,则需要在接收到应答信息后才能继续后面的任务,因为后面的任务需要用到读操作读取到的数据才能正常执行。
在具体实施方式中,所述公用资源管理层根据所述任务的优先级从所述消息队列中获取待处理的任务。具体为,所述公用资源管理层定时对消息队列进行检查,检查到消息队列不为空后,表示消息队列有任务,则按消息队列中任务的优先级获取一个待处理的任务,同优先级的任务按先到先服务进行获取。
在具体实施方式中,根据所述待处理的任务对公用资源管理层的资源进行访问,同时,暂存所述待处理的任务的数据到所述公用资源管理层的数据缓存器中。具体为,获取到待处理的任务后,公用资源管理层对其进行处理,处理任务的过程为,先解析任务要访问的设备名称,设备操作方法,操作数据内容,再查询该任务要访问的目标设备是否空闲,若目标设备空闲,则根据设备操作方法和操作数据内容对设备进行访问,若目标设备不空闲,则等待设备空闲或处理下一个任务,采用的处理机制可根据实际情况选择。
在具体实施方式中,在所述公用资源管理层对所述待处理的任务进行处理后,释放信号量,所述互斥信号量逐增,以使所述消息队列继续接收所述应用层发送的任务。具体为,公用资源管理层完成所述待处理的任务后,反馈应答信号量,当所述应答信号量为空时,所述互斥信号量的释放由公用资源管理层完成,当所述应答信号量不为空时,所述互斥信号量的释放由应用层完成;释放信号量后,互斥信号量逐增,应用层便可继续发送任务到消息队列。
具体的,所述应答信号量的初始值为0,表示公用资源管理层中的任务处理未完成;当公用资源管理层中的任务处理完成后,判断是否有应答信息反馈给应用层;若有应答信息要反馈给应用层,则所述应答信号量不为空,即应答信号量为1,由应用层释放互斥信号量,互斥信号量加1,当应用层成功接收到所述应答信息后,应答信号量变为0;若没有应答信息要反馈给应用层,则所述应答信号量为空,即应答信号量为0,由公用资源管理层释放互斥信号量,互斥信号量加1;释放互斥信号量后,应用层便可继续向消息队列发送任务。
可选地,所述驱动框架还包括API接口模块,如图5所示,为本发明的一种嵌入式设备驱动***的驱动框架中API接口模块的示意图;
所述API接口模块用于接收所述嵌入式实时操作***的数据,进行映射转换后发送到所述应用层。
现有一些***采用的是POSIX接口,虽然该接口比较适合支持内存动态分配的***平台,但这种接口存在资源消耗比较大,且不适合电能表软件平台,因此,本实施例采用API接口,API接口是一种应用程序编程接口,用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码。
在本实施例中,所述API接口模块包括任务管理接口、消息接口、信号量接口、定时器接口和临界段处理接口,实现了应用层代码的平台可移植性设计。本实施例通过自定义API接口模块,能够适配映射到freeRTOS、μC/OS、RT-Thread等主流嵌入式实时操作***,实现应用层软件与操作***无关化设计,方便后续嵌入式实时操作***的切换,实现在操作***进行切换时,设备驱动***不受影响。
可选地,所述驱动框架还包括运行状态管理模块;
所述运行状态管理模块用于对目标设备的格式化信息进行管理,并跟踪记录所述驱动框架的运行状态信息。
具体的,所述运行状态管理模块可设置在设备驱动层、设备管理层、公用资源管理层的任意一层或多层中,分别对其进行状态监控管理。在具体实施方式中,所述运行状态管理模块采用debuglog模块,跟踪记录驱动框架的运行状态,提高软件问题定位分析效率。debuglog模块为一组格式化信息打印输出/记录接口,可配置单独的输出终端,通过选择信息输出终端,可以将信息通过调试串口打印到终端,也可以将调试信息保存到电能表中指定的存储设备中。所述debuglog模块通过在格式化信息中定义信息级别标识字,方便问题分析过程中进行信息筛选过滤。
本实施例提供的一种嵌入式设备驱动***,为满足嵌入式设备逐渐增多的业务扩展和实时性的需求,引入了实时嵌入式操作***,在引入嵌入式实时操作***的同时,可减少***的RAM资源消耗,实现了嵌入式设备的应用层与硬件设备的完全剥离,硬件设备的方案调整时,应用层操作***不会受影响,提高了应用层操作***的开发效率及可靠性;通过自定义驱动框架,自定义驱动框架中的公用资源管理层,自定义设备管理层的API接口模块和数据资源管理模块,合理定义划分数据块,引入读写锁机制解决数据资源访问冲突问题,提高了应用层操作***的开发效率及可靠性,还引入并优化debuglog模块,跟踪记录嵌入式设备的运行状态,提高了***问题定位和问题分析的效率。本发明解决了现有***存在资源消耗较大,应用开发与硬件设备剥离不彻底的技术问题,以及***切换不方便、资源访问冲突处理考虑不周全、问题分析定位困难等问题。
实施例二
基于同一构思,本实施例提出了一种设备驱动方法,应用于实施例一所述的嵌入式设备驱动***中,所述方法包括以下步骤:
步骤1:利用设备驱动层获取设备信息;
具体的,在构建好实施例一所述的应用于嵌入式设备的基于嵌入式实时操作***的驱动框架后,在所述设备驱动层搜索电能表的所有设备,比如,带电可擦可编程只读存储器(EEPROM)、闪存(flash存储器)、实时时钟(RTC)、显示器(LCD、LED)等设备;
步骤2:根据所述设备信息,利用设备管理层的设备注册接口模块,对所述设备进行注册,以构建与所述设备对应的抽象设备;
具体的,通过设备管理层的抽象定义,实现应用层与硬件设备完全解耦,硬件方案调整时,应用软件不受影响;
步骤3:利用应用层,根据所述嵌入式实时操作***的操作信息生成控制指令,并发送所述控制指令给所述设备管理层;
步骤4:利用设备管理层的抽象设备访问接口模块,根据所述控制指令对所述抽象设备进行访问;
步骤5:利用所述目标设备访问接口模块与所述抽象设备访问接口模块之间的映射转换关系,将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
步骤6:根据所述驱动指令,利用所述设备驱动层的目标设备访问接口模块,对目标设备进行访问,以控制所述目标设备进行对应的操作,从而实现所述应用层对所述目标设备的驱动控制。
在一种实施方式中,上述步骤1~6,实现了在所述应用层对所述目标设备的驱动控制。
在另一种实施方式中,上述步骤1~6之后,可以按顺序执行如下步骤7~12,也可以步骤7~12作为独立执行的步骤分支,以实现所述应用层与所述公用资源管理层的资源互斥访问。
步骤7:利用公用资源管理层,定义和配置数据缓存器;
步骤8:创建消息队列,并根据信号量机制设定消息队列中互斥信号量的初始值;
具体的,创建消息队列时,还需要设置消息队列的元素个数和元素的类型,以使应用层往消息队列中存放规定的元素类型,消息队列适用于向多个任务发送数据,即一对多通信;
步骤9:利用应用层,发送任务到所述消息队列,根据所述任务的数量逐减所述互斥信号量;
步骤10:利用公用资源管理层,根据所述任务的优先级从所述消息队列中获取待处理的任务;
步骤11:根据所述待处理的任务,对公用资源管理层的资源进行访问,以对所述待处理的任务进行处理,同时,暂存所述待处理的任务的数据到所述公用资源管理层的数据缓存器中;
步骤12:在对所述待处理的任务进行处理后,释放信号量,所述互斥信号量逐增,以使所述消息队列继续接收任务。
上述方法步骤的具体实施例过程可参见实施例一的详细说明,本实施例在此不再重复赘述。
本实施例提供的一种设备驱动方法,基于实施一所述的嵌入式设备驱动***,采用自定义的驱动框架和自定义的函数接口,实现在所述应用层对所述设备驱动层的访问,将应用层与硬件设备的完全剥离,提高了应用层操作***的开发效率及可靠性;同时,在所述应用层与所述公用资源管理层的资源互斥访问中,通过创建的消息队列,利用信号量机制,解决数据资源访问冲突的问题。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均包括在本发明的专利保护范围内。
Claims (9)
1.一种嵌入式设备驱动***,其特征在于,包括基于嵌入式实时操作***的驱动框架,所述驱动框架包括应用层、设备管理层和设备驱动层;
所述应用层用于根据所述嵌入式实时操作***的操作信息生成控制指令,并下发所述控制指令给所述设备管理层;
所述设备管理层用于将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
所述设备驱动层用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作;
所述设备管理层包括设备注册接口模块和抽象设备访问接口模块;
所述设备注册接口模块用于对设备进行注册,以构建与所述设备对应的抽象设备;
所述抽象设备访问接口模块用于根据所述应用层发送的控制指令,对所述抽象设备进行访问;
所述设备驱动层包括目标设备访问接口模块;
所述目标设备访问接口模块与所述抽象设备访问接口模块存在映射转换关系,以将所述控制指令映射转换为驱动指令;
所述目标设备访问接口模块用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
2.如权利要求1所述的嵌入式设备驱动***,其特征在于,所述设备管理层还包括数据资源管理模块;
所述数据资源管理模块用于利用数据块划分算法对所述目标设备的数据资源进行分配,以及利用读写锁机制对所述目标设备的数据资源进行访问冲突处理。
3.如权利要求1所述的嵌入式设备驱动***,其特征在于,所述驱动框架还包括公用资源管理层;
所述公用资源管理层用于根据生产者消费者模型对公用资源进行管理。
4.如权利要求3所述的嵌入式设备驱动***,其特征在于,所述公用资源管理层包括存储资源管理模块、显示资源管理模块和通信资源管理模块,以及数据缓存器;
所述存储资源管理模块用于对公用资源中的存储数据进行管理;
所述显示资源管理模块用于对公用资源中的显示数据进行管理;
所述通信资源管理模块用于对公用资源中的通信数据进行管理;
所述数据缓存器用于暂存对公用资源进行访问的任务的数据。
5.如权利要求3所述的嵌入式设备驱动***,其特征在于,所述公用资源管理层通过消息队列与所述应用层通讯;
所述消息队列用于接收所述应用层发送的任务,并根据所述任务的优先级进行处理,利用信号量机制实现所述应用层与所述公用资源管理层的资源互斥访问。
6.如权利要求1所述的嵌入式设备驱动***,其特征在于,所述驱动框架还包括API接口模块;
所述API接口模块用于接收所述嵌入式实时操作***的数据,进行映射转换后发送到所述应用层。
7.如权利要求1所述的嵌入式设备驱动***,其特征在于,所述驱动框架还包括运行状态管理模块;
所述运行状态管理模块用于对目标设备的格式化信息进行管理,并跟踪记录所述驱动框架的运行状态信息。
8.一种设备驱动方法,其特征在于,所述方法应用于权利要求1至7中任意一项所述的嵌入式设备驱动***中,所述方法包括以下步骤:
利用应用层,根据所述嵌入式实时操作***的操作信息生成控制指令,并发送所述控制指令给所述设备管理层;
利用设备管理层的抽象设备访问接口模块,根据所述控制指令对所述抽象设备进行访问;
利用所述目标设备访问接口模块与所述抽象设备访问接口模块之间的映射转换关系,将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
根据所述驱动指令,利用所述设备驱动层的目标设备访问接口模块,对目标设备进行访问,以控制所述目标设备进行对应的操作,从而实现所述应用层对所述目标设备的驱动控制。
9.如权利要求8所述的设备驱动方法,在实现所述应用层对所述目标设备的驱动控制的同时,所述方法还包括:
利用公用资源管理层,定义和配置数据缓存器;
创建消息队列,并根据信号量机制设定消息队列中互斥信号量的初始值;
利用应用层,发送任务到所述消息队列,根据所述任务的数量逐减所述互斥信号量;
利用公用资源管理层,根据所述任务的优先级从所述消息队列中获取待处理的任务;
根据所述待处理的任务,对公用资源管理层的资源进行访问,以对所述待处理的任务进行处理;
在对所述待处理的任务进行处理后,释放信号量,所述互斥信号量逐增,以使所述消息队列继续接收任务。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011501469.5A CN112612523B (zh) | 2020-12-17 | 2020-12-17 | 一种嵌入式设备驱动***及方法 |
PCT/CN2021/084132 WO2022126930A1 (zh) | 2020-12-17 | 2021-03-30 | 一种嵌入式设备驱动***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011501469.5A CN112612523B (zh) | 2020-12-17 | 2020-12-17 | 一种嵌入式设备驱动***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612523A CN112612523A (zh) | 2021-04-06 |
CN112612523B true CN112612523B (zh) | 2022-06-03 |
Family
ID=75240839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011501469.5A Active CN112612523B (zh) | 2020-12-17 | 2020-12-17 | 一种嵌入式设备驱动***及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112612523B (zh) |
WO (1) | WO2022126930A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113392083A (zh) * | 2021-05-25 | 2021-09-14 | 交控科技股份有限公司 | 轨道交通设备日志处理***及方法 |
CN113359841A (zh) * | 2021-06-29 | 2021-09-07 | 西北工业大学 | 无人机异构载荷设备统一驱动模型 |
CN114020659A (zh) * | 2021-10-29 | 2022-02-08 | 浙江万胜智能科技股份有限公司 | 一种基于应用层驱动液晶显示的能源控制器*** |
CN114625360B (zh) * | 2022-05-16 | 2022-10-21 | 西安数道航空技术有限公司 | 一种无耦合数字化开发平台及*** |
CN117519783B (zh) * | 2024-01-08 | 2024-04-26 | 利尔达科技集团股份有限公司 | 一种产品开发包与操作***和硬件分离的方法及*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236538A (zh) * | 2007-02-01 | 2008-08-06 | 捷安讯科技股份有限公司 | 硬件的驱动架构与方法 |
CN109885341A (zh) * | 2019-02-20 | 2019-06-14 | 无锡宝威电子有限公司 | 一种通用设备驱动模型、***及应用 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7254816B2 (en) * | 2003-05-05 | 2007-08-07 | Microsoft Corporation | Device driver conversion and creation |
EP1715405A1 (en) * | 2005-04-19 | 2006-10-25 | STMicroelectronics S.r.l. | Processing method, system and computer program product for dynamic allocation of processing tasks in a multiprocessor cluster platforms with power adjustment |
CN100351788C (zh) * | 2005-05-18 | 2007-11-28 | 大唐移动通信设备有限公司 | 嵌入式设备的驱动方法 |
CN104375841B (zh) * | 2014-12-03 | 2018-04-20 | 广州广电运通金融电子股份有限公司 | 一种基于linux***的CEN/XFS标准的架构以及实现方法 |
CN106445640B (zh) * | 2016-10-20 | 2019-06-18 | 南京南瑞继保电气有限公司 | 一种嵌入式虚拟装置运行方法和*** |
CN108153597B (zh) * | 2017-12-22 | 2021-08-03 | 西安烽火电子科技有限责任公司 | 一种linux设备管理装置及方法 |
CN109144748B (zh) * | 2018-07-26 | 2021-12-07 | 创新先进技术有限公司 | 一种服务器、分布式服务器集群及其状态驱动方法 |
CN111381868B (zh) * | 2018-12-29 | 2021-12-17 | 北京图森智途科技有限公司 | 一种嵌入式***驱动层的实现方法和装置 |
-
2020
- 2020-12-17 CN CN202011501469.5A patent/CN112612523B/zh active Active
-
2021
- 2021-03-30 WO PCT/CN2021/084132 patent/WO2022126930A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101236538A (zh) * | 2007-02-01 | 2008-08-06 | 捷安讯科技股份有限公司 | 硬件的驱动架构与方法 |
CN109885341A (zh) * | 2019-02-20 | 2019-06-14 | 无锡宝威电子有限公司 | 一种通用设备驱动模型、***及应用 |
Non-Patent Citations (1)
Title |
---|
基于aCoral操作***设备驱动模型及USB设备驱动的设计与实现;魏守峰;《中国优秀硕士学位论文全文数据库信息科技辑》;20130115(第1期);第I137-71页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112612523A (zh) | 2021-04-06 |
WO2022126930A1 (zh) | 2022-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112612523B (zh) | 一种嵌入式设备驱动***及方法 | |
CN108537543B (zh) | 区块链数据的并行处理方法、装置、设备和存储介质 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及*** | |
CN110083706B (zh) | 一种面向物联网微服务框架及其服务组合方法 | |
CN109710405B (zh) | 区块链智能合约管理方法、装置、电子设备及存储介质 | |
CN110442329A (zh) | 代码段的生成方法、装置、存储介质及计算机设备 | |
US20110265093A1 (en) | Computer System and Program Product | |
WO2023000673A1 (zh) | 硬件加速器设备管理方法、装置及电子设备和存储介质 | |
CN101424941B (zh) | 一种控制实现方法和*** | |
CN112685148A (zh) | 海量终端的异步通信方法、装置、计算机设备和存储介质 | |
CN110706148B (zh) | 人脸图像处理方法、装置、设备和存储介质 | |
CN116795647A (zh) | 一种数据库异构资源管理与调度方法、装置、设备及介质 | |
CN109301936B (zh) | 一种基于容器调度架构的智能变电站运维信息监视*** | |
CN114490062A (zh) | 一种本地磁盘的调度方法、装置、电子设备及存储介质 | |
WO2024119930A1 (zh) | 调度方法、装置、计算机设备和存储介质 | |
CN113641472A (zh) | 分布式应用的异转同实现方法及装置 | |
CN117608856A (zh) | NVMe加速卡内存扩展方法、***、终端及存储介质 | |
CN117271122A (zh) | 基于cpu和gpu分离的任务处理方法、装置、设备及存储介质 | |
CN116383240A (zh) | 基于fpga多数据库加速查询方法、装置、设备及介质 | |
CN109976881B (zh) | 事务识别方法和装置、存储介质以及电子装置 | |
US11687451B2 (en) | Memory allocation manager and method performed thereby for managing memory allocation | |
CN109324838A (zh) | 单片机程序的执行方法、执行装置及终端 | |
CN106354486B (zh) | nand flash设备管理的方法和*** | |
CN114116908A (zh) | 一种数据管理方法、装置及电子设备 | |
CN113888028A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |