CN112612523A - 一种嵌入式设备驱动系统及方法 - Google Patents

一种嵌入式设备驱动系统及方法 Download PDF

Info

Publication number
CN112612523A
CN112612523A CN202011501469.5A CN202011501469A CN112612523A CN 112612523 A CN112612523 A CN 112612523A CN 202011501469 A CN202011501469 A CN 202011501469A CN 112612523 A CN112612523 A CN 112612523A
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.)
Granted
Application number
CN202011501469.5A
Other languages
English (en)
Other versions
CN112612523B (zh
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.)
Wasion Group Co Ltd
Original Assignee
Wasion Group Co Ltd
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 Wasion Group Co Ltd filed Critical Wasion Group Co Ltd
Priority to CN202011501469.5A priority Critical patent/CN112612523B/zh
Priority to PCT/CN2021/084132 priority patent/WO2022126930A1/zh
Publication of CN112612523A publication Critical patent/CN112612523A/zh
Application granted granted Critical
Publication of CN112612523B publication Critical patent/CN112612523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total 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 (10)

1.一种嵌入式设备驱动系统,其特征在于,包括基于嵌入式实时操作系统的驱动框架,所述驱动框架包括应用层、设备管理层和设备驱动层;
所述应用层用于根据所述嵌入式实时操作系统的操作信息生成控制指令,并下发所述控制指令给所述设备管理层;
所述设备管理层用于将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
所述设备驱动层用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
2.如权利要求1所述的嵌入式设备驱动系统,其特征在于,所述设备管理层包括设备注册接口模块、抽象设备访问接口模块和数据资源管理模块;
所述设备注册接口模块用于对设备进行注册,以构建与所述设备对应的抽象设备;
所述抽象设备访问接口模块用于根据所述应用层发送的控制指令,对抽象设备进行访问;
所述数据资源管理模块用于利用数据块划分算法对所述目标设备的数据资源进行分配,以及利用读写锁机制对所述目标设备的数据资源进行访问冲突处理。
3.如权利要求2所述的嵌入式设备驱动系统,其特征在于,所述设备驱动层包括目标设备访问接口模块;
所述目标设备访问接口模块与所述抽象设备访问接口模块存在映射转换关系,以将所述控制指令映射转换为驱动指令;
所述目标设备访问接口模块用于根据所述驱动指令对目标设备进行访问,以控制所述目标设备进行对应的操作。
4.如权利要求1所述的嵌入式设备驱动系统,其特征在于,所述驱动框架还包括公用资源管理层;
所述公用资源管理层用于根据生产者消费者模型对公用资源进行管理。
5.如权利要求4所述的嵌入式设备驱动系统,其特征在于,所述公用资源管理层包括存储资源管理模块、显示资源管理模块和通信资源管理模块,以及数据缓存器;
所述存储资源管理模块用于对公用资源中的存储数据进行管理;
所述显示资源管理模块用于对公用资源中的显示数据进行管理;
所述通信资源管理模块用于对公用资源中的通信数据进行管理;
所述数据缓存器用于暂存对公用资源进行访问的任务的数据。
6.如权利要求4所述的嵌入式设备驱动系统,其特征在于,所述公用资源管理层通过消息队列与所述应用层通讯;
所述消息队列用于接收所述应用层发送的任务,并根据所述任务的优先级进行处理,利用信号量机制实现所述应用层与所述公用资源管理层的资源互斥访问。
7.如权利要求1所述的嵌入式设备驱动系统,其特征在于,所述驱动框架还包括API接口模块;
所述API接口模块用于接收所述嵌入式实时操作系统的数据,进行映射转换后发送到所述应用层。
8.如权利要求1所述的嵌入式设备驱动系统,其特征在于,所述驱动框架还包括运行状态管理模块;
所述运行状态管理模块用于对目标设备的格式化信息进行管理,并跟踪记录所述驱动框架的运行状态信息。
9.一种设备驱动方法,其特征在于,所述方法应用于权利要求1至8中任意一项所述的嵌入式设备驱动系统中,所述方法包括以下步骤:
利用应用层,根据所述嵌入式实时操作系统的操作信息生成控制指令,并发送所述控制指令给所述设备管理层;
利用设备管理层的抽象设备访问接口模块,根据所述控制指令对所述抽象设备进行访问;
利用所述目标设备访问接口模块与所述抽象设备访问接口模块之间的映射转换关系,将所述控制指令映射转换为驱动指令,并下发所述驱动指令给所述设备驱动层;
根据所述驱动指令,利用所述设备驱动层的目标设备访问接口模块,对目标设备进行访问,以控制所述目标设备进行对应的操作,从而实现所述应用层对所述目标设备的驱动控制。
10.如权利要求9所述的设备驱动方法,在实现所述应用层对所述目标设备的驱动控制的同时,所述方法还包括:
利用共用资源管理层,定义和配置数据缓存器;
创建消息队列,并根据信号量机制设定消息队列中互斥信号量的初始值;
利用应用层,发送任务到所述消息队列,根据所述任务的数量逐减所述互斥信号量;
利用共用资源管理层,根据所述任务的优先级从所述消息队列中获取待处理的任务;
根据所述待处理的任务,对共用资源管理层的资源进行访问,以对所述待处理的任务进行处理;
在对所述待处理的任务进行处理后,释放信号量,所述互斥信号量逐增,以使所述消息队列继续接收任务。
CN202011501469.5A 2020-12-17 2020-12-17 一种嵌入式设备驱动系统及方法 Active CN112612523B (zh)

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 true CN112612523A (zh) 2021-04-06
CN112612523B 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113359841A (zh) * 2021-06-29 2021-09-07 西北工业大学 无人机异构载荷设备统一驱动模型
CN113392083A (zh) * 2021-05-25 2021-09-14 交控科技股份有限公司 轨道交通设备日志处理系统及方法
CN114020659A (zh) * 2021-10-29 2022-02-08 浙江万胜智能科技股份有限公司 一种基于应用层驱动液晶显示的能源控制器系统
CN114625360A (zh) * 2022-05-16 2022-06-14 西安数道航空技术有限公司 一种无耦合数字化开发平台及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117519783B (zh) * 2024-01-08 2024-04-26 利尔达科技集团股份有限公司 一种产品开发包与操作系统和硬件分离的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040226024A1 (en) * 2003-05-05 2004-11-11 Microsoft Corporation Device driver conversion and creation
CN101236538A (zh) * 2007-02-01 2008-08-06 捷安讯科技股份有限公司 硬件的驱动架构与方法
US20170329659A1 (en) * 2014-12-03 2017-11-16 Grg Banking Equipment Co., Ltd. Linux system-based cen/xfs standard architecture and implementation method
CN109885341A (zh) * 2019-02-20 2019-06-14 无锡宝威电子有限公司 一种通用设备驱动模型、系统及应用
WO2020133691A1 (zh) * 2018-12-29 2020-07-02 北京图森未来科技有限公司 一种嵌入式系统驱动层的实现方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 大唐移动通信设备有限公司 嵌入式设备的驱动方法
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 创新先进技术有限公司 一种服务器、分布式服务器集群及其状态驱动方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040226024A1 (en) * 2003-05-05 2004-11-11 Microsoft Corporation Device driver conversion and creation
CN101236538A (zh) * 2007-02-01 2008-08-06 捷安讯科技股份有限公司 硬件的驱动架构与方法
US20170329659A1 (en) * 2014-12-03 2017-11-16 Grg Banking Equipment Co., Ltd. Linux system-based cen/xfs standard architecture and implementation method
WO2020133691A1 (zh) * 2018-12-29 2020-07-02 北京图森未来科技有限公司 一种嵌入式系统驱动层的实现方法和装置
CN109885341A (zh) * 2019-02-20 2019-06-14 无锡宝威电子有限公司 一种通用设备驱动模型、系统及应用

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
魏守峰: "基于aCoral操作系统设备驱动模型及USB设备驱动的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (4)

* Cited by examiner, † Cited by third party
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 浙江万胜智能科技股份有限公司 一种基于应用层驱动液晶显示的能源控制器系统
CN114625360A (zh) * 2022-05-16 2022-06-14 西安数道航空技术有限公司 一种无耦合数字化开发平台及系统

Also Published As

Publication number Publication date
CN112612523B (zh) 2022-06-03
WO2022126930A1 (zh) 2022-06-23

Similar Documents

Publication Publication Date Title
CN112612523B (zh) 一种嵌入式设备驱动系统及方法
CN108537543B (zh) 区块链数据的并行处理方法、装置、设备和存储介质
EP3889774A1 (en) Heterogeneous computing-based task processing method and software-hardware framework system
CN111767143A (zh) 交易数据处理方法、装置、设备及系统
US20110265093A1 (en) Computer System and Program Product
WO2023000673A1 (zh) 硬件加速器设备管理方法、装置及电子设备和存储介质
CN110196835B (zh) 元数据的处理方法、元数据的处理装置以及电子设备
US7376758B2 (en) I/O dependency graphs
CN104731569A (zh) 一种数据处理方法及相关设备
CN101424941A (zh) 一种控制实现方法和系统
CN110706148A (zh) 人脸图像处理方法、装置、设备和存储介质
CN115357540A (zh) 存储系统及其计算存储处理器、固体硬盘和数据读写方法
CN105677481B (zh) 一种数据处理方法、系统及电子设备
CN114490062A (zh) 一种本地磁盘的调度方法、装置、电子设备及存储介质
CN112148467A (zh) 计算资源的动态分配
CN116069480B (zh) 一种处理器及计算设备
CN116383240A (zh) 基于fpga多数据库加速查询方法、装置、设备及介质
CN114791854B (zh) 用户态虚拟机任务的调度方法、装置、设备及存储介质
US11687451B2 (en) Memory allocation manager and method performed thereby for managing memory allocation
CN109976881B (zh) 事务识别方法和装置、存储介质以及电子装置
CN114327769B (zh) 一种操作系统事件记录方法、装置及计算机系统
CN106354486B (zh) nand flash设备管理的方法和系统
CN111913812B (zh) 一种数据处理方法、装置、设备及存储介质
CN112346879B (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