Esterel语言的一项应用实验

1         引言

  本报告介绍关于用Esterel语言开发嵌入式软件的一项实验。

2         Esterel语言简介

  所有以计算机为基础的系统可分为三类:

l        转换系统:根据输入计算输出,然后结束,如绝大部分的数值计算软件、工资管理软件、编译系统。

l        交互系统:与外界环境进行不停的交互处理,如操作系统、数据库、互联网。

l        反应系统(reactive systems):不停地响应外界环境的激励,它与交互系统的不同之处是前者纯粹是由输入驱动的,其典型例子是过程控制系统、信号处理系统。

  交互系统和反应系统需要并发程序设计。过去认为,一些典型的并发编程语言如CSPOCCAMAda可满足交互系统和反应系统的需要。但是,实际上反应系统与交互系统是有区别的,因此最好有专门针对反应系统的程序设计语言。

  上一世纪的80年代出现的同步语言(Synchronous Language)即是以反应系统为应用领域的一族程序设计语言。

  Esterel语言是同步语言族中的一个成员。它适用于以控制处理为主的反应系统(其它一些同步语言适用于以数据处理为主的反应系统),如:

l        制造和运输中的实时过程控制

l        嵌入式系统

l        通信协议处理

l        外围设备的驱动程序

l        硬件粘合逻辑和控制器

l        人机接口

  用Esterel语言编写的程序可以通过正确性证明的方法来验证。

3         Esterel语言应用实验

  法国Esterel公司提供一个免费的Esterel语言编译和调试工具。笔者利用该工具做了一个实验。

  实验对象是某控制板软件。该软件有65条需求,要完成以下功能:

a)       控制子系统的通/断以及2个开关的状态记录;

b)       采样检测外部16路离散开关信号;

c)       通过串行通讯口向主机报告各种参数及接收控制指令;

d)       自检测。

  该软件用8031汇编语言编程。源代码行数是5000行(含少量注释行),目标码规模是13.5K字节。

  笔者用Esterel语言和C语言改写了该软件,所实现的功能完全等价,但按Esterel语言的特点重新设计了控制流程。Esterel程序经编译后产生C程序,然后用C51编译工具生成目标码,其规模为27K字节。

  用Esterel语言和C语言写的程序与用汇编语言写的程序相比,源代码的规模减少了50%,目标代码的规模增加了1倍,但仍在目标机容量范围之内。

根据软件工程的原理,用任何编程语言写一行源代码所化的工作量大体是相同的。因此源代码规模的减少对于开发、维护是有积极意义的。

  该软件用Esterel仿真调试工具进行了调试,但编译连接生成的目标码没有在目标机上实际运行。

  通过这项实验,主要有以下体会:

a)       Esterel语言的并发性使设计人员可集中精力考虑高层的控制流问题,而不需要考虑并发的实现细节;

b)       Esterel语言能检测控制流错误,而传统的编程语言无法检测这种最令开发者头疼的错误;

c)       Esterel语言的仿真调试工具与传统编程语言的符号调试工具有很大差别,前者更容易使用;

d)       Esterel语言的数据处理能力很弱,这是一个突出的局限性。

 

后记

  该实验完成于20036月。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值