原创 多状态/时间驱动机制的嵌入式操作系统DemoRoutine

2007-1-26 08:01 4463 10 10 分类: MCU/ 嵌入式

最近充电,看了一本好书,推荐给大家,很适合51的初学者:《C语言嵌入式系统开发》,Michael J. Pont著,陈继辉等译;中国电力出版社,2003,12.


 


书中介绍了作者编写的一个微型嵌入式系统,取名为sEOS,意即Simple Embeded OS。俺平时小编小模习惯了前后台超级循环的框架,将本书粗粗的过了一遍之后,顿时醍醐灌顶,觉得这eEOS简单已矣,却非常的适用。现总结如下:


 


0、系统的设计的理念是把一个比较复杂(不能太复杂)的任务分割成若干个不同的任务处理子状态,这样,在一个系统时钟Tick内仅完成某个任务子状态的处理,同时切换任务状态,紧接着的下一个Tick内处理新切换的任务子状态,完了再次切换任务状态………这样,系统就在不同的任务状态之间无休止的轮回 !


 


1、占用极低的CPU资源,但却非常的灵活;


 


2、把需要处理的任务分成多个子任务(也称状态),每个子任务相对独立,并且在系统Tick的驱动下轮回推移;


 


3、状态之间转换时,采用switch-case语句实现,简单明了,易于控制;


 


4、象其它许多嵌入式系统一样,可以有效的完成周期性执行单任务的功能,同时也可以建立任务状态系统(注:这一个字不是修饰“任务”,也不是修饰“系统”,只能修饰“状态”),却无须关心任务状态切换时的堆栈修改、函数重入等等,sEOS本身就不在乎这些;


 


5、使用这套sEOS的关键是:每个子任务的处理时间最大不能超过一个系统TICK,否则会导致系统TICK丢失


 


6、完了本人特意将这套“内核”修理了阵子,做一个交通灯控制的仿真程序张贴如下:


点击看大图


 


7、rar里边是该Demo的程序文件,也包括了sEOS的“核心部件”,或许做一些东戳西顶的小项目也有用得上的时候。将压缩包的文件介绍下:


 


Simple_EOS.C ——系统内核,包括系统节拍初始化及Tick内任务调度;


Simple_EOS.H——系统内核头文件,一些红定义之类的;


这两个程序为方便应用,本人对原文件做了修改,文件名不变。


BootLoader.c——模块集成文件,包括main函数;


Defines.h, Includes.h, AT89X52.H——俺编辑、拷贝的一些头文件;


X.C, X.H ——具体需要完成的任务处理例程,此处为演示交通灯控制;


TrafficDemo.hex——本人在Keil下编译好的hex文件;


TrafficDemo.dsn——本人制作的Proteus仿真文件,用6.9sp4方能打开;


 


8、不正之处,欢迎大方提点,先谢了 !

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条