首页 业界资讯 解决方案 微处理器与DSP 消费电子设计 测试与测量 电源技术 计算机与外设 可编程器件 模拟设计专区 嵌入式系统 通信与网络
→ 当前位置:照明设计网-电子专栏>嵌入式系统>正文

用UML建模开发嵌入式软件

照明设计网-电子专栏 5iLight.COM 郑孝洋 沈安文 陈光东 发布时间:2007-07-25
引 言

  面向对象开发方法无疑是当前最流行的软件开发方法。这归功于面向对象开发的众多优点:可靠性高,所开发的程序更健壮;由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间;继承和封装使得应用程序的修改带来的影响更加局部化,应用程序更易于维护、更新和升级。另外,UML建模语言和Rosc等CASE工具为面向对象的流行也起了很太作用,这些工具允许应用规范的面向对象分析和设计的方法与理论,远离纠缠不清的源代码,使得构建和设计变得更直观、更容易理解与修改,从而大大提高开发效率。

  嵌入式系统的应用越来越广泛,嵌入式计算机在数量上远远超过了各种通用计算机。嵌入式软件的开发与PC软件的开发相比存在一些特别的地方;①嵌入式软件代码往往要求高质量、高可靠性;②嵌入式软件要求尽可能短的二进制代码长度和数据长度,尽管半导体技术的发展使处理器速度不断提高、片上存储器容量不断增加,但在大多数应用中,存储空间仍然是宝贵的;③嵌入式系统往往存在实时性的要求。这些特别要求使得面向对象开发不太适合嵌入式系统。汇编语言是一种非结构化的语言,对于大型的结构化程序设计已经完全不能胜任了,而C语言相比其他高级语言具有明显的性能优势,这些原因使得C语言成为嵌入式系统开发的最佳选择。

  随着后PC时代的到来,嵌入式应用迅速增长,应用的复杂性也急剧增加,C语言对应的传统结构化设计方法已不能满足嵌入式软件设计和开发的需要。能不能把面向对象开发与C语言的优点结合起来?对这个问题,已经有人提出过一些方法,主要集中在用C语言来实现C++的语法,如用结构来模拟类,用函数指针来表示成员函数。这些方法使得本来语法就已经很复杂的C语言更加麻烦,同时没有了C语言快速、高效的优点。这里提出一种新的方法:用面向对象方法进行分析和设计,最后直接用C语言进行编码。

  1 应用实例

  绕线机控制系统是一个控制两个电机的单片机控制系统,我们使用本文提出的新开发方法进行这个系统的开发。系统采用瑞萨公司H8/300H系列的16位单片机H8/3062,整个系统硬件结构如图l所示。单片机通过I/O口与Flash芯片、控制面板、扬声器以及电机驱动电路相连,并通过光电编码盘检测直流电机转动的圈数。

整个系统硬件结构

  作为面向对象建模的工业标准,UML几乎被所有面向对象的软件项目所使用。这个项目也使用UML来建模,用到的
CASE工具是Rose。UML提供了5类图进行不同阶段的建模:用例图、静态图、行为图、交互图、实现图。在开发过程中,可根据不同阶段的具体要求,选择不同的图形来描述系统的静态结构模型或者动态行为模型。一般过程是:①用UML的用例模型确定目标系统的主要功能和行为,以便准确、完整地识别系统的需求;②通过对用例模型的分析,从用例的描述中识别反映问题域本质的类和对象,并利用UML的类图以及类之间的关系揭示系统的结构和组成;③利用UML动态模型中的顺序图、协作图、状态图和活动图描述系统结构元素的动态特性和行为。

  1.1 需求过程

  系统主要运行过程:①开机时,步进电机自动对原点;②修改参数设置时,单片机把修改值存入Flash;③启动键按下时,直流电机开始转动绕线,单片机通过光电编码盘检测转动圈数,并控制步进电机按照设置的参数排线,绕线完成后自动停止;④暂停键按下时,直流电机停止绕线,步进电机排完已转的舀数后停止;⑤复归键按下时,系统重启。

  系统的参与者只有用户1个,通过对系统需求的分析,可以识别3个主要用例:开机、机器设置和绕线控制。通过对用例的进一步分解,得出系统的用例图,如图2所示。

系统的用例图

  1.2 设计过程

  完成需求分析之后,进入设计阶段。这个阶段中,以需求分析结果为基础,找出系统所需要的类和对象以及其相互关系。针对嵌入式系统的特点,面向对象的一些高级特性不能使用,动态创建对象、派生和多态这样的特性会大大降低系统速度并增大代码空间和数据空间,对瑞萨H8/3062,这款单片机只有128KB的ROM和4KB的RAM,节省每一个字节都显得非常重要。

  通过对用例和系统结构分析,识别出来的类和关系如图3所示。

识别出来的类和关系

  出于可移植性的考虑,所有类被分成3个层次:

  最顶层是功能逻辑类的抽象,MachineStting为机器设置类;Keys为按键类,Displayr为显示类,MotorController为电机控制器类。这些逻辑上的类与硬件无关,便于以后硬件修改,同时使得开发绕线机的不同版本变得非常容易,如从平绕机到开发环行机,从二轴绕线机到开发三轴绕线机。

  中间层是外围硬件类的抽象,Flash为Flash存储类,用于存储设置的参数;Speaker为扬声器类;Panel为面板类;DCMoto/为直流电机类;StepMotor为步进电机类。

最底层是单片机及其内部功能模块类的抽象,H8/3062为单片机类,用于封装输入/输出口;Timer_KeyShake为按键防抖定时器;Timer_DCMotor为直流电机PWM脉冲产生定时器;Timer_DCCapture为直流电机圈数捕获定时器;Timer_StepMotor为步进电机PWM脉冲产生定时器。分这一层可以使得变换单片机类型非常容易,瑞萨H8/300H系列单片机在国内应用非常罕见,之所以选用这款是为了与国外产品的竞争,这样可以更快、更好地打开国际销路,但在选择这款单片机的同时已经做好了移植到ARM内核单片机的准备。

  为了理解系统的动态行为,还应该用顺序图、协作图、状态图和活动图对系统动态行为进行描述。状态图对嵌入式系统的设计尤其重要,这里用其对MotorController的状态转换进行描述,如图4所示。

共2页: 上一页 1 [2] 下一页
上一篇:一种基于CPLD的数据采集控制板的设计   下一篇:PIC单片机的应用设计技巧

收藏】 【评论】 【推荐】 【关闭


相关文章
·Linux2.4与Linux2.6内核调度器的比较研究
·如何选择合适的嵌入式软件开发平台
·ARM/DSP双核系统的通信接口设计
·嵌入式Linux系统中I2C总线设备的驱动设计
·奇趣科技宣布业界对Qtopia® Greenphone
·嵌入式MPEG-2远程网络视频监控系统的实现
·飞思卡尔提供首款带片上TFT显示驱动的汽车
·面向嵌入式系统的I2C总线设计和测试
·嵌入式Linux的图像采集与显示
·利用MCU实现超长的电池使用寿命
发表评论
密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。)
阅读排行
·隔离端子的抗干扰和应用选
· 基于ARM-Linux和CDMA的远
· 基于单片机的嵌入式SNMP
· 利用MCU实现超长的电池使
· 面向嵌入式系统的I2C总线
· CISC和RISC微控制器
· μC/OS—II的嵌入式串口
· 波音选择风河下一代网络L
· 基于事件一目标驱动的人
· 嵌入式蓝牙PSTN语音接入
专题教程
·家庭网络:从带宽共享走向
· 夏普LCD技术详解
·汽车动力传动系统一体化智
·医疗行业中的定位感知系统
·智能家居相关技术及比较
·Spansion、方舟科技与吉芯
·Steeley移动芯片带动PC价
·全球首个成套家电标准发布
·中国汽车电子市场潜力持续
·低批量手持设备设计:勇敢
最新文章
·Linux2.4与Linux2.6内核调
·如何选择合适的嵌入式软件
·ARM/DSP双核系统的通信接
·嵌入式Linux系统中I2C总线
·奇趣科技宣布业界对Qtopia
·嵌入式MPEG-2远程网络视频
·飞思卡尔提供首款带片上TF
·面向嵌入式系统的I2C总线
·嵌入式Linux的图像采集与
·利用MCU实现超长的电池使
·ARM高度优化REALVIEW实时
·嵌入式蓝牙PSTN语音接入点
·2006微软嵌入式系统教学研
·IAR和Micrium建立新的合作
·μC/OS—II的嵌入式串口通

首页 - 加入收藏 - 联系我们 -照明设计
照明设计网电子专栏 5ilight.Com 版权所有
Copyright (c); 2007 - 2010 All rights reserved