浅聊一下RTOS的学习路线

一、关于看资料还是看视频

     以下仅代表笔者个人看法,仅供参考。笔者主要推荐通过资料进行学习,如果有不理解的地方再配合视频进行学习。因为笔者认为看资料的效率会更高,接收的知识更成体系,防止看了视频还是一知半解的状态。 

个人推荐的资料如下(以freertos为例): 《FreeRTOS开发手册》、《CM3权威指南》、 《嵌入式实时操作系统原理及应用》、 《FreeRTOS实时内核使用指南》《操作系统精髓与涉及原理》(这是本书,可自行购买);此处先把所有资料列出来,后续再讲解什么时候用到某个资料(有需要上述资料的同学,私信我即可领取)。 

除此之外,多说一点的是:个人建议先补好C语言基础知识和数据结构的基础知识再来学习RTOS。因为RTOS里边存在大量的指针高阶用法,如函数指针/指针函数/二维指针等;以及数据结构,最典型的就是链表,Freertos里边还涉及到环形链表。因此,先将这些基础打牢固,再来学RTOS的时候就更加水到渠成一些。

二、RTOS学习路线

0基础的同学建议按照以下步骤走:
1、学习任务基础知识:先打开书《操作系统》 (百度也行)了解一下什么是操作系统?为什么要用操作系统?个人习惯是再用一个东西之前, 需要了解为什么。

其次打开《 FreeRTOS开发手册》以及《freertos内核使用指南》,学习任务的基础知识。包括什么是任务、任务的几种状态、任务优先级、任务堆栈、TCB及简单了解任务的调度等。

2、学习移植RTOS:还是打开Freertos开发手册,跟着教程一步一步移植操作系统。这里的移植不仅是让你把源码移植进工程里,还需要你明白如何进行相应的中端配置、移植文件的修改、 以及内核裁剪的系统配置(可能到这一步的时候,有些东西你不知道为什么,先不用管,后边学了原理再来看)。 

3、学习简单的rtos使用:打开Freertos内核使用指南或者freertos开发手册,学习rtos中API 的参数、作用、以及使用示例。这里的API至少了解任务的创建、删除、挂起、延时(至少知道
延时的时候会发生任务调度)、信号量等。上述目的就是让你先学会用,用的过程中就会自然而然的出现问题,接下来就知道该去探究原理了。

4、学习rtos原理:打开《CM3权威指南》,学习以下重点知识即可:第二章、第三章(寄存器组、control寄存器等)、第7章(SvC和PendSV重点、其他的也是重点)、第8章(Systick定时器是重点,其他的也是重点)、 第9章主要了解中断入栈时push进哪些寄存器、 取向量、更新寄存器、异常返回等内容即可。 

4.1、了解完CM3架构的基础知识后,打开《嵌入式实时操作系统原理及应用》,主要了解任务调度算法,学习任务到底是如何切换的,需深刻理解任务切换实际上为堆栈指针切换这句话。

ps:笔者在小红书发布了freertos学习合集,也可以配合起来看看,其中发布了任务切换原理的视频讲解。

5、看RTOS的源码:此时之前学习的c基础和数据结构基础就可以派上用场了。看源码可以直接在工程里打开代码看,也可以打开《FreeRTOS开发手册》,里边也有相关源码的解析。建议看源码的顺序按照以下来:创建任务函数--开启多任务调度函数(看一下任务切换原理的代码怎么实现的)--队列--信号量等(也可以配合freertos内核使用指南)
接下来需要重点看的是systick中断函数以及
delay函数源码,主要了解Systick怎么作为rtos 时钟使用的,delay函数怎么实现任务切换的, 任务如何从阻塞态到就绪态的、相对延时和绝对延时的区别等。

ps:到这一步也可以选择做一些rtos项目帮助理解各个API的用法、原理。要做到分析代码的执行时序是怎样的。

6、学习rtos 的内存管理以及空闲任务: 
FreertoS开发手册就有详细介绍,需要了解什么是内存碎片,各种内存管理方法的优缺点是什么、空闲任务的作用,此处也要去看源码怎么实现的。

7、进阶:继续学习FreeRTOS的软件定时器、 低功耗Tickless模式及时间标志组等。了解清楚原理,如何使用,建议也分析一下源码,看如何实现的。

最后,本次分享就到这里,上述只是笔者个人的一些建议,希望能给大家带来一定的参考。找不到上述资料的可私信我领取。#嵌入式软件开发# #找工作# #rtos# #嵌入式学习路线# #rtos学习路线#
全部评论
任务切换是核心
点赞 回复 分享
发布于 昨天 16:07 陕西
看来老哥是rtos高手啊
点赞 回复 分享
发布于 11-13 18:45 陕西

相关推荐

一、前言 以下为个人建议,仅供参考。当你还没有收到面试通知的时候,你就应该先做好准备,多模拟几次面试,找人一对一演练也好;对着镜子自己练习也好,一定要去做这个动作,而不是靠想。因为想要临场超常发挥,那还是想想算了。那应该提前准备一些什么呢?其实就是预测面试官的问题。一般来讲,嵌入式软件面试的流程为自我介绍、根据简历中个人技能及项目进行提问、八股文、反问等,接下来分别说一下各个环节该如何应对。二、自我介绍这一环节是大多数面试的开场白(也不是所有面试官都会让你做自我介绍,但概率极低!)。面试官需要在你进行自我介绍的过程中,再次扫一下你的简历(虽然面试官在对你进行面试之前,已经对你简历进行过分析了)。因此,在这种情况下,你的自我介绍不要再按照简历上的说,更需要突出一些简历上没有的信息或者是与你投的岗位匹配相关度高的信息。个人建议是:先介绍自己的名字➕学校专业;其次、说你与该公司行业、该岗位的匹配度(因此去面试之前需要查看公司简介、了解公司是做什么的)。在该过程中,可以引出自己做的哪些项目与岗位jd是匹配的;最后、说一下求职意向,一定要表现出你就是想来这个岗位。举例:尊敬的面试官,您好!我叫xxx,来自xx大学xx专业,今天来应聘的岗位是嵌入式软件开发。我觉得个人与该岗位的匹配度表现在以下方面………首先是xxx,其次是xxx(一定要往岗位jd上靠拢)。最后,贵公司招聘的该岗位要求里边一些技能点和我的经历是比较匹配的,另外我对xxx方向很感兴趣,该岗位与我的职业方向也是比较吻合的,因此我投递了该岗位。希望贵公司能给我这个工作机会。以上就是我的自我介绍,谢谢。三、专业技能及项目问答这一环节主要是针对你简历上的项目以及专业技能进行提问,以验证你是不是水货!因此,你需要对自己简历上的专业技能、项目经历部分上的每一个字负责!一般来讲,会让你介绍一下你的项目,或者是问你项目中的某个功能怎么实现的,驱动代码怎么写(要能口述出来,所以不建议用cube生成代码,否则连驱动都不知道怎么写)等等。在这个过程中,可能会问到你不会的问题。这个时候不要紧张,更不要不懂装懂,老老实实说你不会,然后说想试着回答一下(尽量答一些相关的点),这样也是很加分的。不要一上来就语无伦次,或者是胡编乱造。遇上不会的很正常,毕竟你不是神,关键是别扣分!三、八股文这一环节快接近尾声了,面试官想要考察一下你的基础知识。一般来讲,包括c语言知识、stm32、内核架构、rtos等。这种八股文一般来讲都是有固定答案的。所以,你在去面试的前一天,你需要好好的回顾、准确来说是背诵这些知识!一定要去背!多背,记在脑子里。并且,个人建议自己整理一个八股文合集(你也不想每次面试之前还要东翻翻,西翻翻吧),这样既能方便记忆,又能节约之后面试的准备时间,非常方便。当然,如果你懒得整理,笔者已经整理好了一份嵌入式软件开发八股文合集,有需要的同学可以私信领取即可。四、其他及反问环节这里的其他指的是一些非技术上的,但又能影响你面试结果的问题。比如说,请你说一下对我们公司的了解?你生活中的优点和缺点?你的职业规划是什么?你能给公司带来什么价值?比较感兴趣的工作内容是什么?如何开展工作等等。上面我例举的都是常见的问题,请好好准备。此外,如果面大厂的话,一般来讲手撕是跑不了的,两道题。因此,需要你自己多花时间刷力扣、牛客等,基础和中等的coding题就足够。最后,来到最后一个环节:反问。这个环节不管你有没有问题,麻烦你一定要问好吗?你不问,那offer也不会问你。通常来讲,反问环节可问以下问题(举例,仅供参考):问进来以后会做什么业务产品?会在哪个部门?部门架构?承担的工作内容是什么?等等…最后的最后,本次分享内容就到这里,感谢观看!如果你能看到这里,相信你面试会通过的,祝大家秋招/春招上岸!如果有需要《嵌入式软件开发八股文合集》、个人开源的mcu➕rtos项目等资料,请私信笔者领取即可
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务