摘要
本文结合自己学习RTOS的经历,来谈谈如何快速入门一款RTOS,希望能够给初学者以启发,找到适合自己的学习思路和方法。
我的学习经历
ucos学习
我是在上学期间接触到了RTOS,当时学习的是ucos-II。首次接触RTOS,许多概念都是全新的,在图书馆找了两本书就开始学习了。《嵌入式操作系统uCOS-II(第二版)》(邵贝贝译著)、《嵌入式实时操作系统μCOS-II原理及应用》(任哲编著)。
说实话,对于初学者来说,《嵌入式实时操作系统μCOS-II原理及应用》这本书更合适一些,门槛低一些。《嵌入式操作系统uCOS-II(第二版)》这本书涉及到内容太多而且繁杂,门槛相对来说较高,不利于初学者学习。
经历缓慢而痛苦的学习后,终于把这两本书各啃了两遍,对uCOS涉及到的理论知识进行了系统的学习,由于当时没有开发板练手,只能算是理论入门了。
FreeRTOS学习
工作后,由于项目用的是FreeRTOS,便开始学习FreeRTOS。当时,它的中文资料很少。我在官网上下载了一些官方文档(全是英文),利用上下班坐车的时候,将官方指导手册读了一遍,熟悉了FreeRTOS提供的资源和API的用法。
接着就是在实际项目中应用。经历过一个项目之后,基本上能够熟练使用FreeRTOS完成需求的功能了。
RT-Thread学习
机缘巧合接触到了RT-Thread。这是一款国产的RTOS,现在发展势头很猛。当时,有幸参加了官方组织的RT_thread内核视频培训,以及网络实战训练营。同时,将官方文档《RT-THread编程指南》刷了一遍。经过理论+实践的学习方式,很快便掌握了RT-Thread内核编程。
后来将内核源码研究了一遍,弄懂了其设计思想和实现方法。不得不说,代码写的非常棒。基于此,较深入地理解了RTOS内核工作原理。功力又上升了一个层次。
同年,官方组织提前阅读评审书籍《嵌入式实时操作系统:RT-Thread设计与实现》,参与了评审并提供了一些修改建议,此过程相当于重新系统地学习了一下RT-Thread。
通过对RT-Thread的学习,对RTOS的原理有了较深入的理解。自认为把RTOS相关的基础知识夯实了。在看其他RTOS,很快便能上手应用。其他RTOS的实现大同小异,只是具体的设计思想和实现有差别。
我的学习方法
看资料。多看官方发布的资料,因为只有官方才能真正明白系统的设计思路和使用方法。官方的资料更能简单明了地介绍RTOS,以及快速指导使用者用到自己的项目中去。
做笔记。看资料的同时,要做学习笔记。我当时学习RTOS的时候,新的概念记不住,我就用笔抄一遍关键的知识点。记得当时抄了将近三个笔记本。
动手练习。一定要动手练习,只有经过亲自实践之后才能真正掌握。否则,只是纸上谈兵,时间长了,很容忘记。
多回顾。 动手练习的同时要回顾学过的理论知识。古人有云:“温故而知新”。只有理论加实践,才能快速掌握一项新的知识,达到融会贯通的程度。
需要具备的基础
具备C语言的基础知识,能够自己编写简单的程序代码。
学习过MCU裸机编程,最好了解中断、常用外设接口的使用等知识。
选择一款RTOS
目前比较有名的几款RTOS有以下几种,根据需要选择一款适合自己的进行学习。
ucos 资料丰富,但是代码结构复杂。
FreeRTOS 轻量级的RTOS,市场占用率比较高。
RT-Thread 国产RTOS,中文资料丰富,代码优美。
LiteOS 华为出品,定位物联网操作系统。
准备学习资料
获取系统源码
上官方网站下载即可,官方网站均提供下载支持。
文档资料
官方会提供指导学习手册或者使用指南。建议以官方资料为主,如果资料为英文的,可以去网上找大佬总结的学习资料或者翻译过来的中文资料。
熟悉RTOS的基础内容
对于初学者,在学习过程中会涉及很多全新的概念。若一时理解不了,不要灰心,先放一放。随着学习的深入,自然会慢慢理解。RTOS会涉及到的基础内容如下
任务(有的系统叫线程)
任务调度
任务优先级
信号量(包括计数信号量、二值信号量、互斥信号量)
事件标志组
消息队列
内存管理
内核时钟周期
优先级反转
空闲任务
临界区 作者:一起学嵌入式 https://www.bilibili.com/read/cv14522727/?from=search&spm_id_from=333.337.0.0 出处:bilibili
发表回复