当前位置: 首页 > news >正文

【经验总结】10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?(文末赠书5本)

【经验总结】一位近10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?

RT-Thread绝对可以称得上国内优秀且排名靠前的操作系统,在嵌入式IoT领域一直享有盛名。近些年,物联网产业的大热,更是直接将RT-Thread这款优秀的操作系统推入荣誉殿堂,越来越多的开发者涌入基于RT-Thread的开发大军,而如何快速学习和使用RT-Thread将会是一个刚需难题。

本文以一个近10年的嵌入式开发老兵的视角,跟大家一起聊一聊这个话题,希望对大家有所帮助和启发。

文章目录

  • 1 写在前面
  • 2 聊聊情怀
  • 3 老手支招
    • 3.1 关于学习基础的问题
    • 3.2 关于学习方向的问题
    • 3.3 关于官方文档的问题
    • 3.4 关于解答问题的问题
    • 3.5 关于开发板的问题
    • 3.6 关于良师益友的问题
    • 3.7 关于项目实战的问题
    • 3.8 关于学习进阶的问题
  • 4 友情推荐
  • 5 文末福利

1 写在前面

RT-Thread 是一个集实时操作系统(RTOS)内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成, 具备一个 IoT OS 平台所需的所有关键组件,拥有一个国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过 20亿 台,成为国人自主开发、国内最成熟稳定和装机量最大的开源 RTOS。

它的优秀,不单单体现在 文字 上,还体现在 数字 上,以下展示数据来源于,RT-Thread官网:

image-20230227170425888

如此优秀的操作系统软件,你确认不来学习一下吗?

2 聊聊情怀

熟悉我的朋友,大概都知道,我跟RT-Thread还是蛮有缘的,曾经我写过一篇短文,介绍我与RT-Thread的故事,

【我与RT-Thread的故事】我想和你深发展

该文很荣幸地登上了 2021年开发者大会专刊的故事会栏目,想必有些小伙伴在书刊上已经看过这篇文章了。

在2022年里,我开始深耕 RT-Thread技术社区,我的个人账户是 recan,期间,我非常积极回答线上小伙伴提的各种问题,我自己也基本保持每个月输出至少2篇优秀技术原创文章。同年6月,我还担任了RT-Thread全球开发者大会的线上直播讲师,包括国内专场和海外专场,收获了掌声的同时,我也收获了各种宝贵经历,最幸运的是还收获了RT-Thread创始人熊大亲笔签名的 讲师证书

凭借2022年的优秀表现,我被授予了 2022年度RT-Thread技术社区优秀布道者 的荣誉称号,这真的是一个很激励我前行的荣誉。我会以此为新的起点,在接下来的一年里,我会更加以无上的使命感去推广RT-Thread,让更加优秀的开发者加入到RT-Thread的开发阵营。

这是我的责任,也是我的义务,更是我的荣幸。作为布道者,我很乐意大家与我交流RT-Thread技术,欢迎大家戳 我主页,我们一起聊聊!

3 老手支招

扯了这么多有的没的,是时候放点大招了。

我从13年毕业出来,从事嵌入式行业接近10年了,从最终的嵌入式Linux,然后FreeRTOS,再到现在的RT-Thread,可以说每一项操作系统技术,我都有比较深的涉猎,也成功在工作项目中得到验证,有幸做了一些成绩,也很高兴成为了公司里的TOP5%。

这两年,我也频繁地在技术自媒体上发声,致力于打造 架构师李肯 这个技术IP,期间遇到了很多困难和阻碍,也一度想要放弃,但与此同时又收到了很多肯定和鼓励。遵循内心的渴望,我还是希望能把这个IP继续做下去,如果能帮助到更多的人,那就再好不过了。

就在我致力于打造 架构师李肯](http://yyds.recan-li.cn) 这个技术IP的时候,我遇到了非常多嵌入式入行的朋友,其中不乏很多想加入RT-Thread开发者阵营的朋友,他们经常问到问到一个问题就是:你是如何学习和使用RT-Thread的?

说实话,每当我回答起这个问题,我总是左想想右想想,然后给出几个不成文的建议。所以,我想趁着这次机会,好好梳理一下,我是如何学习和使用RT-Thread的。

下面,我将以一个嵌入式经验老手的角度,从几个问题角度,给出一些切实可行的建议和方法,但是需要补充说明的就是,本文提交的方法并不一定适合所有开发者,请大家酌情甄别。择其善者而从之,其不善者而改之!

3.1 关于学习基础的问题

这个问题罗列在第一位,是因为我遇到太多这样的朋友了。

一上来就问,我是零基础小白,能转行学嵌入式吗?我这样啥都不懂的,能学好RT-Thread吗?

在这里,我再次表达一下我的观点,学习基础不是重点,也不是难点;稍微有些电子电路基础,加一些C语言编程经验的,基本就可以应付嵌入式的入门了。

另一方面,很重要的一点,那就是兴趣。这个东西有些虚,但是直接决定了当你遇到困难的时候,你是否能坚持得下去。毕竟,嵌入式这个玩意,说好玩也挺好玩的,说枯燥也是挺枯燥的,整天对着一堆设备,bug一筹莫展的时候,头发就开始往下掉了。

当然,回到RT-Thread学习这边,如果你有主修过操作系统原理、计算机基础等相关专业课程,那么理解起RT-Thread会更容易写。

3.2 关于学习方向的问题

大体上,嵌入式软件其实分为两大方向:应用开发和底层驱动开发。

应用开发:偏向于业务逻辑开发,需要掌握的是系统API的使用细节,而对实现细节可能不那么讲究,但是如果能更懂底层细节,往往能够写出更加优秀的应用代码。

底层驱动开发:这个工作是要跟硬件设备以及操作系统强交互的,需要掌握一定的硬件知识,同时对系统的驱动框架也要了然于胸,否则做嵌入式驱动开发会非常吃力。当然,与工作难度相对应的是,工资往往也会更高一些。

我把这个问题单独拎出来说,主要目的就是让大家明白,应用开发和驱动开发是两个截然不同的开发方向,对开发者的能力要求也不一样,提醒大家入门的时候一定要做好选择。

对于基于RT-Thread的开发也是应用,应用开发和驱动开发的能力矩阵要求是不一样的;一般做底层驱动开发的转应用开发会相对容易些,而反向则比较难。所以大家一开始的选择很重要。

3.3 关于官方文档的问题

总的来说,RT-Thread的官方文档已经是非常完备的,它有一个专门的网站,大家可以戳 这里。

基本上,在这里你都可以找到相关的参考资料,包括内核是怎么设计的、应用接口怎么调用、驱动框架是怎么样的、有哪些开发工具可以参考;基本上你上去找一找这些问题都可以找到答案。

另外一点比较重要的是,文档是全中文模式,这对于国内的开发者来说,是一个比较好的体验,这也很大程度地降低了开发者的理解难度,提升开发者学习和了解RT-Thread的积极性。

3.4 关于解答问题的问题

关于提交你开发过程中遇到的问题,我首推 RT-Thread的官方技术社区,在这里有很多优秀的开发者聚集在一块,其中不乏很多 业内的技术专家,基本上你在这里发表你的问题,应该很快就能得到小伙伴的响应。

整个技术社区还是比较活跃的,我个人也活跃在社区中,也经常给社区的问题答疑,也欢迎大家在社区找我提问。

不过,需要说明的是,有些时候并不是说问题一定能够得到解决,但是可能别人的一个点评讨论,一下子就把你解决问题的思路打开了,问题也就迎刃而解了。

在这里,我想介绍一下,如何高效地提问题,这是很多初阶开发者都需要学习的。

3.5 关于开发板的问题

这个问题也是很多小伙伴问到的一个问题,非常关心开发板的购买。

学习RT-Thread有一个比较好的地方就是,它可以不依赖于开发板环境就能上手。

在官方提供的代码仓库中,我们可以在BSP目录下找到类似 QEMU- 开头的BSP,这些BSP就是基于QEMU技术模拟出来的一个开发环境,有了它,你就可以直接在PC电脑上调试RT-Thread了,这不但大大提升了RT-Thread编程验证思路的速度,同时也降低了学习RT-Thread的硬件门槛。

感兴趣的小伙伴,可以戳这里了解一下 这种开发模式。

3.6 关于良师益友的问题

俗话说:“一个人走得更快,而一群人将走得更远。”

在学习RT-Thread的道路上,我希望大家能找到志同道合的伙伴,一起升级打怪,一起进阶成长;遇到问题的时候,大家一起讨论,一起研究问题的根源;可能一个不经意的想法,就帮你解决了一个折腾几天的难题。这就是良师益友的重要性。

那么,如何去寻找自己的良师益友呢?个人觉得可以从技术论坛、技术博客、技术公号中去寻找答案,尽量多关注你同领域的优秀博主,他们会有很多的同行交流群,试着去融入他们,制造几乎与他们产生交集,慢慢混熟了,技术上的良师益友也就顺理成章了。

如果你还没有找到自己的良师益友,欢迎找我来撩,或许我能成为你的良师益友也说不定。

3.7 关于项目实战的问题

纸上得来终觉浅,绝知此事要躬行!

在学习RT-Thread的道路上,更应该如此。看一百遍教程,读一百遍demo代码,都不及自己动手敲一遍代码,然后在实际的开发环境(开发板或QEMU模拟环境)中跑一跑,调一调;这样既能锻炼动手能力,又能加深学习内容的掌握。

很多人开始疑问,我的正常工作内容还未涉及RT-Thread相关的开发,我该如何找到类似的实战项目呢?

这个,你就要留意各路业余大赛了,比如电子发烧友论坛,比如官方的RT-Thread技术论坛,他们都会不定期地举办一些设计大赛,大赛中会比较明确地要求使用RT-Thread操作系统。

那么对于这种大赛,你就可以踊跃地报名参加,不但可以收获开发板,还有实践一个实战项目,更有可能还能收获一堆志同道合的技术朋友,何乐而不为呢?

3.8 关于学习进阶的问题

学习RT-Thread的高阶状态,我认为是参与开源社区的建设,一个小小问题的回答,甚至于一个小小的问题点赞,都能够很好地把这种技术开源的精神传承下去。

如果你是更积极的开发小伙伴,哪怕技术不是那么精湛,你也可以尝试提交一次PR,向官方仓库提交你的优秀代码,让更多的人知道你这么优秀。

优秀的开发者总是有一样的开发习惯,跟优秀的社区建设者一起【工作】,这本身就是一件很令人成长的事情,可以尝试加入我们吧。


总结一下:

上面提及的各点,其实远不是具体的可操作细节,我可能称之为 方法论 的东西,掌握了方法论的东西,无论你学习哪个开源项目都是一样的理儿。所以呢,关于具体的技术细节学习,欢迎大家找我来聊。

4 友情推荐

作为RT-Thread的忠实粉丝,我时刻关注着RT-Thread的消息,根据可靠消息,一本由RT-Thread官方开发人员撰写的、堪称最权威的RT-Thread的教科书,《RT-Thread设备驱动开发指南》横空出世。

它的出现,直接轰炸了我的各种嵌入式技术群,非常多的小伙伴都想第一时间一睹它的风采。

在这里,我以RT-Thread开发者的身份正式向大家推荐这一本巨作。


近年来国内芯片产业和物联网产业的快速崛起,行业发展迫切需要更多人才,尤其需要掌握嵌入式操作系统等底层技术的人才。随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动开发的需求越来越强烈,他们迫切地希望有一本可以指导他们在RT-Thread上开发驱动的指南。

为了解决开发者的燃眉之急,《RT-Thread设备驱动开发指南》来了!希望帮助RT-Thread的开发者掌握驱动开发的知识点,让开发者能够更简单、更方便地开发驱动,加速产品上市,让RT-Thread赋能更多行业,真正做到“积识成睿,慧泽百川”。

[外链图片转存中...(img-Ht2aBVCx-1677500495326)]![图

  • 读者对象
  1. 熟悉RT-Thread并想在其上开发设备驱动的人员
  2. 嵌入式软硬件工程师、电子工程师、物联网开发工程师
  3. 高等院校的计算机、电子、自动化、通信相关专业师生
  4. 其他对嵌入式操作系统感兴趣的人员
  • 如何阅读本书

本书要求读者具备RT-Thread基础知识,因此建议大家先学习《嵌入式实时操作系统:RT-Thread设计与实现》,再学习本书内容。使用过RT-Thread上的设备框架的读者的阅读体验会更佳。本书的每章都有配套示例代码,这些代码大多是仅供理解上下文参考的,不能真正运行,建议读者对照具体bsp目录下已有的驱动,并结合本书进行学习。

本书内容分为三篇:基础篇、进阶篇与高级篇。

基础篇(第1~11章) 第1章概述RT-Thread与设备框架;第2~11章介绍一些常用的设备驱动框架,包括PIN、I2C、SPI等,适合刚接触驱动开发的读者阅读。

进阶篇(第12~20章) 介绍稍复杂一些的外设驱动,如SDIO、触摸、显示、传感器、加解密设备等。

高级篇(第21~27章) 介绍一些复杂的驱动,如网络、音频、USBD(H)、CAN等,开发此类设备驱动要求开发者比较熟悉相应的外设协议。

本书更像是一本工具书,读者不需要一章一章地从头读到尾,读完前面几章内容,熟悉了驱动开发的基本流程之后,就可以根据自己的需要,选择对应的章节学习。

  • 配套软件

本书是基于RT-Thread 4.1.0 编写的,读者在跟随本书学习驱动开发的时候,也需要选择对应的源码版本。

  • 大神推荐

在这里插入图片描述

以上推荐材料来源说明

本文来源:IT阅读排行榜,图片来源:原创

责任编辑:王莹,部门领导:卢志坚

发布人:尹文敏

5 文末福利

欢迎大家来参加我的社区活动,赠书《RT-Thread设备驱动开发指南》5本,活动的详细说明戳这里 !!!

相关文章:

【经验总结】10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?(文末赠书5本)

【经验总结】一位近10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的? RT-Thread绝对可以称得上国内优秀且排名靠前的操作系统,在嵌入式IoT领域一直享有盛名。近些年,物联网产业的大热,更是直接将RT-Thread这…...

人大金仓和达梦的空间数据能力对比

一、总得来说: 人大金仓底层更解决于pg数据库, 人大金仓的空间能力基于postgis能力来实现,能力挺强大的. 细节上人大金仓的架构上也对空间的支持框架做的比达梦更加完善。例如数据库的集群能力,并行计算能力,空间数据…...

探析集团企业 1+N 模式,重新定义集团型CRM

目录 一、客户经营、运营监控 二、流程驱动、业务成长 三、规则规范 业务治理 什么是集团型CRM【1N】?本文中我们可以把集团看作为“1”,其他分公司或组织看作为“N”。本篇我们主要分析集团CRM业务定位。 我们从企业集团总部的职能定位确定集团CRM…...

卡特兰数

文章目录1、简介1.1 何为卡特兰数1.2 卡特兰数的通项公式2、应用2.1 题目1:括号合法题目描述思路分析2.2 题目2:进出栈的方式2.2.1 题目描述2.2.2 思路分析2.3 题目3:合法的序列2.3.1 题目描述2.3.2 思路分析2.3.3 代码实现2.4 题目4&#xf…...

分布式任务处理

分布式任务处理 1. 什么是分布式任务调度 视频上传成功需要对视频的格式进行处理,如何用Java程序对视频进行处理呢?这里有一个关键的需求就是当视频比较多的时候我们如何可以高效处理。 如何去高效处理一批任务呢? 1、多线程 多线程是充…...

Linux 命令复习

常用命令 1、目录操作 cd 切换目录 cd / 切换到根目录 cd ~ 回到个人用户的主目录 ls 查看当前目录下所有文件的详细信息 list的意思 ll 查看当前目录下所有文件的详细信息 pwd 显示当前目录的全路径 . …...

leetcode 困难 —— 天际线问题(优先队列)

(思路感觉挺明显的,就是一些特殊情况得考虑清楚) 题目: 城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回 由这些建筑物形成的 天际线 。 每个建筑物的几何信息…...

离散数学笔记_第一章:逻辑和证明(2 )

1.2 命题逻辑的应用1.2.1 语句翻译 1.2.2 系统规范说明 1.2.3 布尔搜索 1.2.4 逻辑谜题泥巴孩子谜题骑士和流氓(考研逻辑题)1.1.2.5 逻辑电路1.2.1 语句翻译 🐳为啥要翻译语句? ➡因语言常常有二义性(有歧义&#x…...

MFCC语音特征值提取算法

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…...

TencentOS3.1编译安装redis6.2.5

下载地址:https://redis.io/download 最近版为7.0.8,本次安装的是6.2.5 软件包解包并进入目录。 redis是c语言编写的,编译需要gcc,按网上资料说默认安装的gcc版本过低(可能是4.8.5),使用rpm …...

AI顶会accepted papers list

为方便相关paper调研,对相关顶会文章列表和下载地址汇总,会议包括:AAAI、ACL、IJCAI、ICLR、COLING、SIGIR、WSDM、WWW、ICML、KDD、NeurIPS、CVPR、ECCV、ACM MM 2023 Accepted papers list 更新于:(2022.11.24&…...

IOS逆向之frida安装

首先手机要越狱,这个就不说了,博主就是咸鱼搞了个160的苹果6, 自己刷到苹果6支持最新的12.5.7版本后越狱; 谁让他低版本,不支持 CrackerXI砸壳呢,当时你要是使用 frida-ios-dump 也是可以的; …...

《金山区提信心扩需求稳增长促发展行动方案》的通知

金发改规〔2023〕1号 各镇政府、街道办事处、园区管委会,区政府各部门、各直属单位: 《金山区提信心扩需求稳增长促发展行动方案》已经区委、区政府同意,现印发给你们,请认真按照执行。 附件:金山区提信心扩需求稳增…...

【Redis】Java客户端JedisSpringDataRedis入门(三)

🚗Redis学习第三站~ 🚩起始站:【Redis】概述&环境搭建(一) 🚩本文已收录至专栏:数据库学习之旅 👍希望您能有所收获 在上一篇中我们学习了Redis常见命令的使用,显然,我们不可能一…...

挑选销售自动化工具应该关注什么功能?

销售自动化可以极大地提高你的生产力和效率,每周都为你节省时间。这样,你就可以把更多的时间用于完成交易,而减少用于行政任务的时间。市面上的销售自动化工具有很多,作为一般经验法则,以下是销售自动化工具中需要寻找…...

thread.join 是干什么的?原理是什么?

Thread.join 加了join,表示join的线程的修改对于join之外的代码是可见的。 代码示例: public class JoinDemo {private static int i 1000;public static void main(String[] args) {new Thread(()->{i 3000;}).start();System.out.println("…...

论文阅读 | Cross-Attention Transformer for Video Interpolation

前言:ACCV2022wrokshop用transformer做插帧的文章,q,kv,来自不同的图像 代码:【here】 Cross-Attention Transformer for Video Interpolation 引言 传统的插帧方法多用光流,但是光流的局限性在于 第一&…...

【C++修炼之路】22.哈希

每一个不曾起舞的日子都是对生命的辜负 哈希一.哈希概念及性质1.1 哈希概念1.2 哈希冲突1.3 哈希函数二.哈希冲突解决2.1 闭散列/开放定址法2.2 开散列/哈希桶三.开放定址法代码3.1 插入Insert3.2 查找Find3.3 删除Erase3.4 映射的改良&完整代码四.开散列代码4.1 插入Inser…...

HashMap原理(一):哈希函数的设计

目录导航哈希函数的作用与本质哈希函数设计哈希表初始容量的校正哈希表容量为2的整数次幂的缺陷及解决办法注:为了简化代码,提高语义,本文将HashMap很多核心代码抽出并根据代码含义为代码片段取名,完全是为了方便读者理解。哈希函…...

06--WXS 脚本

1、简介WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML ,可以构建出页面的结构。 注意事项WXS 不依赖于运行时的基础库版本,可以在所有版本的小程序中运行。WXS 与 JavaScript 是不同的语言,有自己的…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...