Sun Lee

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

     最开始设计产品时并没有考虑使用嵌入式操作系统,因为比较简单。后来在设计过程中,总是出现要求增加功能,导致开发延迟较为严重,而且又出现了一些比较严重的BUG问题。后来在技术网站上看到有推荐使用嵌入式操作系统,一番比较后采用了uC/OSII,使用效果不错,顺利解决了很多问题。随后就开始慢慢研究学习这个操作系统,很自然切换到了当前的uC/OSIII,在网站是买了官方的书籍,在朋友那里看到了配套的开发板,但是由于采用的处理器不同,所以我没有买开发板而是将其在自己的工作板进行了测试和学习。

     老实说,官方的教材写的真心的差,如果是初学者真是不建议看这本书,当然翻译的还是很不错的。我在使用uC/OSIII时,看了几个案例后很快入手,但是使用这本教材真是看了几次都有些晕乎的(估计是我的问题),后来又看了一些别的教程后很快入手,现在的几款产品中使用了这个版本的OS,效果很好。

     我最近在看了官方的几个文件,一冲动将其中的一个文件顺便翻译了为中文,顺便也学习了不少东西。打算将其分享出来,因为刚刚翻译完,排版什么的很乱,错误也很多,待我整理后加上自己使用的心得分享出来。我翻译的是3.05版本的API函数,还有参考和用户手册,估计是没有时间翻译了,最近真的很忙。

     对于uC/OSIII如果理解了其原理,使用起来非常容易,我在分享时也会顺便写一点。下面介绍一个基本的工作原理。

     这个OS是多任务管理,当前的版本只支持单核CPU,也就是虽然系统中有多个任务,但是在某一时刻只能且只有一个任务在运行,是优先级最高的任务在运行,如果所有的任务都没有处于运行,则运行空闲任务。空闲任务是系统任务,OS自动创建,永远处于就绪状态。OS的作用就是查看当前有没有高优先级的任务进入就绪状态,如果有则将CPU的使用权交给给任务,待任务执行完成后交出CPU的使用权,OS则查看现在有没有就绪的任务,如果有多个任务同时就绪则选择优先级最高的任务运行;如果有相同的优先级则轮转调度相同优先级的任务。

     这个是OS管理的基本原理,理解了这一点,那么就很容易明白,如果在一个运行的任务中将调度器锁住(此时将不能发生任务调度),那么锁住后则调用延时等可能将自身挂起的函数,因为所谓的将任务自身挂起,其实就是使当前的任务暂停运行,交出CPU的使用权,但是此时不能调度任务,怎么才能交出使用权呢?一定会造成错误的。

  这个是OS的一个基本原理,后续将逐步将其API函数及其作用一一分享出来。

 

posted on 2016-05-21 15:43  Sun Lee  阅读(1318)  评论(0)    收藏  举报