CN109960589B - 嵌入式系统的系统软件层的实现方法、装置及可读介质 - Google Patents
嵌入式系统的系统软件层的实现方法、装置及可读介质 Download PDFInfo
- Publication number
- CN109960589B CN109960589B CN201910227380.5A CN201910227380A CN109960589B CN 109960589 B CN109960589 B CN 109960589B CN 201910227380 A CN201910227380 A CN 201910227380A CN 109960589 B CN109960589 B CN 109960589B
- Authority
- CN
- China
- Prior art keywords
- event
- queue
- message
- array
- event queue
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 abstract description 26
- 238000010586 diagram Methods 0.000 description 13
- 238000007639 printing Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000005096 rolling process Methods 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012546 transfer Methods 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及嵌入式系统的系统软件层,尤其涉及一种嵌入式系统的系统软件层的实现方法、装置及计算机可读介质。该方法包括:为主程序单元分配一共用的第一内存空间;在所述第一内存空间加载事件队列,所述事件队列中存储有指示所有待执行的任务的事件;以及由所述主程序单元循环读取所述事件队列以调用所述事件队列中的任务,并使用所述第一内存空间执行所调用的任务。本发明能够在满足多种、复杂功能需求的同时,降低对ROM和RAM的容量需求,以降低嵌入式系统的成本并缩小其体积。
Description
技术领域
本发明涉及嵌入式系统的系统软件层,尤其涉及一种嵌入式系统的系统软件层的实现方法、一种嵌入式系统的系统软件层的实现装置,以及一种计算机可读介质。
背景技术
嵌入式计算机系统简称嵌入式系统,是一种以应用程序为中心、以计算机技术为基础,并且软硬件可裁剪的适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
如图1所示,典型的嵌入式系统可以由硬件层11、中间层12,系统软件层13和应用软件层14组成。
硬件层11主要包括微处理器(Microprocessor unit,MPU)/微控制器(Microcontroller unit,MCU)111、存储器112、通用设备接口113,以及通用输入输出接口(General-purpose input/output,GPIO)114。
中间层12也称为硬件抽象层(Hardware abstract layer,HAL),主要用于实现底层硬件的驱动程序121,并封装接口供系统软件层13或应用软件层14调用。
系统软件层13由实时操作系统(Real time operating system,RTOS)131、文件系统132、图形用户接口(Graphical user interface,GUI)133、网络系统134及通用组件模块135组成。
应用软件层14主要用于安装实现嵌入式系统具体功能的应用程序141。
图2示出了现有嵌入式系统的实时操作系统131的任务调度示意图。如图2所示,现有的嵌入式系统需要为每一个待处理的任务预留独立的线程栈空间及一定的内存余量,以供主程序执行这些任务。
因此,现有的嵌入式系统对只读存储器(Read-Only Memory,ROM)和随机存取存储器(Random Access Memory,RAM)的容量要求较高。尤其是在一些用于实现多种、复杂功能的大型嵌入式系统中,其ROM的容量往往需要达到8MB以上,而其RAM的容量也需要达到1MB以上。上述大容量的只读存储器和大容量的随机存取存储器不但造价高昂,而且体积较大,需要通过外接的方式来连接嵌入式系统。
为了克服现有技术存在的上述缺陷,本领域亟需一种实现嵌入式系统的系统软件层的技术,从而在满足多种、复杂功能需求的同时,降低对ROM和RAM的容量需求,以降低嵌入式系统的成本并缩小其体积。
发明内容
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
为了克服现有技术存在的上述缺陷,在满足多种、复杂功能需求的同时,降低对ROM和RAM的容量需求,以降低嵌入式系统的成本并缩小其体积,本发明提供了一种嵌入式系统的系统软件层的实现方法、一种嵌入式系统的系统软件层的实现装置,以及一种计算机可读介质。
本发明提供的上述嵌入式系统的系统软件层的实现方法,包括:
为主程序单元分配一共用的第一内存空间;
在所述第一内存空间加载事件队列,所述事件队列中存储有指示所有待执行的任务的事件;以及
由所述主程序单元循环读取所述事件队列以调用所述事件队列中的任务,并使用所述第一内存空间执行所调用的任务。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述主程序单元可以响应于所调用的当前任务执行完毕,依序读取所述加载事件队列中的下一事件以调用并执行对应的下一任务。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,还可以包括:
向所述事件队列写入新事件。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述向所述事件队列写入新事件,可以包括:
由所述主程序单元在执行某一任务的过程中向所述事件队列写入所述新事件。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,还可以包括:
为多个中断程序单元分配一共用的第二内存空间;
所述向所述事件队列写入新事件,可以包括:
由所述多个中断程序单元中的一者或多者在执行中断处理时,向所述事件队列写入所述新事件。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述加载事件队列,可以包括:
创建数组、指示读取位置的数组读取索引变量,以及指示写入位置的数组写入索引变量,所述数组读取索引变量在一次事件读取后递增,所述数组写入索引变量在一次事件写入后递增。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,当所述数组读取索引变量和所述数组写入索引变量达到最大数组索引时,可以恢复至所述数组的最小数组索引变量。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述加载事件队列可以包括加载多个事件队列,每个事件队列对应不同的优先级,
所述循环读取所述事件队列可以包括按照优先级顺序读取所述多个事件队列,
所述写入新事件可以包括按照所述新事件的优先级写入对应优先级的事件队列。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述事件队列中存储的事件可以包括事件类型的事件和消息类型的事件,所述实现方法还可以包括:
在所述第一内存空间加载消息队列,所述消息队列中依序存储有与所述事件队列中的消息类型的事件所对应的消息,
所述读取所述事件队列以调用所述事件队列中的任务包括:
若读取的事件为事件类型,则调用并执行预先为该事件类型的事件注册的任务;以及
若读取的事件为消息类型,则读取所述消息队列以获取与该消息类型的事件对应的消息,以利用所读取的消息中的信息调用并执行预先为该消息类型的事件注册的任务。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,还可以包括:
向所述事件队列写入新事件,其中若所述新事件为消息类型,则进一步向所述消息队列中写入与该新事件对应的消息。
根据本发明的另一方面,本文还提供了一种嵌入式系统的系统软件层的实现装置。
在本发明提供的上述嵌入式系统的系统软件层的实现装置中,包括:
存储器,以及
处理器,所述处理器配置为:
为主程序单元分配一共用的第一内存空间;
在所述第一内存空间加载事件队列,所述事件队列中存储有指示所有待执行的任务的事件;以及
由所述主程序单元循环读取所述事件队列以调用所述事件队列中的任务,并使用所述第一内存空间执行所调用的任务。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现装置中,所述处理器可以进一步配置为由所述主程序单元响应于所调用的当前任务执行完毕,依序读取所述加载事件队列中的下一事件以调用并执行对应的下一任务。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述处理器可以进一步配置为:
向所述事件队列写入新事件。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述处理器可以进一步配置为由所述主程序单元在执行某一任务的过程中向所述事件队列写入所述新事件。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述处理器可以进一步配置为:
为多个中断程序单元分配一共用的第二内存空间;以及
由所述多个中断程序单元中的一者或多者在执行中断处理时向所述事件队列写入所述新事件。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述处理器可以进一步配置为:
创建数组、指示读取位置的数组读取索引变量,以及指示写入位置的数组写入索引变量以加载所述事件队列,所述数组读取索引变量在一次事件读取后递增,所述数组写入索引变量在一次事件写入后递增。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,当所述数组读取索引变量和所述数组写入索引变量达到最大数组索引时,可以恢复至所述数组的最小数组索引变量。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述处理器可以进一步配置为:
加载多个事件队列,每个事件队列对应不同的优先级,
所述循环读取所述事件队列,可以包括按照优先级顺序读取所述多个事件队列,
所述写入新事件,可以包括按照所述新事件的优先级写入对应优先级的事件队列。
可选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述事件队列中存储的事件可以包括事件类型和消息类型,所述处理器可以进一步配置为:
在所述第一内存空间加载消息队列,所述消息队列中可以依序存储有与所述事件队列中的消息类型的事件所对应的消息,
若读取的事件为事件类型,则可以调用并执行预先为该事件类型的事件注册的任务;以及
若读取的事件为消息类型,则可以读取所述消息队列以获取与该消息类型的事件对应的消息,以利用所读取的消息中的信息调用并执行预先为该消息类型的事件注册的任务。
优选地,在本发明提供的上述嵌入式系统的系统软件层的实现方法中,所述处理器可以进一步配置为:
向所述事件队列写入新事件,其中若所述新事件为消息类型,则可以进一步向所述消息队列中写入与该新事件对应的消息。
根据本发明的另一方面,本文还提供了一种计算机可读介质。
本发明提供的上述计算机可读介质上可以存储有计算机程序。所述计算机程序在由处理器执行时,可以实施上述任意一种嵌入式系统的系统软件层的实现方法。
附图说明
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1为现有的嵌入式系统的系统框架示意图。
图2为现有的嵌入式系统的实时操作系统的任务调度示意图。
图3为根据本发明的一方面提供的嵌入式系统的系统框架示意图。
图4为根据本发明的一方面提供的内存空间分配示意图。
图5为根据本发明的一方面提供的嵌入式系统的系统软件层的实现方法的流程示意图。
图6为根据本发明的一方面提供的嵌入式系统的实时操作系统的任务调度示意图。
图7为根据本发明的一方面提供的嵌入式系统读取和写入事件/消息的示意图。
图8为根据本发明的一方面提供的带优先级的事件处理机制的示意图。
图9为根据本发明的一方面提供的嵌入式系统的系统软件层的实现装置的结构示意图。
附图标记:
11 硬件层;
111 微处理器/微控制器;
112 存储器;
113 通用设备接口;
114 通用输入输出接口;
12 中间层;
121 硬件驱动程序;
13 系统软件层;
131 实时操作系统;
132 文件系统;
133 图形用户接口;
134 网络系统;
135 通用组件模块;
136 替代实时操作系统的新架构;
14 应用软件层;
141 应用程序;
211-2N1 函数;
501-503 嵌入式系统的系统软件层的实现方法的步骤;
711-71N 事件队列中的数组分量;
721-72M 消息队列中的数组分量;
73 数组读取索引变量;
74 数组写入索引变量;
QH 高优先级事件队列;
QM 中优先级事件队列;
QL 低优先级事件队列;
90 嵌入式系统的系统软件层的实现装置;
91 存储器;
92 处理器。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其他优点及功效。虽然本发明的描述将结合优选实施例一起介绍,但这并不代表此发明的特征仅限于该实施方式。恰恰相反,结合实施方式作发明介绍的目的是为了覆盖基于本发明的权利要求而有可能延伸出的其它选择或改造。为了提供对本发明的深度了解,以下描述中将包含许多具体的细节。本发明也可以不使用这些细节实施。此外,为了避免混乱或模糊本发明的重点,有些具体细节将在描述中被省略。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
另外,在以下的说明中所使用的“上”、“下”、“左”、“右”、“顶”、“底”、“水平”、“垂直”应被理解为该段以及相关附图中所绘示的方位。此相对性的用语仅是为了方便说明之用,其并不代表其所叙述的装置需以特定方位来制造或运作,因此不应理解为对本发明的限制。
能理解的是,虽然在此可使用用语“第一”、“第二”、“第三”等来叙述各种组件、区域、层和/或部分,这些组件、区域、层和/或部分不应被这些用语限定,且这些用语仅是用来区别不同的组件、区域、层和/或部分。因此,以下讨论的第一组件、区域、层和/或部分可在不偏离本发明一些实施例的情况下被称为第二组件、区域、层和/或部分。
为了克服现有技术存在的上述缺陷,在满足中、大型嵌入式系统的多种、复杂功能需求的同时,降低对ROM和RAM的容量需求,以降低嵌入式系统的成本并缩小其体积,本发明提供了一种嵌入式系统的系统软件层的实现方法的实施例、一种嵌入式系统的系统软件层的实现装置的实施例,以及一种计算机可读介质的实施例。
在本实施例中,以同时具有打印、复印、扫描、传真等多种功能的多功能机的嵌入式系统为例来阐述上述中、大型嵌入式系统的多种、复杂的功能需求。本领域的技术人员可以理解,在其他实施例中,本领域的技术人员也可以将本实施例提供的嵌入式系统的系统软件层的实现方法、装置,以及计算机可读介质应用于其他相近的技术领域。
请参考图3和图4,图3为根据本发明的一方面提供的嵌入式系统的系统框架示意图。图4为根据本发明的一方面提供的内存空间分配示意图。
如图3所示,相比于图1所示的现有的嵌入式系统,本实施例提供的上述嵌入式系统不再采用传统的实时操作系统131的架构,而是采用了一种替代实时操作系统的新架构136。
在图3所示的替代实时操作系统的新架构136中,本发明提供的上述嵌入式系统舍弃了现有实时操作系统中其余的功能,在保持植入实时操作系统时的程序架构的同时,减少对随机存取存储器的开销。如图4所示,本发明提供的上述嵌入式系统仅通过一个主程序的系统栈来执行待处理的任务,因此不再需要在随机存取存储器(Random Access Memory,RAM)中为每个任务分配栈空间,也不再需要被任务间同步和通信机制占用RAM的空间,从而大大降低了对ROM和RAM的容量需求。
具体地,请进一步参考图5和图6。图5为根据本发明的一方面提供的嵌入式系统的系统软件层的实现方法的流程示意图。图6为根据本发明的一方面提供的嵌入式系统的实时操作系统的任务调度示意图。
如图5所示,在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,可以包括步骤:
501:为主程序单元分配一个共用的第一内存空间。
上述主程序单元可以在嵌入式系统的微处理器或微控制器中执行,主要用于读取事件队列中的任务,并执行所调用的任务。
具体地,上述主程序单元可以响应于所调用的当前任务执行完毕,依序读取加载事件队列中的下一事件,以调用并执行对应的下一任务。
上述第一内存空间可以被分配于嵌入式系统的RAM中,可以如图6中的系统栈空间所示地用于执行上述主程序及各种待执行的任务的事件。不同于现有的实时操作系统中的任务或线程的概念,上述第一内存空间的执行权限并不是由操作系统预先分配,而是由主程序根据事件队列和消息队列中读出的事件和消息调用而获得的。
本领域的技术人员可以理解,如图4所示,由于在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,上述第一内存空间可以被用于执行多种不同的任务,因此可以不必再为每种任务单独分配线程栈空间和一定的内存余量,而是可以仅分配一个足以执行任何种类任务的系统栈空间及相应的内存余量,即可满足嵌入式系统多种、复杂功能的使用需求,从而大大降低了对ROM和RAM的容量需求。
此外,本领域的技术人员还可以理解,在本实施例提供的上述同时具有打印、复印、扫描、传真等多种功能的多功能机的嵌入式系统中,其各种功能往往不会同时运行。因此,本实施例提供的上述嵌入式系统的系统软件层的实现方法完全能够满足多功能机的嵌入式系统打印、复印、扫描、传真等多种功能的实际使用需求。
如图5所示,在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,还可以包括步骤:
502:在第一内存空间加载事件队列。
本实施例提供上述多功能机的嵌入式系统所要执行的任务可以包括打印、复印、扫描、传真等多种不同类型的事件,所有这些待执行的任务的事件都可以按数组的形式存储于事件队列中。数组的每个分量中存储的数据可以用于指示对应的具体事件,例如:打印、复印、扫描、传真等。
如图6所示,上述多种不同类型的事件都可以加载于主程序的系统栈空间,也就是上述第一内存空间。每一事件模块中还可以进一步包括一个或多个函数211-2N1。函数211-2N1用于执行控制滚轮滚动、控制硒鼓供粉等具体步骤,以实现打印、复印、扫描、传真等不同的复杂功能。
本领域的技术人员可以理解,本实施例以多功能机的打印、复印、扫描、传真等功能作为嵌入式系统所要执行的任务的事件,以及以控制滚轮滚动、控制硒鼓供粉等具体步骤作为事件中的函数,只是为了便于公众理解本发明,而非用于限制本发明的保护范围。
实际上,在主程序运行的过程中,嵌入式系统所要执行的任务的事件也可以是一个具体的函数,该函数输出的结果可以是触发一个或多个后续部件进行工作以完成待执行的任务的触发信号。
相应地,事件中的函数的输出结果也可以是触发其对应的一个或多个后续部件进行工作以完成对应步骤的触发信号。
在其他实施例中,本领域的技术人员也可以将嵌入式系统应用于其他设备中,已完成其他类型的待执行的任务。相应地,待执行的任务的事件及其中的函数也可以表现为其他形式。
优选地,在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,事件队列中存储的事件可以进一步包括事件类型的事件和消息类型的事件。
事件类型的事件可以是枚举类型的全局变量,变量的每一个取值可以指示一种特定的任务。消息类型的变量可以是全局结构体变量,结构体中可以包括一个和事件类型的事件相同的成员变量,以及若干个用于存储和传递信息的成员变量。
相应地,本实施例提供的上述嵌入式系统的系统软件层的实现方法,还可以进一步在第一内存空间加载消息队列。消息队列中依序存储有与事件队列中的消息类型的事件所对应的消息。
例如:多功能机的嵌入式系统需要执行的发出提示音的任务可以是一个事件类型的事件。嵌入式系统的事件队列中可以存储有指示多功能机的蜂鸣器发声的事件类型事件。
相对地,多功能机的嵌入式系统需要执行的打印任务则可以是一个消息类型的事件。嵌入式系统的事件队列中可以存储有指示多功能机进行打印的消息类型事件。相应地,嵌入式系统的消息队列中可以存储有打印事件所对应的分辨率、饱和度等打印参数的消息。
当嵌入式系统读取事件队列以调用事件队列中的任务时,若读取到的数组分量指示该事件为事件类型,则可以调用并执行预先为该事件类型的事件注册的任务(例如:上述发出提示音的任务)。
相对地,若读取到数组分量指示该事件为消息类型(例如:上述打印任务),则可以进一步读取消息队列以获取与该消息类型的事件对应的消息(例如:分辨率、饱和度等打印参数的消息),从而利用所读取的消息中的信息调用并执行预先为该消息类型的事件注册的打印任务。
本领域的技术人员可以理解,上述以发出提示音为事件类型的事件,以打印任务为消息类型的事件的阐述只是本实施例提供的一种具体案例,主要用于让公众更好地理解本发明,而非用于限制本发明的保护范围。在其他实施例中,发出提示音也可以作为消息类型的事件以进一步控制提示音的形式,打印任务也可以作为事件类型的事件以进行固定参数的打印。
优选地,在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,还可以进一步地向事件队列写入新事件。更进一步地,若该新事件为消息类型的事件,则可以向消息队列中写入与该新事件对应的消息。
如图6所示,在事件模块执行其内部的函数211-2N1后,可以生成触发一个或多个后续部件进行工作以完成待执行的任务的触发信号。该触发信号可以是事件类型的事件,也可以进一步包括相应的消息类型的事件。
也就是说,主程序单元在执行该事件模块对应的任务的过程中,可以向事件队列写入该触发信号对应的新事件。
为了允许用户在嵌入式系统的日常应用中,通过输入一些指令来实现对应的功能。在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,还可以进一步地在RAM中为多个中断程序单元分配一个共用的第二内存空间(例如:图6中的中断栈空间)。
用户可以通过多个中断程序单元中的一者或多者在执行中断处理时,向事件队列写入需要执行的新事件。
在主程序单元持续地读取事件队列中事件的过程中,响应于中断程序单元发送的事件,主程序单元的执行权限可以优先切换到中断程序,直到中断程序单元将该新事件写入对应的事件队列的数组分量后才回到主循环,以继续执行未完成的读取事件的步骤。
本领域的技术人员可以理解,上述便于用户手动输入指令,只是本实施例提供的上述方案的有益效果之一。在其他实施例中,多个中断程序单元中的一者或多者也可以响应于传感器、云端信号接收器等器件传来的任何外部触发信号,向事件队列写入需要执行的新事件。
优选地,当事件队列中的事件总数等于事件队列的数组长度,即事件队列饱和时,主程序单元可以将待写入的事件队列的事件挂起,直到事件队列中有事件被执行后留出空余的数组分量再进行写入。
相应地,当消息队列中的消息总数等于消息队列的数组长度,即消息队列饱和时,主程序单元可以将待写入的事件队列的消息类型的事件挂起,直到事件队列中有消息类型的事件被执行后,消息队列留出空余的数组分量再进行写入。
本领域的技术人员可以理解,在上述消息队列饱和的情况下,主程序单元可以仅将写入消息类型事件的动作挂起,而不影响将事件类型的事件写入事件队列的动作。
请进一步参考图7,图7为嵌入式系统读取和写入事件/消息的示意图。
如上所述,嵌入式系统的主程序单元可以用于读取事件队列和消息队列中的任务以执行所调用的任务,并响应于事件模块输出的触发信号向事件队列和消息队列写入新事件/消息。
如图7所示,事件队列和消息队列可以是两个独立的环形缓冲区。事件队列的环形缓冲区中包括N个数组分量711-71N,数组分量711-71N主要用于存储事件队列中的事件类型事件和消息类型事件。消息队列的环形缓冲区中包括M个数组分量721-72M,数组分量721-72M主要用于存储事件队列中消息类型事件对应的消息。
主程序单元需要在系统栈空间中加载事件队列时,可以首先创建用于指示事件类型的事件队列数组、用于存储事件参数的消息队列数组、指示读取位置的数组读取索引变量73,以及指示写入位置的数组写入索引变量74。
如图7所示,在读取一次消息类型的事件后,数组读取索引变量73在事件队列的指针可以由713递增到714,而其在消息队列的指针可以由722递增到723。
相应地,在写入一次消息类型的事件后,数组写入索引变量74在事件队列的指针可以由717递增到718,而其在消息队列的指针可以由725递增到726。
本领域的技术人员可以理解,上述数组读取索引变量73(或数组写入索引变量74)在事件队列上的指针和在消息队列上的指针同时递增的方式,只是相应于读取(或写入)消息类型事件的具体案例。而在读取(或写入)事件类型事件时,数组读取索引变量73(或数组写入索引变量74)在事件队列上的指针可以递增,而其在消息队列上的指针则不会递增。
如图5所示,在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,还可以包括步骤:
503:由主程序单元循环读取事件队列以调用事件队列中的任务,并使用第一内存空间执行所调用的任务。
为了确保嵌入式系统能够持续地运行,上述读取和写入事件队列中的任务的步骤可以循环地进行。
具体来说,当数组读取索引变量73达到最大数组索引71N时,可以自行恢复至数组的最小数组索引变量711。相应地,当数组写入索引变量74达到最大数组索引72M时,也可以自行恢复至数组的最小数组索引变量721。
在本实施例提供的上述嵌入式系统的系统软件层的实现方法中,由于事件类型的事件包含的信息量较小,事件队列中的每个数组分量所占用的内存也相应较小,每个数组分量仅需存储对应打印、复印、扫描、传真等不同事件对应的取值,即可供嵌入式系统调用对应的事件来执行任务。
相对地,消息类型的事件包含的信息量较大,消息队列中的每个数组分量所占用的内存较大,需要存储消息事件中的全部消息(例如:分辨率、饱和度等打印参数的消息),才能供嵌入式系统正确地执行对应的任务。
本领域的技术人员可以理解,上述采用两个独立的环形缓冲区来分别存储事件类型的事件和消息类型的事件中消息的方案,只是本实施例提供的一种优选方案,主要用于节省内存空间。
由于为数据量较大的消息类型事件单独设置了用于存储消息数据的消息队列,因此不必再为事件队列中每个数组分量分配足以存储相应消息数据的内存空间。本领域的技术人员可以在写入消息类型的事件时,使用数组读取索引变量73和数组写入索引变量74对事件队列数组和消息队列数组中的分量进行关联,以便于嵌入式系统在读取消息类型的事件时能够获取到对应的消息数据,从而正确地执行待执行的任务。
通常情况下,上述由用户手动输入或由外部器件写入的新事件可能因重要程度的不同或执行条件的不同,而对执行的先后有一定的要求。为了便于嵌入式系统按照需要的顺序执行不同的任务,本实施例提供的上述嵌入式系统的系统软件层的实现方法,还可以进一步地在上述第一空间(即系统栈空间)内加载多个事件队列,其中每个事件队列对应不同的优先级。
请进一步参考图8,图8示出了本实施例提供的带优先级的事件处理机制。
如图8所示,主程序单元可以按照优先级顺序从QH到QM再到QL依次读取多个事件队列。只有检查到高优先级事件队列QH中没有任何事件的情况下,主循环才会进一步检查并执行中优先级事件队列QM中的事件。同理,只有检查到高优先级事件队列QH和中优先级事件队列QH中都没有任何事件的情况下,主循环才会进一步检查并执行低优先级事件队列QL中的事件。当所有事件队列中事件总数为零,即已经完成所有的事件时,主循环可以进入待机状态,待主程序单元或中断程序单元向事件队列写入新事件后,再继续按照优先级顺序从QH到QM再到QL依次读取多个事件队列。
本领域的技术人员可以理解,在执行完任意事件队列中的一个事件后,主程序都会返回主循环起点,以重新从高优先级队列QH检查有无时间。因此,一旦主程序或中断程序单元按照新事件的优先级,将新事件写入对应优先级的事件队列,主程序都能在完成当前事件后的第一时间执行优先级较高的事件队列中事件,从而大大缩短了任务的响应时间。
与现有的抢占式实时操作系统相比,虽然在本实施例提供的上述带优先级的事件处理机制中,高优先级的任务需要等到当前任务执行完成后才能被调用执行,响应时间稍长,但对于响应时延要求在毫秒级别的嵌入式系统,本实施例提供的上述带优先级的事件处理机制已足够胜任。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序。发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
根据本发明的另一方面,本文还提供了一种嵌入式系统的系统软件层的实现装置90。
如图9所示,本实施例提供的上述嵌入式系统的系统软件层的实现装置90可以包括存储器91和耦接至存储器91的处理器92。
在本实施例提供的上述嵌入式系统的系统软件层的实现装置90中,上述处理器92可以配置为实现上述实施例提供的任意一种嵌入式系统的系统软件层的实现方法。
根据本发明的另一方面,本文还提供了一种计算机可读介质的实施例。
本实施例提供的上述计算机可读介质上存储有计算机程序。该计算机程序由处理器92执行时,可以实现上述实施例提供的任意一种嵌入式系统的系统软件层的实现方法。
本领域技术人员将可理解,信息、信号和数据可使用各种不同技术和技艺中的任何技术和技艺来表示。例如,以上描述通篇引述的数据、指令、命令、信息、信号、位(比特)、码元、和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光学粒子、或其任何组合来表示。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
Claims (17)
1.一种嵌入式系统的系统软件层的实现方法,包括:
为主程序单元分配一共用的第一内存空间;
在所述第一内存空间加载事件队列,所述事件队列中存储有指示所有待执行的任务的事件;
由所述主程序单元循环读取所述事件队列以调用所述事件队列中的任务,并使用所述第一内存空间执行所调用的任务;执行完任意所述事件队列中的一个事件后,所述主程序返回主循环起点,重新循环读取所述事件队列;以及
向所述事件队列写入新事件,包括加载多个事件队列,每个事件队列对应不同的优先级,所述循环读取所述事件队列包括按照优先级顺序读取所述多个事件队列,所述写入新事件包括按照所述新事件的优先级写入对应优先级的事件队列。
2.如权利要求1所述的实现方法,其特征在于,所述主程序单元响应于所调用的当前任务执行完毕,依序读取所述加载事件队列中的下一事件以调用并执行对应的下一任务。
3.如权利要求1所述的实现方法,其特征在于,所述向所述事件队列写入新事件包括由所述主程序单元在执行某一任务的过程中向所述事件队列写入所述新事件。
4.如权利要求1所述的实现方法,其特征在于,还包括:
为多个中断程序单元分配一共用的第二内存空间;
所述向所述事件队列写入新事件包括由所述多个中断程序单元中的一者或多者在执行中断处理时向所述事件队列写入所述新事件。
5.如权利要求1所述的实现方法,其特征在于,所述加载事件队列包括创建数组以及指示读取位置的数组读取索引变量和指示写入位置的数组写入索引变量,所述数组读取索引变量在一次事件读取后递增,所述数组写入索引变量在一次事件写入后递增。
6.如权利要求5所述的实现方法,其特征在于,当所述数组读取索引变量和所述数组写入索引变量达到最大数组索引时恢复至所述数组的最小数组索引变量。
7.如权利要求1所述的实现方法,其特征在于,所述事件队列中存储的事件包括事件类型和消息类型,所述实现方法还包括:
在所述第一内存空间加载消息队列,所述消息队列中依序存储有与所述事件队列中的消息类型的事件所对应的消息,
所述读取所述事件队列以调用所述事件队列中的任务包括:
若读取的事件为事件类型,则调用并执行预先为该事件类型的事件注册的任务;以及
若读取的事件为消息类型,则读取所述消息队列以获取与该消息类型的事件对应的消息以利用所读取的消息中的信息调用并执行预先为该消息类型的事件注册的任务。
8.如权利要求7所述的实现方法,其特征在于,还包括:
向所述事件队列写入新事件,其中若所述新事件为消息类型,则进一步向所述消息队列中写入与该新事件对应的消息。
9.一种嵌入式系统的系统软件层的实现装置,包括:
存储器,以及
处理器,所述处理器配置为:
为主程序单元分配一共用的第一内存空间;
在所述第一内存空间加载事件队列,所述事件队列中存储有指示所有待执行的任务的事件;
由所述主程序单元循环读取所述事件队列以调用所述事件队列中的任务,并使用所述第一内存空间执行所调用的任务;
向所述事件队列写入新事件,包括加载多个事件队列,每个事件队列对应不同的优先级,所述循环读取所述事件队列包括按照优先级顺序读取所述多个事件队列,所述写入新事件包括按照所述新事件的优先级写入对应优先级的事件队列;以及
执行完任意事件队列中的一个事件后,主程序返回主循环起点,重新循环读取所述事件队列。
10.如权利要求9所述的实现装置,其特征在于,所述处理器进一步配置为由所述主程序单元响应于所调用的当前任务执行完毕,依序读取所述加载事件队列中的下一事件以调用并执行对应的下一任务。
11.如权利要求9所述的实现装置,其特征在于,所述处理器进一步配置为由所述主程序单元在执行某一任务的过程中向所述事件队列写入所述新事件。
12.如权利要求9所述的实现装置,其特征在于,所述处理器进一步配置为:
为多个中断程序单元分配一共用的第二内存空间;以及
由所述多个中断程序单元中的一者或多者在执行中断处理时向所述事件队列写入所述新事件。
13.如权利要求9所述的实现装置,其特征在于,所述处理器进一步配置为:
创建数组以及指示读取位置的数组读取索引变量和指示写入位置的数组写入索引变量以加载所述事件队列,所述数组读取索引变量在一次事件读取后递增,所述数组写入索引变量在一次事件写入后递增。
14.如权利要求13所述的实现装置,其特征在于,当所述数组读取索引变量和所述数组写入索引变量达到最大数组索引时恢复至所述数组的最小数组索引变量。
15.如权利要求9所述的实现装置,其特征在于,所述事件队列中存储的事件包括事件类型和消息类型,所述处理器进一步配置为:
在所述第一内存空间加载消息队列,所述消息队列中依序存储有与所述事件队列中的消息类型的事件所对应的消息,
若读取的事件为事件类型,则调用并执行预先为该事件类型的事件注册的任务;以及
若读取的事件为消息类型,则读取所述消息队列以获取与该消息类型的事件对应的消息以利用所读取的消息中的信息调用并执行预先为该消息类型的事件注册的任务。
16.如权利要求15所述的实现装置,其特征在于,所述处理器进一步配置为:
向所述事件队列写入新事件,其中若所述新事件为消息类型,则进一步向所述消息队列中写入与该新事件对应的消息。
17.一种计算机可读介质,其上存储有计算机程序,所述计算机程序在由处理器执行时实施如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910227380.5A CN109960589B (zh) | 2019-03-25 | 2019-03-25 | 嵌入式系统的系统软件层的实现方法、装置及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910227380.5A CN109960589B (zh) | 2019-03-25 | 2019-03-25 | 嵌入式系统的系统软件层的实现方法、装置及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109960589A CN109960589A (zh) | 2019-07-02 |
CN109960589B true CN109960589B (zh) | 2021-07-09 |
Family
ID=67024918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910227380.5A Expired - Fee Related CN109960589B (zh) | 2019-03-25 | 2019-03-25 | 嵌入式系统的系统软件层的实现方法、装置及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109960589B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256773A (zh) * | 2019-07-22 | 2021-01-22 | 沅圣科技股份有限公司 | 企业管理系统对接方法、电子装置及存储介质 |
CN112040317B (zh) * | 2020-08-21 | 2022-08-09 | 海信视像科技股份有限公司 | 事件响应方法及显示设备 |
CN112631762B (zh) * | 2020-12-31 | 2023-10-27 | 东软睿驰汽车技术(沈阳)有限公司 | 一种车辆任务切换的方法和装置 |
CN113171069B (zh) * | 2021-03-05 | 2024-01-26 | 上海立阖泰医疗科技有限公司 | 一种嵌入式图形血压测量系统 |
CN115185615B (zh) * | 2022-09-09 | 2022-12-02 | 湖南三湘银行股份有限公司 | 基于内存空间优化的插件程序调用方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6023761A (en) * | 1997-08-13 | 2000-02-08 | Vlsi Technology, Inc. | Method and system for using decompression on compressed software stored in non-volatile memory of an embedded computer system to yield decompressed software including initialized variables for a runtime environment |
CN101620535B (zh) * | 2009-07-29 | 2012-06-06 | 北京航空航天大学 | 一种机载计算机软件通用框架设计方法 |
CN102270189B (zh) * | 2011-06-17 | 2013-02-13 | 西安电子科技大学 | 基于fpga多核系统的核间通信方法 |
CN103294544B (zh) * | 2012-02-27 | 2016-08-17 | 展讯通信(上海)有限公司 | 嵌入式系统及其中断处理方法与装置 |
CN108121596A (zh) * | 2017-12-20 | 2018-06-05 | 唐山松下产业机器有限公司 | 数据传输方法及装置、存储介质、电子设备 |
CN108536527B (zh) * | 2018-02-08 | 2020-10-30 | 山东省科学院自动化研究所 | 一种嵌入式软件的任务调度方法及装置 |
-
2019
- 2019-03-25 CN CN201910227380.5A patent/CN109960589B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN109960589A (zh) | 2019-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960589B (zh) | 嵌入式系统的系统软件层的实现方法、装置及可读介质 | |
US11467769B2 (en) | Managed fetching and execution of commands from submission queues | |
US10133598B2 (en) | Systems and methods of using a hypervisor to assign virtual processor priority based on task priority and to schedule virtual processors for guest operating systems | |
KR101607905B1 (ko) | 가상처리장치의 인터럽트 제어 | |
US20130091311A1 (en) | Device management using a dedicated management interface | |
CN104142858A (zh) | 阻塞任务调度方法及装置 | |
CN102541661B (zh) | 实现等待地址同步接口的方法和设备 | |
US20130198757A1 (en) | Resource allocation method and apparatus of gpu | |
CN103443770A (zh) | 终端装置、进程管理方法以及进程管理程序 | |
US20190227918A1 (en) | Method for allocating memory resources, chip and non-transitory readable medium | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
JP4609113B2 (ja) | プロセッサ | |
JP5405663B2 (ja) | メモリ管理装置、メモリ管理方法、メモリ管理プログラム、メモリ管理プログラムを記録したコンピュータ読み取り可能な記録媒体及び集積回路 | |
CN110018793B (zh) | 一种主机io处理控制方法、装置、终端及可读存储介质 | |
CN114911538A (zh) | 一种运行系统的启动方法及计算设备 | |
CN108874560B (zh) | 进行通信的方法和通信设备 | |
CN110959152B (zh) | 访问控制装置 | |
JP2007122337A (ja) | 演算装置 | |
CN117539639B (zh) | 显存资源调度方法、装置、系统、存储介质及电子设备 | |
US11163602B2 (en) | Migration from an asynchronous execution model to a synchronous execution model | |
CN115981729A (zh) | 一种Can指令并发处理方法及装置 | |
CN114443255A (zh) | 一种线程调用方法和装置 | |
CN118732957A (zh) | 读写请求处理方法、装置、存储设备、程序产品及介质 | |
CN116266133A (zh) | 一种任务处理方法、装置、设备及存储介质 | |
CN117369987A (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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 200245, No. 46 South Valley Road, Minhang Economic Development Zone, Shanghai, Minhang District Patentee after: Fuji film business equipment (Shanghai) Co.,Ltd. Address before: 200245, No. 46 South Valley Road, Minhang Economic Development Zone, Shanghai, Minhang District Patentee before: Fuji Xerox(Shanghai) Ltd. |
|
CP01 | Change in the name or title of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210709 |
|
CF01 | Termination of patent right due to non-payment of annual fee |