CN102779047B - 一种嵌入式软件支撑平台 - Google Patents
一种嵌入式软件支撑平台 Download PDFInfo
- Publication number
- CN102779047B CN102779047B CN201210236287.9A CN201210236287A CN102779047B CN 102779047 B CN102779047 B CN 102779047B CN 201210236287 A CN201210236287 A CN 201210236287A CN 102779047 B CN102779047 B CN 102779047B
- Authority
- CN
- China
- Prior art keywords
- module
- management module
- operating system
- memory
- management
- 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
Abstract
本发明涉及软件支撑平台领域,具体为一种采用中间件技术和虚拟机原理,适应不同硬件平台和操作系统的嵌入式软件支撑平台。本发明包括板级支持包、操作系统适配层、公共模块,商用操作系统构建在板级支持包上,操作系统适配层构建在商用操作系统上,公共模块构建在操作系统适配层上,公共模块为上层应用程序提供支撑功能,用于任务或线程封装、信号量封装、消息队列封装、文件系统封装,屏蔽不同硬件平台、操作系统的差异。本发明的软件支撑平台与上层应用系统的开发分离,应用系统的开发摆脱了对操作系统的高度依赖,有效提高了上层应用系统的可移植性;通过内存管理模块、文件管理模块、定时器管理模块等功能提高了系统的实时性。
Description
技术领域
本发明涉及软件支撑平台领域,具体为一种采用中间件技术和虚拟机原理,适应不同硬件平台和操作系统的嵌入式软件支撑平台。
背景技术
当前的嵌入式硬件平台一般由不同的生产厂家生产,其系统的体系结构各不相同,互不兼容。虽然有各种商用嵌入式操作系统来屏蔽嵌入式硬件平台之间的差异,但不同的操作系统提供资源和服务的方式各不相同,导致所提供的资源和服务的接口不统一,致使在不同的操作系统之上开发的嵌入式应用系统可移植性较差,开发人员需要了解大量底层软硬件知识,同一功能需要不同的解决方案。而且,目前的嵌入式操作系统的内存管理效率较低,定时器算法的性能较差,联网支持较差,难以支持实时性较强的嵌入式应用系统。
桌面计算机应用系统在开发中引入了中间件、虚拟机的概念,以增强应用系统的可移植性,采用了内存池的思想来提高系统分配内存的效率。因此,许多科研人员尝试把这些概念引入到嵌入式系统中来增强系统的可移植性和实时性。
发明内容
本发明的目的在于提供一种用于提高上层应用系统可移植性和实时性的嵌入式软件支撑平台。
本发明的目的是这样实现的:
本发明包括板级支持包、操作系统适配层、公共模块,其特征是:商用操作系统构建在板级支持包上,操作系统适配层构建在商用操作系统上,公共模块构建在操作系统适配层上,公共模块包括功能相互独立的调度管理模块、系统监控模块、异常管理模块、内存管理模块、定时器管理模块、文件管理模块、网络管理模块,公共模块为上层应用程序提供功能支撑,用于任务或线程封装、信号量封装、消息队列封装、文件系统封装,屏蔽不同硬件平台、操作系统的差异,操作系统适配层具有统一的接口供操作系统调用。
内存管理模块用于划分并管理内存池和内存块,内存管理模块通过配置文件配置内存池及内存块大小。
内存池由大小相等的内存块组成,内存块分配采用最小匹配原则。
定时器管理模块提供1000个精度为1ms的相对定时和精度为1s的绝对定时。
调度管理模块对Vxworks系统进行优化,在任务的基础上引入二级调度的机制。
系统监控模块实时监控系统CPU使用情况,如发现有进程CPU占用超过90%持续1分钟以上或进程发生死锁,则记录该异常信息并且重启该进程。
文件管理模块用于管理系统日志,将日志文件划分为1M大小的20个日志文件进行循环覆盖,采用zlib算法库对文件进行压缩。
异常管理模块用于捕捉系统的异常情况,对发生异常时刻函数调用关系进行分析和记录。
网络管理模块为应用程序搭建统一的网络通信平台:建立统一的网络线程池,线程池中的线程平时处于空闲状态不占用系统资源,当有网络传输请求时,网络管理模块在线程池中取出空闲的线程与需要网络传输的上层应用进行绑定。
本发明的有益效果在于:软件支撑平台与上层应用系统的开发分离,应用系统的开发摆脱了对操作系统的高度依赖,有效提高了上层应用系统的可移植性;通过内存管理模块、文件管理模块、定时器管理模块等功能提高了系统的实时性。可加快实时性要求高的可移植嵌入式应用系统的开发进程。
附图说明
图1是嵌入式软件支撑平台结构图;
图2是嵌入式软件支撑平台实例示意图。
具体实施方式
下面对本发明具体技术方案作进一步说明。
本发明旨在提供一种可移植、实时性强的嵌入式软件支撑平台。具体有两个创新点,第一个创新点是在不同的商用操作系统上增加一个相对应的操作系统适配层,完全屏蔽各种硬件平台和操作系统的差异,封装操作系统的核心资源和系统服务,提供统一的接口以方便基于操作系统的调用,从而实现应用系统的可移植性;另一个创新点是在操作系统适配层之上,实现系统监控、网络管理、异常处理、调度管理、内存管理、定时管理和文件管理的功能。为上层的应用系统提供支撑功能,增强系统的实时性。
本发明的工作原理是:设计实现与不同操作系统相对应的操作系统适配层,来屏蔽硬件平台和操作系统之间的差异并向上层提供接口统一的核心资源和系统服务,实现硬件平台无关性和软件平台无关性。然后由7个模块来实现软件支撑功能,具体实现如下:系统监控模块监控任务的周期性运行和CPU、内存等系统资源使用情况。设置CPU、内存的使用上限并在超限时报警;网络管理模块用于实现联网功能,使客户可直接访问上层的应用程序和内存数据库;异常处理模块的主要功能是通过底层操作系统截获异常,保存异常的详细现场信息,对异常点进行定位。通过对发生异常的进程的堆栈进行回溯分析,来得到异常发生前的函数调用关系;调度管理模块对于存在多进程多线程的系统,统计系统进程、线程的运行状态、切换次数,以便对系统状态进行分析;内存管理模块接管操作系统的内存管理,重新设计了内存管理的用户接口,在系统初始化时向操作系统申请一大块连续的内存区,再将该区划分为若干内存池,每个内存池中有数量不等、大小固定的内存块,其在池中的数量可按需配置。用户通过内存管理接口申请内存时,内存管理模块就查找各个内存池中满足要求的最小内存块并标记为“占用”,然后不加切割地分配给用户使用。内存回收时按照待释放内存块的首地址找到其所属的内存池,将该块标记为“空闲”放回该池即可;定时管理模块采用自行设计定时管理算法,针对每一个tick要处理大量定时器问题,通过设计定时器队列并在每一个tick对定时器队列进行扫描的机制,来实现对大量定时器的管理,以满足性能要求;文件管理模块为应用程序提供统一的文件操作接口,屏蔽底层操作系统和不同存储介质存取数据的具体实现细节,上层应用系统使用相同的方法来访问硬盘、闪存等存储介质。
本发明由板极支持包(BSP)、操作系统适配层和7个公共模块组成。用户可使用本发明开发和实施其应用系统,而无需考虑操作系统及硬件的具体细节。
BSP对底层硬件板提供支持,方便程序在不同底层硬件平台之间的移植,支持的硬件平台包括x86、ARM和powerpc等。其上层为商用操作系统,包括Vxworks、Linux和μcos等。用户可根据应用系统硬件的需要,对BSP进行补充、修改。
操作系统适配层位于BSP和操作系统之上,相当于一个虚拟的操作系统,对操作系统进行封装。应用系统设计人员在其上构建独立于具体操作系统的嵌入式软件支撑平台的7个公共模块,进而构建跨平台的上层应用。其主要功能包括:任务或线程封装,信号量封装,消息队列封装,文件系统封装。
公共模块位于操作系统适配层之上,功能独立,操作系统适配层向其提供操作系统调用功能的支持。公共模块包括内存管理、定时器管理、调度管理、系统监控、文件管理、异常处理、网络管理7个模块。每一个模块都向上层应用系统提供特定功能。每一个模块都具有平台无关性,可方便地移植到不同系统。
内存管理模块按照应用的需求来划分内存池和管理内存块的大小,用户可以通过配置文件灵活配置内存池及内存块大小,每个内存池包含一定数量大小相等的内存块,内存块分配采用最小匹配原则。例如系统划分了内存池A包含10个16K内存块及内存池B包含了10个32K内存块,用户需要10K的内存块,那么就会从内存池A取出一块空闲的16K内存块使用。
定时器模块可提供1000个精度为1ms的相对定时和精度为1s的绝对定时。由于不同操作系统不同CPU架构定时机制和精度不同,在BSP层和操作系统适配层对不同硬件和不同操作系统定时功能进行封装,提供给定时器模块使用。
调度管理模块对Vxworks系统做了优化,在任务的基础上引入二级调度的机制,相当于在进程中封装一层线程调度,对线程采用FIFO的调度方式。对于Linux系统已经存在进程和线程调度方式,我们统计了系统进程、线程的运行状态、切换次数,以便对系统状态进行分析。
系统监控模块实时监控系统CPU使用情况,如发现有进程CPU占用超过90%持续1分钟以上,记录该异常信息并且重启该进程;同时也监控进程是否发生死锁,如果CPU在一个进程一段时间内没有向下执行新的指令,则认为该进程出现死锁,记录异常日志并且重启该进程。
文件管理模块实现对系统日志的管理。由于嵌入式系统一般采用Flash作为数据存储,存储容量较小,文件管理模块将日志文件划分为每一个为1M大小,一共20个日志文件循环覆盖,并且采用zlib算法库对文件进行压缩,兼容Windows下Winrar及Linux下tar解压算法。
异常处理模块可捕捉系统异常,记录异常出现时刻的系统状态。采用栈回溯的原理对发生异常时刻函数调用关系进行分析和记录。由于栈回溯算法依赖于对CPU寄存器的访问,不同CPU架构寄存器组织方式不同,我们针对x86、ARM、PPC三种CPU架构分别做了栈回溯算法。
网络管理模块为应用程序搭建一个统一的网络通信平台。我们建立一个统一的网络线程池,线程池中的线程平时处于空闲状态不占用系统资源,当有网络传输请求时,网络管理模块在线程池中取出空闲的线程与需要网络传输的上层应用进行绑定。这种机制可以支持同时1000个链路的数据传输,极大满足了上层应用的网络传输需求。
嵌入式软件支撑平台的使用方法为:首先选定适合的底层硬件板,根据用户的需求对底层的板级支持包加以修改和补充;然后选择相应的操作系统,进而选择相对应的操作系统层的适配模块,包括对该操作系统的信号量、消息队列、进程和线程等系统调用的封装;再根据系统具体应用需求选择对应中间件。可选择的中间件包括内存管理、定时器管理、调度管理、系统监控、文件管理、异常处理、网络管理这7个公共模块。调度管理、系统监控和异常处理属于必选模块,其他模块可根据需求适当配置。例如,若系统需实现定时器和网络功能,则将此两模块与前述的必选模块合并放入makefile中再对系统进行编译,即可实现定制化的平台功能。通过这些中间件的支持可容易地实现上层应用。可极大地增强系统的可移植性和实时性。
实施例1
如图2,以ARM硬件平台为例,首先选定对应的操作系统,如Linux。根据Linux系统选择其对应的操作系统适配模块,包括对Linux系统的信号量、消息队列、进程和线程等系统调用的封装;再根据系统具体应用需求选择对应中间件。可选择的中间件包括内存管理、定时器管理、调度管理、系统监控、文件管理、异常处理、网络管理这几个公共模块。调度管理、系统监控、异常管理属于必选模块,其他模块可根据需求配置。例如系统需要实现定时器和网络功能,那么将这两块模块加前面几个必选模块放在makefile中对系统一起进行编译,即实现了定制化的平台功能。通过这些中间件的支持可以容易地实现上层应用。
Claims (1)
1.一种嵌入式软件支撑平台系统,包括板级支持包、操作系统适配层、公共模块,其特征是:商用操作系统构建在板级支持包上,操作系统适配层构建在商用操作系统上,公共模块构建在操作系统适配层上,公共模块包括功能相互独立的调度管理模块、系统监控模块、异常管理模块、内存管理模块、定时器管理模块、文件管理模块、网络管理模块,公共模块为上层应用程序提供功能支撑,用于任务或线程封装、信号量封装、消息队列封装、文件系统封装,屏蔽不同硬件平台、操作系统的差异,操作系统适配层具有统一的接口供操作系统调用;所述的内存管理模块用于划分并管理内存池和内存块,内存管理模块通过配置文件配置内存池及内存块大小;内存池由大小相等的内存块组成,内存块分配采用最小匹配原则;定时器管理模块提供1000个精度为1ms的相对定时和精度为1s的绝对定时;调度管理模块对Vxworks系统进行优化,在任务的基础上引入二级调度的机制;系统监控模块实时监控系统CPU使用情况,如发现有进程CPU占用超过90%持续1分钟以上或进程发生死锁,则记录异常信息并且重启该进程;文件管理模块用于管理系统日志,将日志文件划分为1M大小的20个日志文件进行循环覆盖,采用zlib算法库对文件进行压缩;异常管理模块用于捕捉系统的异常情况,对发生异常时刻函数调用关系进行分析和记录;网络管理模块为应用程序搭建统一的网络通信平台:建立统一的网络线程池,线程池中的线程平时处于空闲状态不占用系统资源,当有网络传输请求时,网络管理模块在线程池中取出空闲的线程与需要网络传输的上层应用进行绑定;
每个内存池包含数量大小相等的内存块;异常管理模块采用栈回溯对发生异常时刻函数调用关系进行分析和记录;通过内存管理接口申请内存时,内存管理模块就查找各个内存池中满足要求的最小内存块并标记为占用,然后不加切割地分配给用户使用;内存回收时按照待释放内存块的首地址找到其所属的内存池,将该块标记为空闲放回该池;定时管理模块采用定时管理算法,通过定时器队列并在每一个tick对定时器队列进行扫描的机制,来实现对大量定时器的管理;文件管理模块为应用程序提供统一的文件操作接口;
嵌入式软件支撑平台首先选定适合的底层硬件板,根据用户的需求对底层的板级支持包加以修改和补充;然后选择相应的操作系统,进而选择相对应的操作系统层的适配模块,包括对该操作系统的信号量、消息队列、进程和线程系统调用的封装;再根据系统具体应用需求选择对应中间件;可选择的中间件包括内存管理、定时器管理、调度管理、系统监控、文件管理、异常处理、网络管理这7个公共模块,调度管理、系统监控和异常处理属于必选模块,其他模块可根据需求适当配置;
各模块放在makefile中对系统一起进行编译。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210236287.9A CN102779047B (zh) | 2012-07-09 | 2012-07-09 | 一种嵌入式软件支撑平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210236287.9A CN102779047B (zh) | 2012-07-09 | 2012-07-09 | 一种嵌入式软件支撑平台 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102779047A CN102779047A (zh) | 2012-11-14 |
CN102779047B true CN102779047B (zh) | 2016-07-06 |
Family
ID=47123968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210236287.9A Active CN102779047B (zh) | 2012-07-09 | 2012-07-09 | 一种嵌入式软件支撑平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102779047B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528153A (zh) * | 2016-11-10 | 2017-03-22 | 成都中嵌自动化工程有限公司 | 一种嵌入式软件模块化的构建方法及装置 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103888827A (zh) * | 2012-12-20 | 2014-06-25 | 中山大学深圳研究院 | 一种基于嵌入式内核的数字电视应用管理层系统及方法 |
CN103077039B (zh) * | 2013-02-28 | 2016-08-24 | 福州昌晖自动化系统有限公司 | 一种嵌入式工控仪表软件开发平台 |
CN103530165B (zh) * | 2013-09-06 | 2016-06-15 | 北京雅鲁藏布科技有限公司 | 一种应用于物联网行业的java解决方案 |
CN103970618B (zh) * | 2014-05-21 | 2017-02-22 | 辽宁中科信科技有限公司 | 基于云计算平台应用无备容灾的技术方法 |
CN104699489B (zh) * | 2015-04-02 | 2017-12-05 | 成都彬鸿科技有限公司 | 基于多操作系统的嵌入式软件平台 |
CN105607904B (zh) * | 2015-12-18 | 2019-04-16 | 南京熊猫电子股份有限公司 | 基于Linux平台的通信软件的快速开发框架及其使用方法 |
CN105740326B (zh) * | 2016-01-21 | 2021-01-15 | 腾讯科技(深圳)有限公司 | 浏览器的线程状态监测方法及装置 |
CN106250113A (zh) * | 2016-07-18 | 2016-12-21 | 百富计算机技术(深圳)有限公司 | 一种应用开发平台 |
CN107977369B (zh) * | 2016-10-21 | 2022-02-11 | 北京计算机技术及应用研究所 | 便于移植的嵌入式数据库管理系统 |
CN106682162B (zh) * | 2016-12-26 | 2021-03-09 | 浙江宇视科技有限公司 | 日志管理方法及装置 |
CN107589993A (zh) * | 2017-08-15 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种基于linux实时操作系统的动态优先级调度算法 |
CN108279972A (zh) * | 2018-01-26 | 2018-07-13 | 郑州云海信息技术有限公司 | 一种lua虚拟机任务执行方法及相关装置 |
CN110750241A (zh) * | 2019-08-29 | 2020-02-04 | 天信仪表集团有限公司 | 基于事件驱动架构的体积修正系统 |
CN110780858A (zh) * | 2019-10-28 | 2020-02-11 | 天津津航计算技术研究所 | 一种基于嵌入式操作系统的软件分层架构 |
CN111045840A (zh) * | 2019-12-06 | 2020-04-21 | 北京和利时智能技术有限公司 | Plc固件系统、封装接口方法、装置、存储介质及电子设备 |
CN111309291B (zh) * | 2020-01-19 | 2021-09-24 | 北京航空航天大学 | 一种模块化嵌入式软件架构及其定制方法、定制系统 |
CN111580792B (zh) * | 2020-04-29 | 2022-07-01 | 上海航天计算机技术研究所 | 一种基于操作系统的高可靠星载软件架构设计方法 |
CN116541066B (zh) * | 2023-06-14 | 2023-10-13 | 飞腾信息技术有限公司 | 软件系统构建方法、装置、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
CN101742006A (zh) * | 2009-12-28 | 2010-06-16 | 山东大学 | 一种基于嵌入式Linux的语音聊天客户端及其实现方法 |
-
2012
- 2012-07-09 CN CN201210236287.9A patent/CN102779047B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1490724A (zh) * | 2002-10-18 | 2004-04-21 | 上海贝尔有限公司 | 一种用于嵌入式系统软件开发的虚拟机装置 |
CN101742006A (zh) * | 2009-12-28 | 2010-06-16 | 山东大学 | 一种基于嵌入式Linux的语音聊天客户端及其实现方法 |
Non-Patent Citations (1)
Title |
---|
通信嵌入式软件支撑平台的研发;顾胜元;《中国优秀硕士学位论文全文数据库》;20090615;第14-57页,附图3.1 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528153A (zh) * | 2016-11-10 | 2017-03-22 | 成都中嵌自动化工程有限公司 | 一种嵌入式软件模块化的构建方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102779047A (zh) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102779047B (zh) | 一种嵌入式软件支撑平台 | |
US10929287B2 (en) | Computer memory usage by releasing unused heap space | |
US20210255948A1 (en) | Charging users for computer memory usage | |
US8434081B2 (en) | Storage manager for virtual machines with virtual storage | |
US10057377B2 (en) | Dynamic resolution of servers in a distributed environment | |
US20160378519A1 (en) | Method and system for anticipating demand for a computational resource by containers running above guest operating systems within a distributed, virtualized computer system | |
US20180367434A1 (en) | Methods and systems to adjust resources and monitoring configuration of objects in a distributed computing system | |
CN103036946B (zh) | 一种用于云平台处理文件备份任务的方法和系统 | |
US8677374B2 (en) | Resource management in a virtualized environment | |
CN102262564A (zh) | 视频监控平台系统的线程池结构及实现方法 | |
CN101419558A (zh) | Cuda图形子系统虚拟化方法 | |
US20150026428A1 (en) | Memory use for garbage collected computer environments | |
US20160380862A1 (en) | Methods and systems to evaluate data center resource allocation costs | |
US10235473B2 (en) | Methods and systems to allocate logical disk costs to virtual machines in a virtual data center | |
CN103176845A (zh) | 一种虚拟机部署方法、系统和装置 | |
US10147110B2 (en) | Methods and systems to evaluate cost driver and virtual data center costs | |
CN107977369B (zh) | 便于移植的嵌入式数据库管理系统 | |
CN105630534A (zh) | 基于TrustZone架构的应用程序执行方法、装置和终端 | |
US11050624B2 (en) | Method and subsystem that collects, stores, and monitors population metric data within a computer system | |
US10592169B2 (en) | Methods and systems that efficiently store metric data to enable period and peak detection | |
US10031768B2 (en) | Host-gateway-facilitated aggregation of host-computer clusters | |
EP4231602A1 (en) | Method and apparatus for acquiring private cloud container cluster gene information | |
CN105677481B (zh) | 一种数据处理方法、系统及电子设备 | |
US20190138419A1 (en) | Methods and systems that efficiently store metric data | |
CN105208123A (zh) | 一种虚拟桌面的实现方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |