打印

状态图的编程方式

[复制链接]
3273|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 | 只看该作者
文档里有状态图表示法

图形表示法指南.pdf

92.88 KB

使用特权

评论回复
板凳
hqgboy| | 2009-8-12 08:19 | 只看该作者
顶。。。。

使用特权

评论回复
地板
yewuyi| | 2009-8-13 16:37 | 只看该作者
这就是嫌疑帖?

使用特权

评论回复
5
水清音| | 2009-8-13 17:27 | 只看该作者
慕名而来,没发现技术机密之类的呀

使用特权

评论回复
6
火箭球迷| | 2009-10-22 21:53 | 只看该作者
好帖

使用特权

评论回复
7
梦到天涯| | 2009-10-23 08:25 | 只看该作者
很不错

使用特权

评论回复
8
baidudz| | 2009-10-23 09:10 | 只看该作者
呵呵,说的好仔细

使用特权

评论回复
9
yybj| | 2009-10-23 10:40 | 只看该作者
很不错的贴

使用特权

评论回复
10
pkat| | 2009-10-23 11:05 | 只看该作者
谢谢共享

使用特权

评论回复
11
gxgclg| | 2009-11-18 21:25 | 只看该作者
说的好详细

使用特权

评论回复
12
hehu8| | 2009-12-16 15:27 | 只看该作者
机密??

使用特权

评论回复
13
无冕之王| | 2009-12-17 11:13 | 只看该作者
很实用的贴

使用特权

评论回复
14
火箭球迷| | 2009-12-30 09:40 | 只看该作者
很具体

使用特权

评论回复
15
txcy| | 2010-1-5 10:43 | 只看该作者
谢谢共享,赞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

41

帖子

0

粉丝