加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

RTOS内核源码,非必要不建议阅读

2023/10/30
2576
阅读需 7 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

微信公众号 | strongerHuang

最近看到技术交流群在讨论【要不要阅读RTOS内核源码】的话题。站在过来人的角度来说下:非必要,不建议你阅读RTOS内核源码。

我在读大学的时候,喜欢研究底层的技术原理,比如数码管、液晶、74系列逻辑IC等,好奇它们怎么工作、怎么实现的,也会写一些代码来测试,验证其中原理。

再后来,学习一些协议栈、RTOS,会比较好奇,也会花时间研究其中的源码。直到深入阅读、理解RTOS内核源码的时候,才发现并非一件容易的事。

我学习RTOS的经历

先给大家说下我学习RTOS的经历吧。

我学习RTOS是从大学的时候就开始了,在学习RTOS之前和很多人一样,也是什么都不懂,跟着老师、看着周边的人学什么就跟着学什么,比如数电、模电、单片机编程、外设等。

单片机裸机各种资源外设学的差不多,感觉应该进阶一下了,所以就选择了RTOS。

在2011、12年读书的时候,RTOS还不像现在这么流行(那时还是以“裸机”为主),那个时候网上RTOS的教程大多都还是以μCOS为主,其他RTOS的资料相对很少。像FreeRTOS、RT-Thread以及其他RTOS的资料都很少。

因为早期μCOS的发行都有配套的书籍(请参看µC/OS的那段故事),所以早些年在教学方面大多选择了μCOS,这也是我当时选择μCOS作为学习的原因。(顺便再提一点,虽然早期μCOS是商业收费的操作系统,但源码是可以免费下载的)

1.选择单片机开发板我早期学习单片机主要是51(AT89C51STC89C51等),MSP430等,可以说对他俩玩的比较熟。

所以学习μCOS也是基于他俩开始的,因为大家都知道51资源(Flash、RAM)确实太少了,虽然网上有基于51单片机移植μCOS系统的,但移植系统之后基本干不了别的事了。

所以,我基于51移植μCOS折腾了一段时间就放弃了,选择了MSP430,430相对51资源多一些,还能有发挥的余地。

早些年如果有学习基于MSP430移植μCOS系统的同学,或许都看过我早期分享的源码:

因为MSP430之后用过STM32xx、 LPC17xx等基于ARM Cortex-M3 内核的32位单片机,当时基于MSP430跑μCOS系统也感觉很吃力,所以后来选择了STM32跑μCOS系统。

顺便再回忆一下STM32开发板:

现在STM32开发板基本是正点原子、安富莱、野火这三家的天下,早些年基于STM32的开发板是一家神舟开发版,当时可以说全网最火,关键原因是性价比很高。

当时,像神舟III号基于STM32F103ZE那样一块板载资源非常丰富的开发板只要一百多。虽然我当时比较穷,但我还是没经受住诱惑买了神舟I号,后又买了神舟III号。

可惜的是,神舟开发板团队后面(应该在15年之后)就没有再做了,不知道有多少人还有这段记忆?

2.阅读μCOS内核源码我接触μCOS操作系统是在2011年,那个时候也是参考各种例程移植代码,观察各种现象。

虽然系统跑通了,内核资源也用上了,但始终不能理解各种原理,也不能Get到实时操作系统的精髓

于是,开启了阅读源码之路,这一下来,发现并不简单。因为操作系统中有各种指针、数组、结构体等,那个时候老师也从来没有教过数据结构那些知识,只能靠自己一步一步摸索。

我阅读μCOS操作系统内核源码及内核资源,前前后后、断断续续大概花了一年时间,之后才深入明白RTOS原来是这么工作的,也更加理解了μCOS内核调度原理、通信机制等。

如果早些年有学习μCOS的同学,应该会看过我早期分享的一份基于神舟III号、uCOS2.92系统的源码,包含多任务、信号量、互斥锁、事件标志、消息邮箱、消息队列、内存管理等各种例程:

这份源码有中文注释,是我早期学习μCOS的时候一步一步翻译过来,当时学习μCOS可以说下了狠功夫。

关于这个源码我录了一个简单的视频:

学习RTOS有必要阅读源码吗?

你看了我上面的经历,可能会有一种阅读内核源码的冲动。

其实,对于很多人我是不建议阅读源码,特别是两种人:

    • 基础较差的人、没有时间的人

我学习RTOS之前折腾过很多源码,也参加过电子设计竞赛,自认为基础还可以。关键是在大学,有大量的时间。

如果你基础不好,且没有太多空闲时间,又要学习RTOS,阅读源码一定要慎重、慎重、再慎重。

对于绝大部分读者,我的建议是:直接参考例程,然后折腾操作系统的各种API,通过状态灯、串口打印输出理解其中的作用及原理。

比如:创建任务之后,删除任务,你观察状态灯是否还在执行这个任务。

阅读并理解内核源码有什么好处?你可能会问:不建议阅读源码,是不是阅读源码就没啥作用了?

阅读并理解源码其实对自己有很大帮助作用的,比如你会进一步理解RTOS各种通信机制方便后期应用编程,再比如能提升自己的编程思维,我后期很多项目都借鉴了一些源码的模式。

最后再说明一下,RTOS内核有一些相对复杂的内容,如果你基础不好,可能阅读几天就放弃了。同时,如果你没时间,只是三天打鱼两天晒网,最终可能没有一点收获。

所以,对于绝大部分人我是不建议阅读源码。

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
AFBR-5972BZ 1 Broadcom Limited Transceiver, 635nm Min, 675nm Max, Panel Mount, PACKAGE-8

ECAD模型

下载ECAD模型
$43.31 查看
570BAB000118DG 1 Silicon Laboratories Inc LVDS Output Clock Oscillator, 10MHz Min, 810MHz Max, 810MHz Nom, ROHS COMPLIANT PACKAGE-8

ECAD模型

下载ECAD模型
$22.24 查看
74LVTH125MTCX 1 Fairchild Semiconductor Corporation Bus Driver, LVT Series, 4-Func, 1-Bit, True Output, BICMOS, PDSO14, 4.40 MM, LEAD FREE, MO-153AB, TSSOP-14
$0.56 查看

相关推荐

电子产业图谱

作者黄工,从事嵌入式软件开发工作8年有余,高级嵌入式软件工程师,业余维护公众号『strongerHuang』,分享嵌入式软硬件、单片机、物联网等内容。