状态图的编程方式

[复制链接]
4946|14
 楼主| 开源共享 发表于 2009-8-11 11:08 | 显示全部楼层 |阅读模式
本帖最后由 开源共享 于 2009-8-15 11:33 编辑

对于嵌入式软件公司可以销售RTOS、中间件,但不能销售编程方法,
但对一个软件工程师来说,拿到RTOS和中间件之后,他的工作才刚刚开始,如何写自己的应用?从结构化编程(C语言)到面向对象编程(C++),是一个跳跃,在没有C++编译的MCU上我们可以用C语言实现面向对象编程,这是不错的方法。但对于事件反应式系统来说,有没有更好的方法,统一建模语言UML给我们很多启示,用轻量级的状态图来实现事件驱动系统
但状态图不能在真空中运行,所以对于软件工程师来说,需要知道嵌入式编程的完整概念。
事件驱动系统是必须对事件做出反应的系统,99%的微处理器芯片都为各种嵌入式系统所用,嵌入式系统自然是最主要的反应式系统。
    为了定义和实现事件驱动系统,状态机是一种很好的形式方法。本文介绍一种统一建模语言UML的轻量级替代品------状态机的C语言实现(状态模式)。
状态机需要有一个多线程框架的支持,所以就有了一轻量级RTOS的替代品-----多线程框架(基于优先级的非抢占式调度)。

我们的系统有人机界面、按键、显示,有采集输入,通过运算或判断输出控制信号。在一个嵌入式系统中超过80%的代码和以前的产品是很相似的。我们把这些封装成完整的事件函数,在系统中调用,我们称之为构件
所以在嵌入式编程中有三个重要概念:框架、构件和模式。
框架:可以是一个商用RTOS(UC/OS-II,ECOS),LINUXWINCE等等,或者是自己写的可以做多线程调度的框架。程序需要一个骨架,这就是框架。
构件:可以是驱动或中间件,或者自己写的可复用IO代码。比如:串口驱动,TCP/IP协议栈、GUIUSB驱动等等。
状态模式状态图在软件方法学和建模语言(如UML)中得到了普遍的认可, 对于事件驱动系统来说,状态图方法是一种强有力的设计方法。基于模型的开发对于当今的高复杂性、短周期的商业环境来说至关重要。使用状态图方式进行基于模型的嵌入式系统开发,很可能在更短的时间内构建更复杂而且可靠(缺陷更少)的系统。
      状态模式编程优势:
1、状态机往往会从代码中消除许多条件语句,甚至是呈数量级的减少。由于明确了任何时刻系统的状态,所以状态机要求仅测试一个变量(状态变量)来替代为确定操作方式而测试许多变量。
2、用状态进入和退出动作实现有保证的初始化和清除。
3、安全支持行为继承的层次式状态机。
4、使用和维护都简单。
5、轻易地改变状态机拓扑。
6、提供了运行时效率和小的内存占用。
 楼主| 开源共享 发表于 2009-8-11 11:17 | 显示全部楼层
文档里有状态图表示法

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
hqgboy 发表于 2009-8-12 08:19 | 显示全部楼层
顶。。。。
yewuyi 发表于 2009-8-13 16:37 | 显示全部楼层
这就是嫌疑帖?
水清音 发表于 2009-8-13 17:27 | 显示全部楼层
慕名而来,没发现技术机密之类的呀
火箭球迷 发表于 2009-10-22 21:53 | 显示全部楼层
梦到天涯 发表于 2009-10-23 08:25 | 显示全部楼层
很不错
baidudz 发表于 2009-10-23 09:10 | 显示全部楼层
呵呵,说的好仔细
yybj 发表于 2009-10-23 10:40 | 显示全部楼层
很不错的贴
pkat 发表于 2009-10-23 11:05 | 显示全部楼层
谢谢共享
gxgclg 发表于 2009-11-18 21:25 | 显示全部楼层
说的好详细
hehu8 发表于 2009-12-16 15:27 | 显示全部楼层
机密??
无冕之王 发表于 2009-12-17 11:13 | 显示全部楼层
很实用的贴
火箭球迷 发表于 2009-12-30 09:40 | 显示全部楼层
很具体
txcy 发表于 2010-1-5 10:43 | 显示全部楼层
谢谢共享,赞
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部