CN1737755A - 一种嵌入式实时操作系统的建模和代码生成方法 - Google Patents
一种嵌入式实时操作系统的建模和代码生成方法 Download PDFInfo
- Publication number
- CN1737755A CN1737755A CN 200510050086 CN200510050086A CN1737755A CN 1737755 A CN1737755 A CN 1737755A CN 200510050086 CN200510050086 CN 200510050086 CN 200510050086 A CN200510050086 A CN 200510050086A CN 1737755 A CN1737755 A CN 1737755A
- Authority
- CN
- China
- Prior art keywords
- code
- operating system
- task
- time operating
- module
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000004891 communication Methods 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 5
- 230000018109 developmental process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000033772 system development Effects 0.000 description 2
- 238000012731 temporal analysis Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000000700 time series analysis Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 235000013599 spices Nutrition 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种嵌入式实时操作系统的建模和代码生成方法,主要步骤如下:1)先提取出嵌入式实时操作系统的共同特征,总结出它们的共同接口,并用一定的图形结构对这些操作系统核心特征进行表示;2)根据上面的特征提取,建立了图形于嵌入式实时操作系统的这些特征之间的对应关系;3)这种映射关系的确立,使得可视化编程得以实现,只要在屏幕上绘制出一定的图形,系统就可以按照图形的关系按照上面的表格自动生成出所需的代码。本发明具有如下优点:1.节省开发时间。自动生成代码可以大大减少整个开发过程在编写代码的过程中所花费的时间;2.保证代码的高可靠性。3.高质量和高可读性的代码。自动生成的代码不仅可以非常快,而且生成代码的执行效率可以非常的高。
Description
技术领域
本发明涉及图形建模和自动代码生成技术,主要是实现一种支持各类嵌入式芯片和实时操作系统的嵌入式实时操作系统的建模和代码生成方法。
背景技术
第一方面:RTOS(Real Time Operating System)实时操作系统
嵌入式实时操作系统,也叫实时内核,是在各类嵌入式芯片的应用程序上实现多任务的机制。它的核心功能,是实现多任务调度,以及任务间的通讯等。目前,市场上占有率比较高的商业实时操作系统有VxWorks、PSOS、QNX、LynxOS、VRTX,、Windows CE等。这些为数众多的实时操作系统绝大多数都是多任务实时微内核的结构,采用的是基于优先级的可抢占式调度策略。
含有嵌入时实时操作系统的程序执行的效率和可靠性都高于普通的前后台系统的程序,但是对实时操作系统进行开发却不是一般的工程师所能掌握的技术。解决这对矛盾的一般做法是将问题分成两个方面:建模和编程,然后分别交给系统工程师和软件工程师。这样做会引起更多的人为错误,并且拖长了开发时间。
第二方面:VPL(Visual Programming Languages)可视化编程语言
一种可视化编程语言,就是一种具有图形化表示法的编程语言。这种表示法包括图形,图画,影像或者图标等。可视化编程语言是二维或者更高维的语言,因此它更容易被理解,也更加容易跟用户进行交互操作。可视化编程语言的使用往往分为两步:建模和自动生成代码。
在嵌入式领域,系统工程师喜欢集中精力于建模,但是往往不善于写代码。那么是否我们能够找到一种方法,代码可以在模型的基础上自动生成出来呢?答案就是利用一种可视化编程语言。
事实上,嵌入式领域中已经有很多这样的可视化编程语言,比如MATLAB。它们中有些功能非常强大,以至于到了现在很多系统工程师已经离不开这些可视化编程工具的帮助。但是,目前所有的此类工具只能解决算法代码的建模和代码生成,不能解决嵌入式实时操作系统的问题。一旦程序需要实时操作系统的帮助,那么系统工程师将不得不回到从前的手工编写代码的方式。
发明内容
本发明要解决上述实时操作系统的强大功能和它的使用难度之间的矛盾,提供一种为实时操作系统开发的嵌入式实时操作系统的建模和代码生成方法,从而解决一切嵌入式芯片上的系统开发的难题。
本发明解决其技术问题所采用的技术方案。这种嵌入式实时操作系统的建模和代码生成方法,主要步骤如下:
1)、本发明先提取出嵌入式实时操作系统的共同特征,总结出它们的共同接口,并用一定的图形结构对这些操作系统核心特征进行表示。根据提取的结果,操作系统的最基本特征包含三个方面:A)、任务;B)、任务之间的通讯;C)、定时器。
任务的核心特征可以概括成一个C++里面的对象,任务包含自己的一些属性,以及对这些属性进行的操作;因此任务可以利用图形表示为一个对象的结构。任务之间通讯可以利用任务提供的操作来完成,在图形方面表示为结构之间的连线。定时器也可以被定义为一个特殊的对象,它既可以作为任务中的一个属性,也可以脱离任务而成为一个单独的结构。嵌入式实时操作系统的特征图形表示示意图见图1和图2。
2)、本发明根据上面的特征提取,我们进一步建立了图形于嵌入式实时操作系统的这些特征之间的对应关系。这些关系进一步明确了可视化编程语言和嵌入式实时操作系统之间的联系,这些对应关系见图3——图6。
对应关系确定以后,本发明设计出图形和代码之间的映射关系如下:
图形 代码
任务的图形模块 任务的函数体
任务图形模块间的连线 操作系统的系统调用
连线的末端模块 系统调用函数的参数
事件的图形模块 事件的变量
报警器的图形模块 报警器的声明函数
中断的图形模块 中断的函数体
驱动程序的模块 驱动程序库代码加载
3)、这种映射关系的确立,使得可视化编程得以实现,只要在屏幕上绘制出一定的图形,系统就可以按照图形的关系按照上面的表格自动生成出所需的代码。
本发明具有如下优点:
1.节省开发时间。自动生成代码可以大大减少整个开发过程在编写代码的过程中所花费的时间,其效果相当于节省了软件工程师的单独的工作和他与系统工程师之间的交流所需的时间。对于大的系统和复杂的模型,可视化编程的效果非常明显。
2.保证代码的高可靠性。软件中的错误越晚发现,那么为此付出的代价就越高,而且这一增长速度是指数级的。软件产品中的“人的因素”是迄今为止导致错误和风险的最主要原因。与之对应的是,机器生成的代码是具有高可靠性的,很多种编程错误在机器生成的代码中从不出现。
3.高质量和高可读性的代码。自动生成的代码不仅可以非常快,而且生成代码的执行效率可以非常的高,因为它可以继承最优秀的程序员的设计风格。另外,机器生成的代码风格从头到尾都是一致的,还可以自动加入注释等,使得整体代码的可读性非常好。
附图说明
图1本发明的实时操作系统任务间通讯机制;
图2本发明的定时器作为任务属性表示法;
图3本发明的VPL-RTOS的任务模型;
图4本发明的VPL-RTOS的任务属性;
图5本发明的VPL-RTOS的任务通讯示意图;
图6本发明的VPL-RTOS的定时器跟任务之间的关系;
图7本发明的VPL-RTOS面对用户的编程接口示意图;
图8本发明的VPL-RTOS生成的C代码示意图;
图9本发明的VPL-RTOS生成的代码执行情况示意图;
图10本发明的VPL-RTOS利用图形进行时间分析示意图;
图11本发明的VPL-RTOS整体开发流程结构图;
图12本发明的VPL-RTOS与测试工具结合流程图。
具体实施方式
下面结合附图和实例对本发明作进一步介绍:
第一步,用户在可视化环境下进行模型的建立。(图7)
利用VPL-RTOS进行建模的过程就是画一幅图画的过程。用户所需要做的就是根据应用的要求画一幅流程图出来,图7是建立好的一个模型的例子。
例子中描述的是一个汽车发动机控制模型,在模型中,有六个任务已经它们之间复杂的通讯,并且包含一个定时器。因此这个模型实际上包含了所有操作系统的核心特性。可以看出,通过这样的方式建立模型是简单而清楚的。
建立图形的方式就是利用鼠标进行“拖-放”的操作,其使用方法类似于Windows下的画图板。在画图的过程中只需要关心画图本身,不需要关心任何有关代码的内容。而当完成了画图操作以后,几乎所有的接下来的任务就会由系统自动帮助完成。
第二步,根据图形信息自动生成代码。(图8)
一旦我们得到了上面的模型图,我们就可以以这幅图上的信息为基础,生成我们需要的程序代码,如图8。生成的代码可以是C代码,也可以是针对某个芯片的汇编代码。不管什么形式的代码,只要根据本专利中的模型概念和映射关系,就可以由系统自动生成出来。
任务内部的算法代码并不能VPL-RTOS中生成,只可以在生成出代码框架以后手动的添加进去。至于算法代码怎样得到,我们推荐用MATLAB-Simulink-RTW环境进行建模和自动代码生成,它的使用方法类似于本专利,所不同的是它只能生成算法代码,不能生成操作系统代码。
第三步,将自动生成的代码编译和运行。(图9)
图9是我们生成的代码在MPC555芯片上运行时的状况示意图。这些信息是通过串行端口打印到PC屏幕上的。
在运行之前,我们生成的C代码进行了编译,本例中我们利用自己设计的编译器把标准C代码编译成在MPC555芯片上的可执行代码。用户也可以根据自己的需要,将生成的标准C代码编译成其他芯片上的可执行代码。
整个开发的流程在图11中详细的表示出来。这种流程对传统的嵌入式开发是一种革命性的变化,因为用户接触到的唯一的界面是图形的;而且不仅是图形而已,而是利用图形进行编程。用户甚至没有写一句代码,就可以让自己设计的系统在芯片中运行。回想一下,我们从面向机器的语言到面向对象的语言,在从面向代码的语言走到面向图形的语言;随着编程语言的越来越高级,人类已经不用再知道编程的确切概念,可以忘记什么是编程,而是简单的把自己的思路画出来就可以了。这就是本发明对嵌入式操作系统已经整个嵌入式系统开发领域所做出的贡献。
本发明实现了利用图形对嵌入式实时操作系统进行编程的过程,其步骤如下:
1)在屏幕上绘应用程序模型的图形;
2)双击相应的图形,改变图形的参数;
3)单击按钮开始自动生成代码;
4)对自动生成的代码进行修改和编译;
5)编译完成的代码下载到硬件芯片上运行。
在实现可视化语言的基础上,本发明增加了对嵌入式实时操作系统中的任务进行时间分析的功能。由于图形可以很好的反应出任务之间的关系,因此这就很好的构成了调度分析的基础,本论文采用一种普遍的调度分析方法在图形的基础上进行时间特性的分析,其开创性在于不需要用户手动的输入分析的参数,因为这些参数可以从图形模型上面取得,本发明的效果图为图10。
本发明在上述工作的基础上,进一步提出了关于利用可视化编程语言对含有嵌入式实时操作系统的应用进行开发的总体流程和相应的测试流程,它们将对传统开发流程的挑战并引起深刻变革。
Claims (3)
1、一种嵌入式实时操作系统的建模和代码生成方法,其特征是:主要步骤如下:
1)、提取出嵌入式实时操作系统的共同特征,总结出它们的共同接口,并用一定的图形结构对这些操作系统最基本特征进行表示;根据提取的结果,操作系统的最基本特征包含三个方面:A)、任务,利用图形表示为一个对象的结构;B)、任务之间的通讯,利用任务提供的操作来完成,在图形方面表示为结构之间的连线;C)、定时器,既可以作为任务中的一个属性,也可以脱离任务而成为一个单独的结构;
2)、据上面的特征提取,进一步建立了图形与嵌入式实时操作系统的这些特征之间的对应关系;对应关系确定以后,设计出图形和代码之间的映射关系;
3)、在屏幕上绘制出一定的图形,系统就可以按照图形的关系按照映射关系自动生成出所需的代码。
2、根据权利要求1所述的嵌入式实时操作系统的建模和代码生成方法,其特征在于:所述的图形和代码之间的映射关系如下,按标号一一对应;图形:1)、任务的图形模块,2)、任务图形模块间的连线,3)、连线的末端模块,4)、事件的图形模块,5)、报警器的图形模块,6)、中断的图形模块,7)、驱动程序的模块;代码:1)、任务的函数体,2)、操作系统的系统调用,3)、系统调用函数的参数,4)、事件的变量,5)、报警器的声明函数,6)、中断的函数体,7)、驱动程序库代码加载。
3、根据权利要求1所述的嵌入式实时操作系统的建模和代码生成方法,其特征在于:采用一种调度分析方法在图形的基础上进行时间特性的分析,从图形模型上面取得分析的参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510050086 CN1737755A (zh) | 2005-06-13 | 2005-06-13 | 一种嵌入式实时操作系统的建模和代码生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510050086 CN1737755A (zh) | 2005-06-13 | 2005-06-13 | 一种嵌入式实时操作系统的建模和代码生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1737755A true CN1737755A (zh) | 2006-02-22 |
Family
ID=36080559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510050086 Pending CN1737755A (zh) | 2005-06-13 | 2005-06-13 | 一种嵌入式实时操作系统的建模和代码生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1737755A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231133A (zh) * | 2011-07-05 | 2011-11-02 | 上海交通大学 | 基于重写逻辑的并发实时程序验证的优化处理系统及其方法 |
CN102662670A (zh) * | 2012-04-05 | 2012-09-12 | 林添孝 | 一种场景式无核嵌入式实时操作系统的实现方法 |
CN103136406A (zh) * | 2011-12-03 | 2013-06-05 | 南京南瑞继保电气有限公司 | 可视化应用程序自动生成仿真用函数代码的方法 |
CN105573763A (zh) * | 2015-12-23 | 2016-05-11 | 电子科技大学 | 一种支持rtos的嵌入式系统建模方法 |
WO2016131313A1 (zh) * | 2015-07-17 | 2016-08-25 | 中兴通讯股份有限公司 | 一种嵌入式操作系统代码加载的方法及装置 |
CN103823666B (zh) * | 2013-11-05 | 2017-02-01 | 国电南瑞科技股份有限公司 | 一种智能变电站设备可视化编程方法 |
CN106569785A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种作业表单生成方法及设备 |
CN107346249A (zh) * | 2017-07-13 | 2017-11-14 | 重庆电子工程职业学院 | 一种基于模型的计算机软件开发方法 |
CN109976750A (zh) * | 2019-03-28 | 2019-07-05 | 深圳市创联时代科技有限公司 | 一种基于嵌入式开发系统的组件源码配置和组件裁剪方法 |
CN109976747A (zh) * | 2019-02-01 | 2019-07-05 | 杭州电子科技大学 | 一种模块级代码结构的可视化开发实现系统 |
CN112926109A (zh) * | 2021-03-30 | 2021-06-08 | 北京计算机技术及应用研究所 | 一种复杂嵌入式系统虚拟运行环境可视化建模方法 |
-
2005
- 2005-06-13 CN CN 200510050086 patent/CN1737755A/zh active Pending
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102231133A (zh) * | 2011-07-05 | 2011-11-02 | 上海交通大学 | 基于重写逻辑的并发实时程序验证的优化处理系统及其方法 |
CN102231133B (zh) * | 2011-07-05 | 2013-07-03 | 上海交通大学 | 基于重写逻辑的并发实时程序验证的优化处理系统及其方法 |
CN103136406A (zh) * | 2011-12-03 | 2013-06-05 | 南京南瑞继保电气有限公司 | 可视化应用程序自动生成仿真用函数代码的方法 |
CN103136406B (zh) * | 2011-12-03 | 2015-12-16 | 南京南瑞继保电气有限公司 | 可视化应用程序自动生成仿真用函数代码的方法 |
CN102662670A (zh) * | 2012-04-05 | 2012-09-12 | 林添孝 | 一种场景式无核嵌入式实时操作系统的实现方法 |
CN102662670B (zh) * | 2012-04-05 | 2014-12-03 | 林添孝 | 一种场景式无核嵌入式实时操作系统的实现方法 |
CN103823666B (zh) * | 2013-11-05 | 2017-02-01 | 国电南瑞科技股份有限公司 | 一种智能变电站设备可视化编程方法 |
WO2016131313A1 (zh) * | 2015-07-17 | 2016-08-25 | 中兴通讯股份有限公司 | 一种嵌入式操作系统代码加载的方法及装置 |
CN106708542A (zh) * | 2015-07-17 | 2017-05-24 | 中兴通讯股份有限公司 | 一种嵌入式操作系统代码加载的方法及装置 |
CN106569785A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种作业表单生成方法及设备 |
CN105573763A (zh) * | 2015-12-23 | 2016-05-11 | 电子科技大学 | 一种支持rtos的嵌入式系统建模方法 |
CN105573763B (zh) * | 2015-12-23 | 2018-07-27 | 电子科技大学 | 一种支持rtos的嵌入式系统建模方法 |
CN107346249A (zh) * | 2017-07-13 | 2017-11-14 | 重庆电子工程职业学院 | 一种基于模型的计算机软件开发方法 |
CN109976747A (zh) * | 2019-02-01 | 2019-07-05 | 杭州电子科技大学 | 一种模块级代码结构的可视化开发实现系统 |
CN109976747B (zh) * | 2019-02-01 | 2022-05-13 | 杭州电子科技大学 | 一种模块级代码结构的可视化开发实现系统 |
CN109976750A (zh) * | 2019-03-28 | 2019-07-05 | 深圳市创联时代科技有限公司 | 一种基于嵌入式开发系统的组件源码配置和组件裁剪方法 |
CN112926109A (zh) * | 2021-03-30 | 2021-06-08 | 北京计算机技术及应用研究所 | 一种复杂嵌入式系统虚拟运行环境可视化建模方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1737755A (zh) | 一种嵌入式实时操作系统的建模和代码生成方法 | |
Kazman et al. | View extraction and view fusion in architectural understanding | |
Singh et al. | Kiwi: Synthesis of FPGA circuits from parallel programs | |
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
CN1713192A (zh) | 处理逻辑建模与执行方法和设备 | |
Kajler | CAS/PI: a portable and extensible interface for computer algebra systems | |
Spies et al. | Transfinite Iris: resolving an existential dilemma of step-indexed separation logic | |
JPH10240509A (ja) | ソフトウェアアプリケーションを生成する方法、生成装置、プログラムモジュールおよびデータ処理装置 | |
CN1371499A (zh) | 传统数据结构的对象特性元模型仿真器 | |
CN103123598A (zh) | 一种编译型软plc的在线调试实现方法 | |
CN1627254A (zh) | 嵌入式系统的调试方法及其装置 | |
CN1869926A (zh) | 一种生成仿真设备面板的方法及系统 | |
Diederich et al. | Experimental prototyping in Smalltalk | |
CN103631645A (zh) | 一种基于数字医疗的数字家庭中间件系统 | |
CN1932766A (zh) | 面向串行程序代码量大的领域的半自动并行化方法 | |
Haber et al. | Towards architectural programming of embedded systems | |
CN110727433B (zh) | 一种多通道三维用户界面的生成方法 | |
CN115758789A (zh) | 一种复杂实时嵌入式系统的软件架构设计与架构传递方法 | |
CN1687897A (zh) | 用户指导的程序半自动并行化方法 | |
Sarkar et al. | Higher-order concurrency for microcontrollers | |
Hammond et al. | Towards formally verifiable resource bounds for real-time embedded systems | |
CN1661552A (zh) | 用于具有有限资源的微处理器的进程语言 | |
CN1558330A (zh) | 家电控制器嵌入式软件的仿真集成开发系统及其纯软件仿真执行方法 | |
Lin et al. | A style for integrating MS‐Windows software applications to client–server systems using Java technology | |
CN104063229A (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |