双芯智能电表的设备驱动方法和装置
技术领域
本申请涉及智能电表技术领域,特别是涉及一种双芯智能电表的设备驱动方法、装置和存储介质。
背景技术
目前,电能表为一体式设计,即计量部分和非计量部分不做独立工作要求。这种电能表软件系统比较固化,且与硬件平台强耦合,一旦面临软硬件升级需要,只能更换整块电表。按照IR46标准的要求,电能表的管理芯和计量芯应相互分离,不允许电能表计量芯软件在线升级,但管理单元软件(也可简称为管理单元)需要满足高级应用及中间件的灵活升级扩展需求。电表数以亿计,管理单元所使用的硬件平台存在多样化、差异化的情况,必然要求管理单元软件实现支持对多硬件平台的支持,同时支持通过对设备驱动程序的简单开发实现跨硬件平台移植,中间件和高级应用通过系统调用实现对硬件的操作,硬件设备细节由驱动程序,实现中间件和高级应用的轻量化设计,且可根据需要对硬件设备进行注册管理。如何降低软硬件接口开发难度,方便实现管理单元软件的跨硬件平台移植是当前急需解决的问题。
由此可见,如何降低软硬件接口开发难度,方便实现管理单元软件的跨硬件平台移植的问题是本领域技术人员亟待解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种双芯智能电表的设备驱动方法、装置和存储介质。
一种双芯智能电表的设备驱动方法,应用于双芯智能电表的管理单元,包括:
确定与待驱动设备对应的设备对象;所述待驱动设备为已在所述双芯智能电表中注册的设备;所述设备对象是对所述待驱动设备在所述管理单元中的抽象表征;
获取所述设备对象的文件信息;
将所述文件信息传递至所述待驱动设备的驱动程序提供的文件操作接口,以通过所述文件操作接口触发所述驱动程序驱动所述待驱动设备。
在其中一个实施例中,所述待驱动设备包括字符设备、块设备、网络设备和总线子系统。
在其中一个实施例中,在所述确定与待驱动设备对应的设备对象之前,所述方法还包括:
基于预设的设备注册接口,对待注册设备进行注册,抽象所述待注册设备的硬件实现,得到对应的设备对象;
建立所述设备对象的文件信息与所述待注册设备之间的映射关系。
在其中一个实施例中,所述将所述文件信息传递至所述待驱动设备的驱动程序提供的文件操作接口,包括:
基于系统调用,将所述文件信息传递至所述驱动程序提供的文件操作接口;所述系统调用为用户进程对所述待驱动设备的控制的抽象。
在其中一个实施例中,所述系统调用和所述文件操作接口处于所述双芯智能电表的内核空间中,所述用户进程处于所述双芯智能电表的用户空间中。
在其中一个实施例中,所述内核空间还包括IO系统和内核基础设施。
在其中一个实施例中,所述方法还包括:
与板级支持包工程进行交互,将所述板级支持包工程的板级支持包启动代码和驱动程序代码,烧写到所述双芯智能电表本地的存储器中。
一种双芯智能电表的设备驱动装置,应用于双芯智能电表的管理单元,包括:
设备对象确定模块,用于确定与待驱动设备对应的设备对象;所述待驱动设备为已在所述双芯智能电表中注册的设备;所述设备对象是对所述待驱动设备在所述管理单元中的抽象表征;
文件信息获取模块,用于获取所述设备对象的文件信息;
设备驱动模块,用于将所述文件信息传递至所述待驱动设备的驱动程序提供的文件操作接口,以通过所述文件操作接口触发所述驱动程序驱动所述待驱动设备。
一种双芯智能电表,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行以下步骤:确定与待驱动设备对应的设备对象;所述待驱动设备为已在所述双芯智能电表中注册的设备;所述设备对象是对所述待驱动设备在所述管理单元中的抽象表征;获取所述设备对象的文件信息;将所述文件信息传递至所述待驱动设备的驱动程序提供的文件操作接口,以通过所述文件操作接口触发所述驱动程序驱动所述待驱动设备。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时执行以下步骤:确定与待驱动设备对应的设备对象;所述待驱动设备为已在所述双芯智能电表中注册的设备;所述设备对象是对所述待驱动设备在所述管理单元中的抽象表征;获取所述设备对象的文件信息;将所述文件信息传递至所述待驱动设备的驱动程序提供的文件操作接口,以通过所述文件操作接口触发所述驱动程序驱动所述待驱动设备。
上述双芯智能电表的设备驱动方法、装置、存储介质,双芯智能电表确定与待驱动设备对应的设备对象;待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征;获取设备对象的文件信息;将文件信息传递至待驱动设备的驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备,降低双芯智能电表的软硬件接口开发难度,提高管理单元的跨硬件平台的可移植性。
附图说明
图1为一个实施例中双芯智能电表的内部结构图;
图2为一个实施例中双芯智能电表的设备驱动方法的流程示意图;
图3为一个实施例中双芯智能电表管理单元的驱动框架示意图;
图4为一个实施例中双芯智能电表管理单元的驱动框架与BSP交互示意图;
图5为一个实施例中双芯智能电表的设备驱动步骤的流程示意图;
图6为一个实施例中双芯智能电表的设备驱动装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请提供了一种双芯智能电表的设备驱动方法,可以应用于双芯智能电表中,其内部结构图可以如图1所示。该双芯智能电表包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该双芯智能电表的处理器用于提供计算和控制能力。该双芯智能电表的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该双芯智能电表的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种双芯智能电表的设备驱动方法。该双芯智能电表的显示屏可以是液晶显示屏或者电子墨水显示屏,该双芯智能电表的输入装置可以是显示屏上覆盖的触摸层,也可以是双芯智能电表外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的双芯智能电表的限定,具体的双芯智能电表可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,如图2所示,提供了一种双芯智能电表的设备驱动方法,以该方法应用于图1中的双芯智能电表的管理单元为例进行说明,包括以下步骤:
步骤S201,双芯智能电表确定与待驱动设备对应的设备对象;待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征。
其中,待驱动设备可以理解为双芯智能电表的电表应用待驱动的硬件设备,且该硬件设备已在双芯智能电表中完成注册。按照设备类型进行划分,待驱动设备可以包括字符设备、块设备、网络设备和总线子系统。基于面向对象设计思想,在双芯智能电表中,可以对硬件设备进行抽象表征,隔离硬件设备的相关实现,因此,硬件设备在双芯智能电表中的抽象表征可以理解为设备对象。
更进一步地,硬件设备向双芯智能电表注册的过程可以包括:双芯智能电表的驱动框架预设有设备注册接口;待注册的硬件设备基于上述设备注册接口,向双芯智能电表进行注册时,双芯智能电表可以对待注册的硬件设备的硬件实现进行抽象,得到对应的设备对象,降低软硬件接口的开发难度,提高跨硬件平台的可移植性。其中,驱动框架为双芯智能电表的管理单元软件中的内核层组件,可以用于管理已注册的设备对象和设备驱动。
在本步骤中,电表应用在驱动某一个待驱动设备时,双芯智能电表可以确定与待驱动设备对应的设备对象。
步骤S202,双芯智能电表获取设备对象的文件信息。
其中,基于面向对象的设计思想,对硬件设备进行抽象表征后,可以得到上述硬件设备对应的设备对象;双芯智能电表可以存储上述设备对象的文件信息与上述硬件设备之间的对应关系;电表应用在对硬件设备进行驱动操作时,电表应用只需关注与硬件设备对应的文件信息,实现电表应用像操作普通文件一样操作硬件设备,由驱动程序负责与硬件设备的直接驱动交互。
本步骤中,双芯智能电表在确定待驱动的硬件设备的设备对象后,获取与上述设备对象对应的文件信息。
步骤S203,双芯智能电表将文件信息传递至待驱动设备的驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备。
其中,文件操作接口为待驱动设备的驱动程序提供的,双芯智能电表可以基于文件操作接口实现对待驱动的硬件设备的驱动操作。
其中,双芯智能电表可以把用户进程对硬件设备的控制抽象为系统调用,也就是说,用户进程可以通过系统调用实现对硬件设备的操作。具体地,双芯智能电表的用户进程可以基于系统调用,将文件信息传递至文件操作接口,双芯智能电表通过文件操作接口,触发驱动程序驱动待驱动设备。
图3示出一个实施例中双芯智能电表的驱动框架图,在该驱动框架图中,用户进程处于双芯智能电表的用户空间,系统调用和文件操作接口处于双芯智能电表的内核空间,文件操作接口与接收缓冲区、中断服务程序、发送缓冲区进行交互,实现驱动程序对待驱动的硬件设备进行驱动。更进一步地,如图4所示,双芯智能电表的内核空间可以包括内核驱动框架(也可以称为驱动框架)、IO系统(输入输出系统)、内核基础设施和其他模块。
上述双芯智能电表的设备驱动方法中,双芯智能电表确定与待驱动设备对应的设备对象;待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征;获取设备对象的文件信息;将文件信息传递至待驱动设备的驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备,降低双芯智能电表的软硬件接口开发难度,提高管理单元的跨硬件平台的可移植性。
在一个实施例中,如图4所示,基于双芯智能电表的驱动框架所提供的文件操作接口,双芯智能电表可以与板级支持包(BSP)工程进行交互,将BSP工程的板级支持包启动代码与驱动程序代码烧写到双芯智能电表的存储器中,电表应用在启动和运行过程中,通过驱动程序对待驱动设备进行驱动。具体地,设备驱动开发主要分为以下几个步骤:
(1)、建立设备驱动工程,包括板级支持包启动代码与驱动程序代码两个组成部分。
(2)、实现最小系统,通过板级支持包模板实现各个初始化接口,进而实现最小系统运行。
(3)、实现存储设备与网络设备驱动,实现文件读写的落盘操作和基于网络设备的开发工具。
(4)、实现各设备驱动,根据具体的项目需求开发所需的各类设备驱动。
在本实施例中,对于板级支持包开发人员来说,他们仅仅只需要实现少量的、硬件相关的操作接口,即可适配自定义的硬件平台,让双芯智能电表的操作系统运行在自定义的硬件设备上。
在一个实施例中,设备驱动开发具体可以包括:
一、工程建立:
设备驱动开发所建立的工程分为BSP启动代码与驱动程序代码两个组成部分。BSP工程将驱动代码和内核进行编译,生成BSP系统镜像,在BSP工程中需要实现操作系统内核的初始化,并实现操作系统能够运行的最小系统环境。此阶段应实现BSP初始化所需的汇编代码startup.S,实现BSP所需的内存配置bspMap.h文件。
二、最小系统实现:
集成开发环境中的板级支持包模板已经定义好了各初始化流程应执行的接口,开发者只需要完成的是各个初始化接口的具体实现,对具体开发板的MMU(Memory ManagementUnit,内存管理单元)与Cache(高速缓冲存储器)进行配置,并实现中断控制器、串口驱动与系统Tick定时器(Tick为定时器)驱动,在此基础之上,一个基于该操作系统的最小系统即可以运行起来。
三、存储设备与网络设备驱动实现:
存储设备驱动实现之后,文件系统就可以实现挂载,所有的文件读写就能够进行实际的落盘操作;网络设备驱动实现之后,集成开发环境提供的众多基于网络的工具就可以极大的简化开发者的开发流程,降低开发难度。
四、各设备驱动实现:
当最小系统、存储设备与网络设备都已经实现之后,开发者就可以根据具体的项目需求开发所需的各类设备驱动。
在一个实施例中,双芯智能电表的内核层组件可以包括驱动框架,驱动框架是内核空间的一部分,其运行在内核态下;驱动框架主要用于管理已注册的设备驱动和设备对象,同时提供了相关的设备注册接口;其中,驱动框架管理的设备类型包括字符设备驱动、块设备驱动、网络设备驱动、总线子系统;驱动框架支持通过相关的设备注册接口实现新的硬件设备注册、管理。驱动框架把用户进程对于硬件设备的控制抽象为系统调用,并通过驱动程序提供的文件操作接口实现对实际硬件设备的特定操作。驱动框架支持电表应用像操作普通文件一样操作硬件设备,电表应用只需要关注这个抽象出来的文件,驱动程序负责与硬件设备的直接驱动交互。
在开发工具上进行驱动开发时,双芯智能电表涉及的所有硬件设备的驱动程序实现后,打包形成BSP工程,烧写到双芯智能电表的存储器中,双芯智能电表的应用在启动和运行过程中,通过驱动程序实现对驱动硬件设备;其中,为实现对硬件设备的驱动,上述的驱动开发可以包括以下步骤:
步骤S501,基于驱动框架提供的设备注册接口,对待注册设备进行注册,抽象待注册设备的硬件实现,得到对应的设备对象;
步骤S502,建立设备对象的文件信息与待注册设备之间的映射关系;
步骤S503,确定与待驱动设备对应的设备对象;其中,待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征;待驱动设备可以包括字符设备、块设备、网络设备和总线子系统;
步骤S504,获取设备对象的文件信息;
步骤S505,用户进程基于系统调用,将文件信息传递至驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备。
在本实施例中,相对于传统的电表管理单元软件系统,本实施例的双芯智能电表的驱动框架采用了面向对象的设计思想,抽象了绝大部分设备类型,隔离了硬件相关的实现;对于板级支持包开发人员来说,他们仅仅只需要实现少量的、硬件相关的操作接口,即可适配自定义的硬件平台,让操作系统运行在自定义的硬件设备上。驱动框架提供了设备注册接口,抽象了硬件实现,降低了软硬件接口的开发难度,提高了跨硬件平台的可移植性。
应该理解的是,虽然图2-图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种双芯智能电表的设备驱动装置,应用于双芯智能电表的管理单元,包括:设备对象确定模块601、文件信息获取模块602和设备驱动模块603,其中:
设备对象确定模块601,用于确定与待驱动设备对应的设备对象;待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征;
文件信息获取模块602,用于获取设备对象的文件信息;
设备驱动模块603,用于将文件信息传递至驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备。
在一个实施例中,待驱动设备包括字符设备、块设备、网络设备和总线子系统。
在一个实施例中,上述装置还包括设备注册模块;其中设备注册模块,用于基于预设的设备注册接口,对待注册设备进行注册,抽象待注册设备的硬件实现,得到对应的设备对象,建立设备对象的文件信息与待注册设备之间的映射关系。
在一个实施例中,设备驱动模块603,还用于基于系统调用,将文件信息传递至驱动程序提供的文件操作接口;系统调用为用户进程对待驱动设备的控制的抽象。
在一个实施例中,系统调用和文件操作接口处于双芯智能电表的内核空间中,用户进程处于双芯智能电表的用户空间中。
在一个实施例中,内核空间还包括IO系统和内核基础设施。
在一个实施例中,上述装置还用于与板级支持包工程进行交互,将板级支持包工程的板级支持包启动代码和驱动程序代码,烧写到双芯智能电表本地的存储器中。
关于双芯智能电表的设备驱动装置的具体限定可以参见上文中对于双芯智能电表的设备驱动方法的限定,在此不再赘述。上述双芯智能电表的设备驱动装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于双芯智能电表中的处理器中,也可以以软件形式存储于双芯智能电表中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种双芯智能电表,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:确定与待驱动设备对应的设备对象;待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征;获取设备对象的文件信息;将文件信息传递至待驱动设备的驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备。
在一个实施例中,待驱动设备包括字符设备、块设备、网络设备和总线子系统。
在一个实施例中,处理器在执行计算机程序时还用于实现以下步骤:基于预设的设备注册接口,对待注册设备进行注册,抽象待注册设备的硬件实现,得到对应的设备对象;建立设备对象的文件信息与待注册设备之间的映射关系。
在一个实施例中,处理器在执行计算机程序时还用于实现以下步骤:基于系统调用,将文件信息传递至驱动程序提供的文件操作接口;系统调用为用户进程对待驱动设备的控制的抽象。
在一个实施例中,系统调用和文件操作接口处于双芯智能电表的内核空间中,用户进程处于双芯智能电表的用户空间中。
在一个实施例中,内核空间还包括IO系统和内核基础设施。
在一个实施例中,处理器在执行计算机程序时还用于实现以下步骤:与板级支持包工程进行交互,将板级支持包工程的板级支持包启动代码和驱动程序代码,烧写到双芯智能电表本地的存储器中。
在上述实施例中,双芯智能电表基于面向对象的设计思想,抽象了绝大部分设备类型,隔离了硬件相关的实现;对于板级支持包开发人员来说,他们仅仅只需要实现少量的、硬件相关的操作接口,即可适配自定义的硬件平台,让操作系统运行在自定义的硬件设备上。驱动框架提供了设备注册接口,抽象了硬件实现,降低了软硬件接口的开发难度,提高了跨硬件平台的可移植性。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:确定与待驱动设备对应的设备对象;待驱动设备为已在双芯智能电表中注册的设备;设备对象是对待驱动设备在管理单元中的抽象表征;获取设备对象的文件信息;将文件信息传递至待驱动设备的驱动程序提供的文件操作接口,以通过文件操作接口触发驱动程序驱动待驱动设备。
在一个实施例中,待驱动设备包括字符设备、块设备、网络设备和总线子系统。
在一个实施例中,处理器在执行计算机程序时还用于实现以下步骤:基于预设的设备注册接口,对待注册设备进行注册,抽象待注册设备的硬件实现,得到对应的设备对象;建立设备对象的文件信息与待注册设备之间的映射关系。
在一个实施例中,处理器在执行计算机程序时还用于实现以下步骤:基于系统调用,将文件信息传递至驱动程序提供的文件操作接口;系统调用为用户进程对待驱动设备的控制的抽象。
在一个实施例中,系统调用和文件操作接口处于双芯智能电表的内核空间中,用户进程处于双芯智能电表的用户空间中。
在一个实施例中,内核空间还包括IO系统和内核基础设施。
在一个实施例中,处理器在执行计算机程序时还用于实现以下步骤:与板级支持包工程进行交互,将板级支持包工程的板级支持包启动代码和驱动程序代码,烧写到双芯智能电表本地的存储器中。
在上述实施例提供的计算机可读存储介质中,基于面向对象的设计思想,抽象了绝大部分设备类型,隔离了硬件相关的实现;对于板级支持包开发人员来说,他们仅仅只需要实现少量的、硬件相关的操作接口,即可适配自定义的硬件平台,让操作系统运行在自定义的硬件设备上。驱动框架提供了设备注册接口,抽象了硬件实现,降低了软硬件接口的开发难度,提高了跨硬件平台的可移植性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。