克汀病是什么病| 这是什么猫| 腰椎挂什么科室| 王八羔子是什么意思| 大肠湿热吃什么中成药| 什么是直径| 等效球镜是什么意思| 昆字五行属什么| erke是什么牌子| 游离甲状腺素是什么| 用进废退什么意思| 虎落平阳被犬欺是什么生肖| 人参和什么泡酒壮阳| 五路财神都叫什么名字| vgr100是什么药| 手麻是什么原因引起的| 正官正印是什么意思| 老年人腿无力是什么原因导致的| 吃一个海参相当于吃了什么| 雷锋代表什么生肖| 为什么心细的男人危险| 宝石蓝是什么颜色| 看对眼是什么意思| 自缢是什么意思| 张柏芝什么星座| 空谷幽兰下一句是什么| 第二聚体高什么意思| 利可君片是什么药| 额头长痘什么原因| 男人肾虚吃什么最补| 使婢差奴过一生是什么意思| 正营级是什么军衔| 什么是辅警| 23年属什么生肖| 户籍地址是什么| 闪卡是什么意思| 痛经吃什么水果| 青榄配什么煲汤止咳做法| 肾积水是什么意思| 肠道肿瘤有什么症状| 痛经吃什么水果能缓解疼痛| 左下腹痛挂什么科| 中国最长的河流是什么| 乙肝五项第二项阳性是什么意思| 布施什么意思| ao是什么| 引火上身是什么意思| 丑五行属什么| 不可或缺是什么意思| 幽门杆菌吃什么药最好| 冲任失调是什么意思| 满月针最晚什么时候打| 月经期间吃什么最好| 羧甲基纤维素钠是什么| 震楼神器楼上什么感觉| 男人吃什么补肾壮阳效果最好| 包虫病是什么症状| 鱼肝油是什么| 木耳吃多了有什么坏处| 胃息肉吃什么好| 哥哥的儿子叫什么| 武则天叫什么名字| 发福了是什么意思| 玲珑是什么意思| 牙肿了吃什么消炎药| 子宫后壁低回声是什么意思| 慢热型是什么意思| 早上吃什么最有营养| 恐龙灭绝的原因是什么| 玄孙是什么意思| 喆读什么| 少将相当于什么级别| 三五行属什么| 梦见猪下崽预兆什么| 陈旧性骨折是什么意思| 胰腺钙化灶是什么意思| 伊犁在新疆什么位置| 血小板偏高是什么原因| 阿昔洛韦片是什么药| 钮祜禄氏是什么旗| 肾囊肿有什么症状表现| 为什么床上有蚂蚁| 洋葱对肝脏有什么好处| 广东夏天煲什么汤最好| 眼镜pd是什么意思| 为什么有白带| 增强抵抗力吃什么| 撩 是什么意思| 抗核抗体阳性说明什么| 排卵期有什么| 小姑娘月经推迟不来什么原因| 03属什么| 骨折忌口什么食物| 扁平足是什么| 为什么蚊子咬了会起包| 血糖挂什么科| 两个水念什么| 房性心动过速是什么意思| 茯苓什么人不能吃| 乘风破浪是什么意思| 几月初几是叫什么历| 吃了龙虾后不能吃什么| 低密度脂蛋白低是什么原因| 生化是什么原因引起的| 喝什么降尿酸| 克是什么意思| 打卡什么意思| 酸奶能做什么美食| 准者是什么牌子| 六月八号是什么星座| 荷叶搭配什么一起喝减肥效果好| 蓝海是什么意思| 两胸之间是什么部位| 身上老出汗是什么原因引起的| 朗姆酒是什么酒| 切除甲状腺有什么影响| 拉肚子吃什么好| 鳀鱼是什么鱼| 七月十日是什么日子| 什么是ct检查| 生孩子送什么花比较好| 近五行属什么| baby是什么意思| 退烧药吃多了有什么副作用| 喝酒胃出血是什么症状| 白蚁吃什么| 假象是什么意思| 鸡枞是什么| 前胸后背长痘痘是什么原因| 石斛主治什么| 茯砖茶是什么茶| 墨镜镜片什么材质好| 毫无保留什么意思| 睡眠不好什么原因| 胃消化不好吃什么调理| 绯色是什么意思| 锻炼是什么意思| 维生素c主治什么| 水灵是什么意思| 什么是素质| 冰箱保鲜室不制冷是什么原因| 西瓜汁加什么好喝| 蛞蝓是什么动物| 什么补钾最快| 为什么会晕血| 给老人过生日送什么礼物好| 天蝎座后面是什么星座| 腿肿吃什么药| 鸭子烧什么好吃| efw是胎儿的什么意思| 恢复是什么意思| 急诊是什么意思| 鼓目念什么| 坚韧不拔是什么生肖| 泌乳素高有什么影响| 孙悟空的原名叫什么| 湿气太重吃什么好| 鼻子毛白了是什么原因| 付诸东流是什么意思| 总是犯困是什么原因| 松花蛋是什么蛋做的| 卖淫是什么意思| 七个月宝宝可以吃什么辅食| 一个月来两次月经是什么原因| 秀才相当于什么学历| 7月去英国穿什么| 夏令时什么意思| 水鱼煲鸡汤放什么药材| 窦性心律过速是什么意思| 雪碧喝多了有什么害处| 10月5日什么星座| 女性分泌物少是什么原因| 手指头脱皮是什么原因| 6月4号什么星座| 夜晚睡不着觉什么原因| 为什么老是头晕| 心花怒放是什么生肖| 蜘蛛为什么不是昆虫| 无名指比中指长代表什么| 什么什么若狂| 粉尘螨是什么| 蛋糕是什么生肖| 粉色配什么颜色| pp材质是什么材料| 尿蛋白定量高说明什么| 心内科是看什么病的| 作怪是什么意思| 男性检查男科都查什么| 开字五行属什么| 阉割是什么意思| 雪芽是什么| bj是什么意思| 荔枝和什么吃会中毒| 女性为什么不适合喝茉莉花茶| 霉菌性阴炎是什么原因引起的女| 名媛是什么意思| 1964属什么| 吃驼奶粉有什么好处| 西葫芦不能和什么一起吃| 83年是什么年| 倒走对身体有什么好处| 处女什么意思| 省纪委副书记是什么级别| 疣是什么意思| 草酸钙结晶是什么意思| 什么是磁场| 寄居蟹用什么水养| 挠头什么意思| 今年22岁属什么生肖| rimowa是什么品牌| 五行缺木是什么意思| 眼睛大小不一样是什么原因| 阴道炎不能吃什么| 韩语欧巴是什么意思| 21什么意思| 办港澳通行证需要带什么| 香油是什么| 嗦是什么意思| 多囊吃什么药| 28岁属什么的| 九五至尊是什么生肖| 喉咙疼痛一咽口水就疼吃什么药| 蛇瓜是什么| 天庭是什么意思| 苍白的什么| 经期可以吃什么水果| 红楼梦又名什么| 闲聊是什么意思| 女人吃莲藕有什么好处| 睾丸潮湿吃什么药| 月经粉红色是什么原因| 犯花痴什么意思| 牛筋草有什么功效| 美国的国宝是什么动物| 钾是什么东西| 正常人的尿液是什么颜色| 应急车道是什么意思| 躲春是什么意思| 暗网是什么意思| 蒲公英可以和什么一起泡水喝| 子宫肌瘤做什么检查| 6月18日是什么星座| 肝属于五行中的什么| 眼底出血是什么原因| 肚脐的左边疼是什么原因| 肚子着凉吃什么药| 翻糖蛋糕是什么意思| 鱼吐泡泡是什么原因| 双子座是什么性格| havva是什么牌子| 哥谭市是什么意思| 什么球身上长毛| 野生铁皮石斛什么价| 什么外之什么| 曾是什么意思| 扁桃体化脓是什么原因引起的| 梦到挖坟墓是什么意思| 推头是什么意思| 矿泉水敷脸有什么作用| 口疮吃什么药| 胎盘血池是什么意思| 2018属什么生肖| 竖小拇指什么意思| hook是什么意思| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 用UML建模开发嵌入式软件

海外舆论认为:机构改革顺应中国发展新趋势

作者: 时间:2025-08-04 来源:网络 收藏
摘要 针对面向对象与C语言的优缺点,提出一种新的方案,用面向对象的思想与工具进行的设计,用C语言进行编码,给出新方案应用实例,并在此基础上提出几种进一步优化程序性能的方法。新的方案增强了用C语言系统的可理解性、可移植性和稳定性,同时又保持了C语言高性能与低二进制代码长度的优点。
关键词 面向对象 LIML 统一语言百度 3月22日,在津巴布韦首都哈拉雷,被赦免的囚犯走出一所监狱。

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

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

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

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

作为面向对象的工业标准,几乎被所有面向对象的软件项目所使用。这个项目也使用来建模,用到的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所示。

可以用时序图等对用例进行进一步的分析,“启动”按键按下后处理的时序图如图5所示。

建模过程不是一个直线过程。它往往是一个演化、迭代的过程,不断地分析、评价、修改、再分析,才可能得到一个高质量的模型,为高质量的软件打下基础。

1.3 编码过程

Rose具有自动生成C++框架代码的功能。在Rose菜单中选择Tools→ANSI C++→Generate Code,可以生成C++的框架代码。

要用C编码,需要把C++代码稍作修改变成C代码。由于没有动态创建实体,所有的对象都是静态的。这使得修改工作极其简单――把“::”改成“_”即可。修改后的“_”前面的部分可以看成是对象名,后面的部分看成是成员函数名,源文件的修改如图6所示。

头文件也需要做相应的修改,对变量的定义需要放到源文件里面,如图7所示。

代码修改完成后,剩下的就是C语言的编码过程了。编码时,当调用对象成员时,“.”操作符用“_”代替,则刚好对应上修改后的变量和函数。

2 进一步优化程序的方法
为了进一步提高程序的速度,还应对程序进行专门的优化,例如中断处理程序里面一两条指令引起的差异就非常明显。下面介绍几种优化办法。

①把成员函数定义成宏函数。由于面向对象数据隐藏的特点,对数据的操作需要以函数的形式提供,使得数据的操作效率变低。C++编程时,类的成员函数不能修改成宏,改为C函数后,就可以修改了;但这种优化最好在调试结束后进行,因为宏函数不方便错误定位。修改方法如图8所示。
②把成员函数定义成内联函数,如图9所示。

③程序中使用查表。对一些很消耗时间资源的非常复杂的运算,可以使用查表的方式。在步进电机的加减速控制中,加减速曲线一般采用指数曲线或者S曲线,运算量较大。可以事先把曲线对应的定时器上界寄存器的值离线计算出来,并片j数组保存起来,需要时直接读数组即可。这种方法通过牺牲空问来换取时间,但是牺牲的是相对宽余的ROM空间,还是比较划算的。

结语
绕线机项目获得了很好的效果,达到了系统的性能要求。测试时,发现的错误相比以前类似项目大大减少。更让人兴奋的是,测试中没有发现任何大的软件结构上的错误。这归功于Rose的前期可视化建模功能。编码之前可以很清楚地掌握系统的结构,这是面向对象设计相比传统方法的优势。

应用结果表明,这种开发方法是很实用的,可以优化程序结构、缩短开发周期,实现快速开发又不降低程序的效率;但这种方法的应用是有局限性的,对效率与空间要求不高的嵌入式系统,完全可以直接用C++编程,因此这种方法只适合于空间紧张、实时性要求比较高的系统。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)


评论


相关推荐

技术专区

关闭
教授相当于什么级别 锤子是什么意思 黄金五行属什么 什么是善良 亚麻籽吃了有什么好处
脾大是怎么回事有什么危害 天理是什么意思 手指起水泡是什么原因 韩墨池是什么电视剧 大葱炒什么好吃
纵横四海是什么意思 直肠炎是什么原因引起 假性近视是什么意思 荸荠又叫什么 检查眼睛挂什么科
梦见新坟墓是什么预兆 切除脾脏对身体有什么影响 鱼上浮的原因是什么 脚脖子疼是什么原因 嘴里起血泡是什么原因
大便颜色发黑是什么原因hcv9jop0ns7r.cn 梦见死了人是什么意思adwl56.com 黄色上衣配什么颜色裤子hcv7jop9ns0r.cn 碳酸钙d3颗粒什么时候吃最好hcv9jop8ns3r.cn 酸碱度偏低是什么原因hcv8jop5ns4r.cn
晴雨伞是什么意思1949doufunao.com 宫颈锥切后需要注意什么hcv9jop4ns7r.cn 0什么意思hcv7jop6ns0r.cn ld是什么意思jinxinzhichuang.com 丹参长什么样子图片hcv9jop5ns6r.cn
耳石是什么hcv9jop2ns6r.cn 蝙蝠属于什么类动物hcv8jop8ns3r.cn 燃烧脂肪是什么感觉hcv9jop1ns4r.cn 羊悬筋是什么样子图片hcv7jop9ns5r.cn 乳癖是什么病hcv8jop0ns6r.cn
usr是什么意思hcv8jop7ns1r.cn 11月20日什么星座hcv8jop1ns0r.cn 脚底板痒是什么原因hcv7jop9ns1r.cn 抗体阳性说明什么hcv9jop5ns2r.cn 词讼是什么意思hcv9jop7ns2r.cn
百度