目标方法
在正式开始学习之前,我们首先要明确一下学习目标。这门课程的主要目标是通过一步一步的展示让你了解一个完整的RTOS究竟是怎么样实现的。
这个RTOS是我们自行开发的一个系统,而不是拿现成的RTOS分析实现。这样做的好处就是比较简单,因为成熟的系统中通常都包含太多代码,不利于学习。
所以在学习之前希望你能够明确以下几点:
- 没有同时必要去参考其它RTOS的具体实现。在整个课时中,我们将完整的展示一个RTOS的实现。
- 建议不要跳过任何课时,因为每个课时之间都是相互关联的,当前课时是以上一节课时为基础
我们的目标是通过研究一个RTOS的具体实现,来掌握RTOS的本质工作原理。这样,当你再去使用其它的系统时,就会觉得毫无压力!
在学习工作,你可能会遇到一些困难。有可能是基础知识准备不足,在这个情况下可以暂停课程的学习,扎实相关知识后再继续往下走。如果是其他的问题,请在课程的交流群中向老师提问。
重点难点
本门课程的主要难点有三个,分别如下:
- 任务切换的原理以及实现。该部分是整个系统的核心,难度最大也最有价值,需要你付出较多的精力
- 链表位图等常用的数据结构。如果你之前没有接触数据结构,可能需要一段时间来理解
- 事件控制块及具体模块类型的原理与实现。
课程中包含了非常多数据结构、以及操作系统原理相关的知识。如果你能够掌握这些知识,那么你的水平将有一个大的提高!
注意事项
这门课程并不是为完全甚至没有任何嵌入式开发基础的同学准备的,该课程具备一定的难度。``。简单地说,你至少需要具备以下的基础:
- 熟练掌握C语言,至少知道什么是链表
- 在某一类型的MCU上进行过开发(简单用过也可)
- 了解RTOS是什么,如果会用那更好
如果你不具备以上的基础,那么在学习时可能会感觉比较困难。可以先补上基础,然后在条件准备充分是再回来学习中这门课程。
常见问题
咱们这个课程是不是不用开发板?
除最后一个课时外,其它的全在模拟器上完成。最后一个是讲迁移到stm32上,不用开发板其实也可以用模拟器完成。修改的东西不多,可以略过。课程中选的stm32f103,你用stmf2, stmf0也可以,或者用lpc17xx的都行
课程是否长期有效?
课程已经发布到多个平台上,无论是哪个平台,我都没有设置时间限制。因为考虑到有些同学可能一段时间内有事、或者由于基础知识还有欠缺发现自己暂时学不下去,所以这些同学可能等待将来合适的时候再学习。
课程是否有直播
没有,课程的主要内容都在录制的视频中,即便有直播不会再讲额外的东西,主要以答疑分享为主。所以,不要太在意是否有直播
课程的RTOS对单片机有要求吗?8位能兼容吗?另外是否一定要有中断优先级的资源
8位机上是可以跑的,像ucos还能在51上跑。不过这个从一开始就没有太多考虑移植到不同类型的内核上,所以如果要移植过去,可能要改的地方就很多了。我们目前最主要是学RTOS的原理,学会了,就可以灵活运用其他操作系统。
这门课会讲RTOS的应用吗?
这门课主要讲实现,没有涉及os的具体应用。那个可以单独成一门课课。可能你要找下相关的资料。我不可能在视频中把所有东西都讲的,就像有的同学c基础弱点,不可能在视频中也把c中的一些问题也讲一下。课程主要是讲实现,不是讲应用
代码风格和学习方法
为什么函数通常以t开头
是的。这是用来减少名称冲突的一种方式
比如os中定义了一个接口函数,你也可能想在自己的应用中定义同名的。到底调用谁的呢? c中不像java可以用包,像cpp用名称空间来解决这个问题,所以就在函数名上做点文章。加上t之后,表示专属tinyOS的接口;你自己定义的接口只需要不使用t开头命名函数,就不会有冲突了。
你如果看一些c的第三方库,很多也会采用类似的方式,加个前缀,代表xx开发的接口
能否提供课程的PPT下载?
有没有专门讲数据结构比较好的书和视频吗
这个我没有推荐。有同学推荐严蔚敏的数据结构。