0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

strongerHuang 来源:strongerHuang 2023-10-30 16:37 次阅读

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

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

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

我学习RTOS的经历

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

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

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

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

因为早期μCOS的发行都有配套的书籍(请参看µC/OS的那段故事),所以早些年在教学方面大多选择了μCOS,这也是我当时选择μCOS作为学习的原因。

(顺便再提一点,虽然早期μCOS是商业收费的操作系统,但源码是可以免费下载的)

1.选择单片机开发

我早期学习单片机主要是51(AT89C51、STC89C51等),MSP430等,可以说对他俩玩的比较熟。

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

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

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

764e93a8-76d4-11ee-939d-92fbcf53809c.png

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

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

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

765285bc-76d4-11ee-939d-92fbcf53809c.jpg

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

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

2.阅读μCOS内核源码

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

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

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

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

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

765666a0-76d4-11ee-939d-92fbcf53809c.png

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

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

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

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

基础较差的人

没有时间的人

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

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

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

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

阅读并理解内核源码有什么好处?

你可能会问:不建议阅读源码,是不是阅读源码就没啥作用了?

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

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:RTOS内核源码,非必要不建议阅读

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RTOS信号量、队列通信原理

    有深入理解RTOS原理,或阅读RTOS源码的同学应该知道:RTOS实现任务间通信通常是由一系列指针进行操作实现的。
    发表于 08-16 10:07 1664次阅读

    深入理解和实现RTOS_连载

    的前生今世感兴趣,建议仔细阅读《嵌入式操作系统史话》这个连载的文章,作者何小庆教授花了很多精力编写了这组资料。深入理解和实现RTOS_连载2_多任务机制概述在前面我们曾介绍了多任务系统是如何演化的。和前后
    发表于 05-29 11:20

    Win10系统进行深度学习时系统C盘满了,正确卸载一些非必要的内容的方法

    C盘:当Win10系统进行深度学习的时候发现系统C盘满了,大神教你如何正确卸载一些非必要的内容——Jason niu
    发表于 12-26 10:45

    Linux内核源码之我见——内核源码的分析方法

    一、内核源码之我见Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读
    发表于 05-11 07:00

    我的项目要不要跑RTOS

    经常有初学读者问一些关于RTOS的问题,比如: 我现在要不要学习RTOS?学习RTOS有什么好处?我的项目要不要跑
    发表于 06-17 06:30

    下载编译源码的要点和搭建源码阅读环境的方法

    下载编译源码的要点和搭建源码阅读环境的方法。下载编译源码,一方面是为了搭建源码阅读环境,另一方面
    发表于 01-10 06:49

    实时操作系统RTOS必要的吗

    什么目标是决定RTOS必要的还是花瓶的关键?如何选择RTOS
    发表于 02-28 06:21

    Linux内核阅读心得体会

    Linux内核阅读心得体会
    发表于 10-24 08:55 8次下载
    Linux<b class='flag-5'>内核</b><b class='flag-5'>阅读</b>心得体会

    需要掌握的Linux内核源码分析方法

    Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次。如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径。
    发表于 04-28 16:54 811次阅读
    需要掌握的Linux<b class='flag-5'>内核</b><b class='flag-5'>源码</b>分析方法

    华为鸿蒙系统内核源码分析上册

    鸿蒙內核源码注释中文版【 Gitee仓】给 Harmoηy○S源码逐行加上中文注解,详细阐述设计细节,助你快速精读 Harmonyos内核源码,掌握整个鸿蒙
    发表于 04-09 14:40 17次下载

    分享一个超级实用的源码阅读小技巧

    工欲善其事必先利其器; 我发现函数调用图可以让我们更加直观地了解到源码函数直接的调用和层次关系,提高阅读源码的效率 。 1 前言 看源码的时候,心血来潮想弄一下函数之前的调用关系,想起
    的头像 发表于 05-29 11:50 2052次阅读
    分享一个超级实用的<b class='flag-5'>源码</b><b class='flag-5'>阅读</b>小技巧

    MCU跑操作系统时RTOS总是必要的吗

    对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定RTOS
    的头像 发表于 11-18 15:45 2241次阅读

    阅读内核系列之内核调度器为何全局导出

    [导读] Linux内核代码庞大,阅读内核书籍总觉得云山雾绕,纸上得来终觉浅,希望通过阅读代码撰写笔记,能将这美人神秘的面纱掀开一角,...
    发表于 02-07 11:49 1次下载
    <b class='flag-5'>阅读</b><b class='flag-5'>内核</b>系列之<b class='flag-5'>内核</b>调度器为何全局导出

    AOSP Android11系统源码内核源码简析

    AOSP源码中并不包括内核源码,需要单独下载,内核源码有很多版本,比如common是通用的Linux内核
    的头像 发表于 01-29 09:25 5380次阅读

    如何去阅读源码,我总结了18条心法

    在一个优秀的开源项目中,设计模式处处存在,所以在你开始阅读源码之前最好先了解一下常见的一些设计模式。当你了解了一些设计模式以后,在源码中遇到了相关的设计模式,你就可以快速明白代码结构的设计,从而以整体的视角去
    的头像 发表于 07-17 16:00 804次阅读
    如何去<b class='flag-5'>阅读</b><b class='flag-5'>源码</b>,我总结了18条心法