天天看点

从0到1教你写UCOS-III 第二部分:如何学习RTOS?

2.1 为什么要学习 RTOS?

      当我们进入嵌入式这个领域的时候, 往往首先接触的都是单片机编程, 单片机编程又首选 51 单片机来入门。 这里面说的单片机编程通常都是指裸机编程,即不加入任何 RTOS(Real Time Operation System 实时操作系统) 的程序。 常用的 RTOS 有国外的 FreeRTOS、ucOS、 RTX和国内的 Huawei LiteOS、 和 RT-Thread等, 其中尤以开源且免费的 FreeRTOS的市场占有率最高,历史悠久的 ucos屈居第二。

      在裸机系统中,所有的程序基本都是自己写的, 所有的操作都是在一个无限的大循环里面实现。现实生活中的很多中小型的电子产品用的都是裸机系统, 而且也能够满足需求。但是为什么还要学习 RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着产品要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得更加复杂,如果想降低编程的难度, 我们可以考虑引入 RTOS 实现多任务管理, 这是使用RTOS 的最大优势。二是学习的需要,必须学习更高级的东西,实现更好的职业规划,为将来走向人生巅峰迎娶白富美做准备,而不是一味的在裸机编程上面死磕。作为一个合格的嵌入式软件工程师,学习是永远不能停止的事,时刻都在为将来准备。书到用时方恨少,我希望机会来临时你不要有这种感觉。

      为了帮大家理清 RTOS 编程的套路,下面我们简单的分析下这两种编程方式的区别,这个区别我称它为学习 RTOS 的命门,只要打通这个任督二脉, 以后的 RTOS 学习可以说是易如反掌。 在讲解这两种编程方法的区别的时候,我们主要讲方法论,不会涉及到具体的代码编程, 主要还是通过伪代码来讲解。

2.2 如何学习 RTOS?

      裸机编程和 RTOS 编程的风格有些不一样,而且有很多人说 RTOS 的学习很难,这就导致学习的人一听到 RTOS 编程就在心理面忌惮三分, 结果就是出师未捷身先死。那么到底如何学习一个 RTOS?最简单的就是在别人移植好的系统之上,看看 RTOS里面的 API 使用说明,然后调用这些 API 实现自己想要的功能即可。完全不用关心底层的移植,这是最简单快速的入门方法。 这种方法各有利弊,如果是做产品,好处是可以快速的实现功能,将产品推向市场,赢得先机,弊端是当程序出现问题的时候,因对这个RTOS 不够了解,会导致调试困难,焦头烂额,一筹莫展。 如果是学习,那么只会简单的调用 API,那是不可取的, 我们应该深入的学习其中一款 RTOS。

     目前市场上现有的 RTOS,它们的内核实现方式都差不多,我们只需要深入学习其中一款就行。 万变不离其宗,以后换到其它型号的 RTOS,使用起来,那自然是得心应手。那如何深入的学习一款 RTOS?这里有一个最有效也是最难的方法,就是阅读 RTOS 的源码,深究内核和每个组建的实现方式,这个过程枯燥且痛苦。 但为了能够学到 RTOS 的精华,你不入地狱谁入地狱?

2.3 如何选择 RTOS?