嵌入式系统、进程通信方法、装置、计算机设备及介质与流程

文档序号:33468229发布日期:2023-03-15 07:25阅读:34来源:国知局
嵌入式系统、进程通信方法、装置、计算机设备及介质与流程

1.本发明涉及嵌入式开发领域,尤其涉及一种嵌入式系统、进程通信方法、装置、计算机设备及介质。


背景技术:

2.在嵌入式开发中,各个进程间通常设置有相互通信的功能,以实现高效的数据传输和命令调用。但是,随着项目需求的不断变化和功能不断的添加,进程间的交叉越来越多,耦合度越高,导致项目的改动和维护十分复杂,且难以拓展新的功能。


技术实现要素:

3.有鉴于此,本发明提供一种嵌入式系统、进程通信方法、装置、计算机设备及介质,以改善进程间的交叉越来越多,耦合度越高,导致项目的改动和维护十分复杂,且难以拓展新的功能的现状。
4.第一方面,本发明实施例提供一种嵌入式系统,所述系统包括消息中心进程、看门狗父进程及多个功能模块进程,每个所述功能模块进程均为所述看门狗父进程的子进程,所述功能模块进程基于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用方法进行编码并进程化以得到;所述看门狗父进程和各个所述功能模块进程均与所述消息中心进程通信连接;所述看门狗父进程用于监控各个所述功能模块进程的运行状态;所述功能模块进程用于将生成的第一消息和第二消息发送至所述消息中心进程;所述消息中心进程用于将接收到的第一消息转发至其他的一个或多个功能模块进程,并将接收到的第二消息转发至所述看门狗父进程;所述看门狗父进程用于接收功能模块进程发送的所述第二消息。
5.可选的,在本发明实施例提供的一种可行方式中,所述嵌入式系统对应的嵌入式主板搭载有看门狗硬件模块;所述看门狗父进程还用于每隔预设时间间隔对所述看门狗硬件模块执行喂狗操作;所述看门狗硬件模块用于若未在所述预设时间间隔执行喂狗操作时,则执行所述嵌入式系统的重启操作。
6.可选的,在本发明实施例提供的一种可行方式中,所述看门狗父进程与各个所述功能模块进程基于unix信号机制通信连接;所述看门狗父进程还用于控制处于异常运行状态的功能模块进程进行重启。
7.可选的,在本发明实施例提供的一种可行方式中,所述第一消息包括类别数据,所述类别数据表示所述第一消息的类别;所述功能模块进程还用于向所述消息中心进程发送消息订阅数据,其中,所述消息订阅数据表示所述功能模块进程订阅的消息的类别;
所述消息中心进程还用于在接收到所述功能模块进程发送的消息订阅数据时,记录所述消息中心进程订阅的消息的类别;所述消息中心进程还用于在接收到所述功能模块进程发送的第一消息时,基于所述第一消息的类别和各个所述功能模块进程订阅的消息的类别,将所述第一消息转发至匹配的功能模块进程。
8.可选的,在本发明实施例提供的一种可行方式中,所述系统还包括通用函数库;所述消息中心进程、所述看门狗父进程及各个所述功能模块进程均通过调用所述通用函数库中的函数以实现对应的功能。
9.可选的,在本发明实施例提供的一种可行方式中,所述消息中心进程、所述看门狗父进程、各个所述功能模块进程及各个所述看门狗父进程均基于多进程编程模型实现。
10.第二方面,本发明实施例提供一种进程通信方法,应用于嵌入式系统中的功能模块进程,所述嵌入式系统还包括消息中心进程和看门狗父进程,所述看门狗父进程与所述消息中心进程通信连接,所述功能模块进程基于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用方法进行编码并进程化以得到,所述方法包括:与所述消息中心进程建立通信连接;生成第一消息和第二消息,并将所述第一消息和所述第二消息发送至所述消息中心进程,其中,所述消息中心进程用于将所述第一消息转发至其他的一个或多个功能模块进程,和将所述第二消息转发至所述看门狗父进程,所述看门狗父进程用于接收功能模块进程发送的第二消息。
11.第三方面,本发明实施例提供一种进程通信方法,应用于嵌入式系统中的功能模块进程,所述嵌入式系统还包括消息中心进程和看门狗父进程,所述看门狗父进程与所述消息中心进程通信连接,所述功能模块进程基于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用方法进行编码并进程化以得到,所述装置包括:连接建立模块,用于与所述消息中心进程建立通信连接;生成模块,用于生成第一消息和第二消息,并将所述第一消息和所述第二消息发送至所述消息中心进程,其中,所述消息中心进程用于将所述第一消息转发至其他的一个或多个功能模块进程,和将所述第二消息转发至所述看门狗父进程,所述看门狗父进程用于接收功能模块进程发送的第二消息。
12.第四方面,本发明实施例提供一种计算机设备,包括存储器以及处理器,存储器存储有计算机程序,计算机程序在处理器上运行时执行如第一方面中任一种公开的进程通信方法。
13.第五方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序在处理器上运行时执行如第一方面中任一种公开的进程通信方法。
14.本发明实施例提供的嵌入式系统中,功能模块进程将生成的第一消息和第二消息发送至消息中心进程,消息中心进程将接收到的第一消息转发至其他的一个或多个功能模块进程,从而实现功能模块进程间的通信;同时,消息中心进程还将接收到的第二消息转发至看门狗父进程,以使看门狗父进程接收功能模块进程的第二消息从而监控功能模块进程的存活状态。
15.基于此,本发明实施例提供的嵌入式系统,基于消息中心进程实现了不同功能模块进程的独立通信,避免了任意两个功能模块进程间需单独设置通信机制的情形出现,从而降低了嵌入式系统的耦合度,并使得后期增添其他的功能模块的复杂度下降;同时,基于看门狗的设置,使得嵌入式系统中的每个功能模块进程均能得到稳定监控,确保了故障追溯的可行性。
附图说明
16.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
17.图1示出了本发明实施例提供的第一种嵌入式系统的结构示意图;图2示出了本发明实施例提供的第二种嵌入式系统的结构示意图;图3示出了本发明实施例提供的进程通信方法的流程示意图;图4示出了本发明实施例提供的进程通信装置的结构示意图。
具体实施方式
18.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
19.通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
20.在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
21.此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
22.除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
23.实施例1参照图1,示出了本发明实施例提供的第一种嵌入式系统的结构示意图,本发明实施例提供的嵌入式系统100包括消息中心进程110、看门狗父进程120及多个功能模块进程130,每个所述功能模块进程130均为所述看门狗父进程120的子进程,所述功能模块进程基130于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用方法进
行编码并进程化以得到。
24.所述看门狗父进程120和各个所述功能模块进程130均与所述消息中心进程110通信连接;所述看门狗父进程120用于监控各个所述功能模块进程130的运行状态;所述功能模块进程130用于将生成的第一消息和第二消息发送至所述消息中心进程110;所述消息中心进程110用于将接收到的第一消息转发至其他的一个或多个功能模块进程130,并将接收到的第二消息转发至所述看门狗父进程120;所述看门狗父进程120用于接收功能模块进程130发送的所述第二消息。
25.需说明的是,本发明实施例中的功能模块进程130包括基于软件/编码实现的模块,和包括调用硬件/外设而实现相应功能的模块,也即,基于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用方法进行编码并进程化以得到。
26.还需说明的是,图1中仅示出了一个功能模块进程130,但在实际生产环境中,功能模块进程130的数量为两个或两个以上。示范性的,在本发明实施例提供的一种可行方式中,嵌入式系统100中设置有网络模块进程、指纹仪模块进程、人脸识别模块进程、二维码模块进程、qt界面模块进程、锁控板模块进程、音频播放模块进程、控制面板模块进程及升级模块进程等功能模块进程130。
27.进一步的,本发明实施例中任意一个功能模块进程130均不具备与其他功能模块进程130直接通信的能力,也因此,两个功能模块进程130之间需通过消息中心进程110进行通信。
28.示范性的,设嵌入式系统100包括第一功能模块进程和第二功能模块进程,则第一功能模块进程与第二功能模块进程的通信过程为:第一功能模块进程生成通信数据,并将通信数据发送至消息中心进程110;消息中心进程110将通信数据发送至第二功能模块进程,从而完成第一功能模块进程与第二功能模块的通信。
29.更进一步的,能够理解的是,本发明实施例提供的嵌入式系统100启动时,消息中心进程110将首先启动,以为各个功能模块进程130提供通信基础。
30.也因此,每个功能模块进程130之间的通信功能互不相干,相互独立,从而削弱了嵌入式系统100的耦合性。
31.还需说明的是,本发明实施例将为每一个功能模块进程130均为看门狗父进程120的子进程,也因此,看门狗父进程120将实时监控各个功能模块进程130的存活状态/运行状态。具体的,本发明实施例中的功能模块进程130除用于生成第一消息外,还用于生成第二消息,并将第二消息发送至消息中心进程110,而消息中心进程110还用于将接收到的第二消息发送至看门狗父进程120,以使看门狗父进程120能知晓此功能模块进程130的存活状态/运行状态。
32.不难理解的是,若功能模块进程130跑飞,因而未生成第二消息,进而消息中心进程110未将第二消息发送至看门狗父进程120时,看门狗父进程120则将认定此功能模块进程130跑飞,故控制此功能模块进程130重启/复位。
33.以及,可以想到的是,本发明实施例中的功能模块进程130实际为基于fork函数对看门狗父进程120进行复制以得到复制进程后,在复制进程的基础上增添相应代码/程序而
实现特定功能的进程。还能想到的是,基于fork函数而生成的复制进程为被复制进程的子进程,也因此,本发明实施例中各个功能模块进程130为看门狗父进程120的子进程。
34.基于此,本发明实施例提供的嵌入式系统100,基于消息中心进程110实现了不同功能模块进程130的独立通信,避免了任意两个功能模块进程130间需单独设置通信机制的情形出现,从而减低了嵌入式系统100的耦合度,并使得后期增添其他的功能的复杂度下降;同时,基于看门狗的设置,使得嵌入式系统100中的每个功能模块进程130均能得到稳定监控,确保了故障追溯的可行性。
35.可选的,在本发明实施例提供的一种可行方式中,具体可参考图2,示出了本发明实施例提供的第二种嵌入式系统的结构示意图,此种可行方式下所述嵌入式系统100对应的嵌入式主板搭载有看门狗硬件模块140;所述看门狗父进程120还用于每隔预设时间间隔对所述看门狗硬件模块140执行喂狗操作;所述看门狗硬件模块140用于若未在所述预设时间间隔执行喂狗操作时,则执行所述嵌入式系统100的重启操作。
36.也即,本发明实施例中的看门狗父进程120除用于监控各个功能模块进程130外,还负责整个嵌入式系统100的正常运作。具体的,若看门狗父进程120定期向看门狗硬件模块140发送指令/命令以使看门狗硬件模块140完成喂狗,则看门狗硬件模块140确定看门狗父进程120处于正常运行状态,进而知晓嵌入式系统100亦处于正常运作状态。
37.而若看门狗父进程120未定期向看门狗硬件模块140发送指令/命令以使其完成喂狗,则可能是因为嵌入式系统100处于异常状态,进而导致看门狗父进程120无法向看门狗硬件模块140发送指令,故看门狗硬件模块140将触发嵌入式系统100的重启操作,以将各个进程复位,以避免嵌入式系统100卡死而无法正常运作。
38.可选的,在本发明实施例提供的一种可行方式,所述看门狗父进程120与各个所述功能模块进程130基于unix信号机制通信连接;所述看门狗父进程120还用于控制处于异常运行状态的功能模块进程130进行重启。
39.可以理解的是,基于消息中心进程110完成消息转发时,可能会存在一定延时,也即,当功能模块进程130跑飞而未产生第二消息时,基于消息中心进程110获取第二消息的看门狗父进程120可能难以立即知晓功能模块进程130已跑飞。
40.基于此,本发明实施例还针对看门狗父进程120和功能模块进程130的及时通信,单独设置了二者间基于unix信号机制完成通信的方式,使得功能模块进程130异常退出时,看门狗父进程120将直接将功能模块进程130重启,以实现功能模块进程130的快速恢复。
41.并且,因unix信号机制的设置,故消息中心进程110与功能模块进程130的通信异常时,看门狗父进程120亦能通过unix信号机制知晓功能模块进程130的运行状态。
42.可选的,在本发明实施例提供的一种可行方式中,所述第一消息包括类别数据,所述类别数据表示所述第一消息的类别;所述功能模块进程130还用于向所述消息中心进程110发送消息订阅数据,其中,所述消息订阅数据表示所述功能模块进程130订阅的消息的类别;所述消息中心进程110还用于在接收到所述功能模块进程130发送的消息订阅数
据时,记录所述消息中心进程110订阅的消息的类别;所述消息中心进程110还用于在接收到所述功能模块进程130发送的第一消息时,基于所述第一消息的类别和各个所述功能模块进程130订阅的消息的类别,将所述第一消息转发至匹配的功能模块进程130。
43.可以理解的是,此种可行方式下,本发明实施例中的各个功能模块进程130能视作消息中心进程110的客户端,而消息中心进程110能视作各个功能模块进程130的服务端。
44.进一步的,功能模块进程130通过向消息中心进程110发送消息订阅数据,以使消息中心进程110知晓自身欲订阅/收到的消息的类别。
45.消息中心进程110则根据各个功能模块进程130发送的消息订阅数据,记录各个功能模块进程130欲订阅的消息的类别。进而,在收到任意一个功能模块进程130发送的第一消息时,将根据接收到的第一消息的类别,及先前记录的各个功能模块进程130欲订阅的消息的类别,确定此第一消息对应的接收方/需求方/目标方,进而将此第一消息发送至对应的接收方/接收端。
46.示范性的,设存在第一功能模块进程、第二功能模块进程、第三功能模块进程及第四功能模块进程,其中第一功能模块进程订阅a类型的消息/数据,第二功能模块进程订阅b类型的消息,第三功能模块进程订阅c类型的消息,第四功能模块进程订阅d类型的消息。第一至第四功能模块进程基于自身欲订阅的消息的类型生成消息订阅数据后,将对应的消息订阅数据发送至消息中心进程110。进而,当消息中心进程110接收到任意一个或多个功能模块进程130生产并发送的a类型的消息、b类型的消息、c类型的消息及d类型的消息时,则将a类型的消息发送至第一功能模块进程,b类型的消息发送至第二功能模块进程,c类型的消息发送至第三消息模块进程,d类型的消息发送至第四消息模块进程。
47.在一种实例中,嵌入式系统100包括锁控板模块进程、音频播放模块进程、指纹仪模块进程及人脸识别模块进程等功能模块进程。其中,锁控板模块进程和音频播放模块进程均订阅了指纹仪模块进程的开门指令和人脸识别模块的关门指令,也即,锁控板模块进程和音频播放模块进程向消息中心进程110发送了相同的消息订阅数据。
48.进一步的,当指纹仪模块进程生成开门指令,并将开门指令发送至消息中心进程110时,消息中心进程110将开门指令转发至音频播放模块进程和锁控板模块进程,使得音频播放模块进程播放开锁提示音频,锁控板模块进程执行开锁。
49.而当人脸识别模块进程将关门指令发送至消息中心进程110,消息中心进程110将关门指令转发至音频播放模块进程和锁控板模块进程后,音频播放模块进程播放关锁提示音频,锁控板模块进程触发关锁。
50.基于此,本发明实施例使得需要进行通信的功能模块进程130只需与消息中心进程110建立通信连接,并向消息中心进程110发送对应的消息订阅数据以使消息中心进程110知晓自身欲订阅的消息的类别后,消息中心进程110将在接收到与自身欲订阅的消息的类别相同的第一消息时,则将此第一消息发送至功能模块进程130,以此实现了不同功能模块进程130在物理上的隔离,进一步削弱了不同功能模块进程的耦合性。
51.可选的,在本发明实施例提供的一种可行方式,所述系统还包括通用函数库;所述消息中心进程110、所述看门狗父进程120及各个所述功能模块进程130均通过调用所述通用函数库中的函数以实现对应的功能。
52.可以理解的是,虽然不同的进程用于实现不同的功能,但同属于一个系统各个进程可能会执行相同的程序模块,也即,调用相同的函数,或是执行不同的函数以实现相同的步骤/程序/指令,如日志调试、json字符串解析、消息队列及定时器等等。
53.正因此,本发明实施例将上述通用的功能封装为函数,并形成通用函数库,以使各个进程模块能通用函数库中的函数以实现对应的功能,从而简化每个功能模块的开发难度。
54.可选的,在本发明实施例提供的一种可行方式,所述消息中心进程、所述看门狗父进程及各个所述功能模块进程均基于多进程编程模型实现。
55.实施例2与本发明实施例1提供的嵌入式方法相对应的,本发明实施例2还提供一种进程通信方法,参照图3,示出了本发明实施例提供的进程通信方法的流程示意图,本发明实施例提供的进程通信方法应用于嵌入式系统中的功能模块进程,所述嵌入式系统还包括消息中心进程和看门狗父进程,所述看门狗父进程与所述消息中心进程通信连接,所述功能模块进程基于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用方法进行编码并进程化以得到,所述方法包括:步骤s210,与所述消息中心进程建立通信连接;步骤s220,生成第一消息和第二消息,并将所述第一消息和所述第二消息发送至所述消息中心进程,其中,所述消息中心进程用于将所述第一消息转发至其他的一个或多个功能模块进程,和将所述第二消息转发至所述看门狗父进程,所述看门狗父进程用于接收功能模块进程发送的第二消息。
56.也即,本发明实施例中的功能模块进程将在与消息中心进程建立通信后,将通过消息中心进程完成自身与其他功能模块进程的通信。具体的,功能模块进程生成第一消息,并将第一消息发送至消息中心进程;消息中心进程接收到第一消息,将第一消息转发至其他的一个或多个功能模块进程,由此完成不同功能模块间的消息通信。
57.同时,本发明实施例中的功能模块进程还用于向消息中心进程发送第二消息,以使消息中心进程将第二消息转发至看门狗父进程,而看门狗父进程则基于接收到的第二消息以完成功能模块监控。不难理解的是,若看门狗父进程未接收到第二消息,则表明功能模块进程跑飞/异常,换言之,本发明实施例中的看门狗父进程用于实时监控各个功能模块进程的运行状态/存活状态。
58.基于此,本发明实施例使得各个功能模块进程间的通信将基于消息中心进程的转发机制而实现,从而避免了任意两个功能模块进程间需单独设置通信通道的情形出现,从而降低了嵌入式系统中的通信复杂度;并且,基于看门狗的设置,使得嵌入式系统中的每个功能模块进程均能得到稳定监控,确保了故障追溯的可行性。
59.实施例3与本发明实施例2提供的进程通信方法相对应的,本发明实施例3还提供一种进程通信装置,参照图4,示出了本发明实施例提供的进程通信装置300的结构示意图,本发明实施例提供的进程通信装置应用于嵌入式系统中的功能模块进程,所述嵌入式系统还包括消息中心进程和看门狗父进程,所述看门狗父进程与所述消息中心进程通信连接,所述功能模块进程基于对一种抽象功能进行编码并进程化以得到,或是基于对物理设备的功能调用
方法进行编码并进程化以得到,所述装置包括:建立模块310,用于与所述消息中心进程建立通信连接;生成模块320,用于生成第一消息和第二消息,并将所述第一消息和所述第二消息发送至所述消息中心进程,其中,所述消息中心进程用于将所述第一消息转发至其他的一个或多个功能模块进程,和将所述第二消息转发至所述看门狗父进程,所述看门狗父进程用于接收功能模块进程发送的第二消息。
60.本技术实施例提供的进程通信装置300能够实现实施例2对应的进程通信方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
61.本发明实施例还提供一种计算机设备,包括存储器以及处理器,存储器存储有计算机程序,计算机程序在处理器上运行时执行如实施例2中所述的进程通信方法。
62.本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序在处理器上运行时执行如实施例2中所述的进程通信方法。
63.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
64.另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
65.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
66.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1