电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

初识uCos--II

《嵌入式实时操作系统uCos-II》这本书是我还在天津上班的时候买来的,那时公司正好使用LPC2306开发一个手持设备产品。由于那时我们从来没有使用过ARM进行产品的开发,对嵌入式RTOS操作系统了解的也是甚少,所以在产品的开发过程中我们只是把LPC2306当成一块高级单片机来用,比起使用单片机来开发那是爽多了,你基本上不用去考虑其RAM的空间是不是够用,大型的数组随便加(夸张一点),代码是不是要优化以使其不超过你有限的ROM空间,你觉得怎么方便你就可以怎么去写代码,尤其是ARM的速度,这个优势使得你基本上不要去考虑各个功能模块的实时性。这些优点虽然在初期开发过程中让我们感觉很爽,但是随着项目的推进,我们发现我们很难驾驭我们的程序架构了,觉得系统越来越不稳定了,随时都有可能爆发出不可预知问题,功能的增加和程序的维护也越来越觉得困难。后来我们终于深刻的体会到:不管你的开发平台有多么丰富的资源,你都不能去无谓的浪费资源,你可以充分的去体会丰富资源给你带来的方便性,但是你千万不要暴殄天物,这样会适得其反。
 从那时起我就萌生了一种学习嵌入式实时操作系统的念头,学习它并不是一定要在我们的开发项目中使用它。我学习它是想从中学习一些编程的思路和更好的去设计我们工程的程序架构。当然能在更大的工程项目中去使用它那当然也是我们学习的目的之一。
 《嵌入式实时操作系统uCos-ii》这本书很不错,虽然我暂时只是看了它里头其中的一两个章节,但是我觉得对于一个初学嵌入式实时操作系统的同志来说是一个很好的推荐。它详细的让我们觉得我们这些懒人即使深入了解也是很难做到,这无不让我对笔者和译者产生一种敬佩之情。在这本书中提到了一个网址:http://uCos-ii.com,这个网址在网上已无法打开了,它的官方网站应该是:http://www.micrium.com。不过它是一个英文网站,哎,越来越觉得英语的重要性了!
 那么我们为什么要在系统设计中加入实时操纵系统呢,是为了时髦嘛,应该不是吧!它和一般的无操作系统的纯C语言工程有什么区别呢?举个例子:假如在我们的系统中要处理按键的采集、数据的存储、数据的显示三个功能,在纯C语言程序中程序是这样顺序执行的:当检测到某个特定按键值时开始存储数据(比如将获得的数据通过IIC通信存储在外部的EEPROM中),存储完数据后再将相关的信息显示在显示屏上。我们知道这三个步骤是顺序执行的,当我们进行数据存储或数据显示的时候是无法再进行按键检测的。假如我们要存储的数据量比较大,2560个字节,而写一次EEPROM最多只能是16个字节,且连续写之间需要大概10个ms的延时,那么存储完2560个字节需要(2560/16-1)*10=1590ms+通信时间,也就是说在一次按键按下后必须再过最少1.6S的时间才能再次采集到其它按键的动作。这样对实时性要求比较高的任务就无法实现了。也许你会说把实时性要求高的任务可以放在定时器中断或是其它外部触发中断中。但是往往一个微控制器的定时器资源和外部中断资源是有限的或根本就不适合一些实时任务。在这里如果我们加入操作系统进行管理,那么它将会变得简单易行。操作系统是按照任务调度进行管理程序的运行的,而每个任务都有自己的优先级,只要把实时性要求高的任务优先级别设置的高点,就可以实现任务的实时性。根据任务实时性的要求我们可以适当的调节操作系统进行任务调度的周期,比如5ms或是10ms都可以,依具体的系统而定。在上面的三个功能中我们可以把他们当成三个任务,按键采集的任务优先级最高,再者是显示任务,数据存储的优先级最低。当我们按下按键时,按键采集任务会将采集到得按键消息发送个操作系统,操作系统根据按键消息来调度不同的任务。假如第一个按键消息是要进行数据的存储,那么操作系统在接收到按键消息之后会调度数据存储任务进行数据的存储,如果在数据存储的同时有新的按键按下,操作系统会挂起数据存储任务,调度优先级高的按键采集任务进行按键消息的采集,如果下一个按键消息是要去执行某一个更重要的实时任务,那么系统会继续挂起数据存储任务去执行比数据存储任务优先级高的任务,直到没有比数据存储任务优先级的任务时才继续紧接着去执行数据存储任务,从而达到实时性。
 上面讲的只是操作系统其中一个特性:实时性。其实它还有很多的特点。这个需要我们慢慢的去体会。就像《嵌入式实时操作系统uCos-II》这本书中提到的一样:提倡在计算机嵌入式应用中使用实时操作系统RTOS(Real Time Opereting System),是因为RTOS将应用分解成多任务,简化了应用系统软件的设计;RTOS使控制系统的实时性得到保证,可以接近理论上能达到的最好水平;良好的多任务设计,有助于提高系统的稳定性和可靠性。

博主
laizibin315
laizibin315's Blog
路走的越远离我们的目标就越近! 交流和学习: Email: laizibin315@163.com QQ: 530154004 本人创建了一个学习交流群:29727566.有兴趣的可以加入。
点击跳转