单片机从小菜鸡到老司机

原创 科岩成果 2021-08-16 08:59
点击「科岩成果」关注,选择「设为星标不迷路

大家好,我是科岩。

首先跟大家说一声抱歉,大家久等的嵌入式学习路径,今天终于来了。

经常有人问我,嵌入式该怎么入门,怎么学习,怎么精通,怎么成为专家。我前思后想掏心掏肺,花了大概2周的时间,写了这样的一个成长路径。

注意!本文又干又长,如果此时你无法抽出大约10分钟时间,建议看个开头,然后点个关注、收藏之后再(也不)看。

依然是用一个脑图呈现给大家,文中会仔细讲解脑图中全部内容。

如果想要一份高清版本,保存到电脑或手机里认真学习(灰),可以关注公众号「科岩成果」后,回复「单片机」下载。

图片和脑图的源文件都有提供。

闲话少说,正式接客。

首先如图,嵌入式学习路径之单片机。

为什么单说单片机呢,因为我觉得嵌入式是一个比较笼统的概念,可以按处理器性能大致分成两类。

性能低的比如51、stm32、arduino,这类设备一般用作开发比较便宜的产品,比如手环、插座、牙刷、小型玩具什么的,这样的芯片资源有限,没办法运行linux操作系统;

还有一类是高性能的,像我们手机那种处理器,能运行linux、安卓操作系统的,这类芯片一般用作开发比较贵的产品,像智能音箱、自动售货机、摄像头、路由器等等。

这两种性能不同的处理器都是嵌入式,但需要掌握的技术是有一定区别的,这期就先讲低性能的,单片机的成长路径,如果看完觉得不错记得关注,后面会再写一篇嵌入式Linux的成长路径。

依然是熟悉的4个阶段,这是科岩独创学习4阶段,小菜鸡、入门鸡、进阶机、老司机,也就是从入门到精通(入土)的几个阶段。

看完欢迎留言告诉我你在什么阶段。

小菜鸡

先从小菜鸡开始,小菜鸡就是一个纯小白,就是你茫然无知什么都不懂。需要学习的有三个部分,基础概念、C语言基础、单片机基础。

如图,基础概念内容如下:

你要知道单片机是什么;要知道MCU、RAM、ROM、IO引脚、中断、定时器这些概念指什么;另外,常见单片机有8位、16位和32位的。

还要对电路板有概念,什么是原理图,什么是PCB,这些硬件概念在小菜鸡阶段知道就行。

再然后是软件,其实也就是运行在单片机中的程序,我们也把它叫做固件。

有了硬件和软件,就要把软件安装到硬件中执行,这个过程叫做编译、下载、运行,一般会用到Keil、IAR、gcc等等工具。

我们人生中烧录到单片机的第一个程序一般是什么呢?

就是点灯,点灯其实就是嵌入式工程师的hello world,一般电路板上都有led灯,LED灯点亮了,就说明这块板子的硬件,包括电源、处理器、引脚等等是没有问题的,还说明软件的烧录、运行等一系列的步骤是没有问题的。

板子是好的,才有后面的工作。

所以作为嵌入式工程师,一般也自称为点灯工程师,>> 大家好我是点灯工程师,科岩 >_<

最后一点,就是知道什么是嵌入式工程师,一般行业内称呼一名嵌入式工程师都是某某工。

比如你姓张,大家就会称你为张公,姓李呢,就会叫你李公,像我呢,我姓老,不知道此刻看文章的你姓什么嘞?

工程师上班一般都在做什么呢?就是在画板子,写程序,调板子,烧板子。

你烧过板子么,反正我是烧过,特别好玩,直接冒烟,把我们上班的大楼都给整停电了,是不是很有趣。

嵌入式工程师的标准穿搭:黑框眼镜,格子衫,黑色或者灰色的双肩包。非常典型,工作经验一般可以通过发际线的高低做判断。

对单片机程序有概念之后,就要学习C语言了。

这里写了三点,参考c语言路径图;达到小菜鸡水平就可以上手单片机;最好是能达到进阶机。

这是什么意思呢,之前我做过一个C语言的学习路径图,也是分成了4个阶段。

小菜鸡是基础就是学C语言的语法;入门鸡算是培养兴趣可学可不学;进阶机比较高级,数据结构、算法、网络、linux都该学了,最好能到这个水平;老司机就不强求了,可以后面再学。

我就不详细展开了,这个如果想详细的去看的话,可以看下面这篇文章,如果想要脑图也可以到「科岩成果」下载。

C语言从小菜鸡到老司机

有了C语言基础,接下来就是一些单片机的基础了。

首先要选一款学习资料丰富的mcu,建议直接选STM32,资料非常丰富,如果有任何问题查资料基本都能找到答案,对初学者来说非常友好

接着就要写代码了,我们的程序一般是通过轮询,或者定时器,或者中断这三种方式来进行触发,要学会编写这三种方式的代码。

接下来是外设,单片机存在的意义是什么呢?

其实就是通过外设,可能是键盘也可能是传感器,这种输入类型的外设,输入一定的数据,进行处理再通过输出类型的外设,可能是显示屏,输出一定的结果。

在小菜鸡阶段要学习使用各种常见的外设,LED灯、蜂鸣器、键盘还有IO引脚,这都是最基础的。

还要学习这3种很常见的串行口,uart、spi、i2c,要掌握通信协议的设计和编解码的处理,很多传感器就是通过固定的协议与单片机通信,另外单片机再和其他单片机、PC机等设备通信时都会用到协议编解码。

接着要学习一些调试手段,比如说Keil和IAR软件的调试功能。都挺简单的,如果程序有问题,可以用调试手段来查查内存、某个变量的值,排查问题。

小菜鸡最后,要做几个简单的实践。

我列出来两个,一个是测距,可以用红外或者是超声传感器来做。

另外一个实践是,可以读一些传感器的数据,比如温湿度、人体检测,把数据显示在屏幕上。

小菜鸡阶段结束后,你就可以做些简单的小项目。菜鸡学习时间呢,大概两周左右就可以了。

入门鸡

接下来就来到了入门鸡阶段,有这么几个部分:单片机高级部分,学习电路板知识,再做几个复杂点的实践小项目。

先看单片机的高级,包括这些内容:

写代码要有一定的规范,包括缩进、注释、变量和函数的命名等等,要按规矩写。

入门鸡阶段,项目中要用一些基础的数据结构了,不要全局变量和flag满天飞;还要学些基础的算法,主要的就是排序和查找。

接着要会用状态机编写稍复杂的程序,小菜鸡学会的轮询、定时器、中断只能做些简单的程序,复杂点程序就要有结构进行控制了,状态机是比较好的一种代码框架,要理解状态机的原理、编写的手法。

再复杂点的程序,就得上操作系统了,学会使用嵌入式实时操作系统,也就是RTOS,要了解它们的任务、锁、信号量和消息队列是怎么使用的。

如果做和物联网相关的项目,就要编写网络相关的程序,得会写socket程序,调用socket接口收发tcp/udp/mqtt的数据。

单片机联网一般会用到无线模块,可以通过串口透传或者AT指令控制模块,比如Wifi、蓝牙、ZigBee等等传输数据。

很多项目中的单片机是需要用电池的,电池容量有限,所以要学会编写低功耗的程序,比如控制单片机睡眠、停机、待机,还有低功耗如何测试、有哪些指标衡量功耗的高低,都要掌握。

第二部分,要学习看电路板了。

得能看懂简单的原理图和PCB就行。

最后,入门鸡的实践:

我建议做一个物联网设备,连接某个云平台。

阿里云、腾讯云、百度云,都可以连,他们都有物联网的接入平台,接入后,设备要与平台 APP打通。

比如做一个联网的温湿度采集器,可以在APP上看到设备从传感器读取数据,也可以做一个联网的智能插座或者智能灯,通过APP来控制它的开关。

入门鸡要花一定的时间,可能是你工作个一年后到三年之间的这样的一个状态,会灵活的使用以上的这些软件接口与硬件器件,时间久了就可以编写复杂的程序,做复杂的项目了。

进阶机

接下来是进阶机阶段,这个阶段要学习的东西不但变多了,还更深入了。

我把进阶机的学习范围分成2大部分,一部分叫“通用内功”,就是几乎哪个行业都通用的东西,学会内功,才能以不变应万变;另一部分叫“独门绝技”,指的是某一个细分领域的专业技术知识,学会了至少不用担心失业。

咱们先看通用内功,首先是最上层,嵌入式实时操作系统源码的学习,我建议学习FreeRTOS、RT-Thread、μC/OS这三个比较常用的嵌入式系统。

入门鸡阶段是会用RTOS,进阶机就要学习任务、锁、信号量怎么实现了。

接下来是网络源代码的学习,同样的,在入门鸡阶段是会用网络接口,进阶机就要学习如何实现了。

我们可以通过lwip这样的轻型协议栈源码来学习TCP或者UDP,mqtt是物联网传输的协议,HTTP是WEB的常用协议,图中这几个源码都是可以直接学习的。

然后是模块的二次开发,模块二次开发指的是基于无线模块直接做编码,而不是通过MCU进行控制。

这样可以减少一颗MCU主控芯片的使用,节约硬件成本,毕竟咱们硬件行业成本第一啊!

接着可以学习对代码性能进行优化,我列出了4种方式,这些都可以了解,有的项目有特殊的需求,咱们就要知道怎么优化。

下面是代码的可移植性,其实也是按照一定的规范编写代码,我也是列出了4点。

如果写代码时习惯考虑代码的可移植性,那你写的代码也能很容易的移植到不同平台。有时我们做一款产品,产品升级了或者更换了硬件芯片,之前代码移植性好的话,可以很快替换成新平台。

然后是编译和链接的脚本,要学习C语言代码是如何编译成机器指令,机器指令又是如何在芯片中进行组织的。

代码编译完会进行链接,要指定加载地址、指定代码段、数据段地址,这个也是有些特殊的产品需要人工设置。

除了C语言,还要掌握几种其他编程语言,Python、lua、shell都建议学学。

学会了C语言,这些语言其实都不怎么用学,看看语法就能上手写,我们经常用这类语言处理有规律的文本、处理二进制固件,方便快捷。

后面三个是学习底层知识,首先要学会看芯片手册,通过芯片手册能学到太多东西了。

在工作的过程中会遇到各种各样的芯片,可能会有一些比较少见的特殊芯片,没有封装成C语言的库,或者某些不常用的功能芯片提供的库没有封装,这时你就要通过操作寄存器直接控制它们。

芯片手册第一次看肯定看不懂,这个也需要花时间,时间久了,看得多了自然就懂了。

而且每个芯片的芯片手册套路、结构都差不多,看懂一个,基本其他也都懂了,所以大家不用担心。

再往下一层就是汇编指令集,单片机arm的体系结构居多,应当学一下arm的指令集,比如说Cortex M系列的核,它有37个寄存器,要了解它的一些常见汇编指令。能看懂,能够编写简单的程序就可以了。

最后再下一层就是电子学了,要学模电和数电的知识,电压电流,电阻电容,半导体二极管等等,都要知道它们是干嘛的,接着门电路、CPU、存储器的电路是怎么设计的,知道理论就可以了。

上面这些知识都是内功心法,无论做哪个行业,只要和硬件打交道,都能用得上,是咱吃饭的家把什。

下面再看看独门绝技都有啥,独门绝技就是能让咱们吃的爽,吃的久。

首先是通信协议栈的开发,比如PHY层、MAC层、空口各层协议的开发,像Wifi、4G、5G都有类似的开发需求、岗位,现在5G这么火,如果你能参与开发一个5G模组,那就非常厉害了!

下面是算法,算法这个分支也是一个比较专业性的分支,我列出了一些咱们单片机上可以跑的算法,滤波、姿态,惯导,PID,还有slam算法,有些是做可穿戴设备需要的,有些是无人机、无人车需要。

做算法是有很高门槛的,基本都研究生起步,如果你没有读研究生,或者读了但对数学没兴趣,建议还是不要去搞算法了。

我学历就是个普通小本科,算法这方面简直是个白痴,不懂。算法是真的牛,算法yyds!

接下来是安全,这个我不知道有没有人了解,也是个细分领域。包括芯片安全,网络安全。

比如为数据加个密再存储、比如给固件签个数字签名再烧录到芯片,这都是安全工程师需要设计和考虑的。

未来万物互连,越来越多的家电产品,甚至汽车也都能用手机控制。所以,嵌入式、物联网的安全不能忽略。

再后面是FPGA设计,学习编写Verilog HDL语言,学会用硬件描述语言设计组合逻辑电路和时序逻辑电路,这也是一个比较细的一个分支,专业性非常强。

学习了FPGA之后呢,还可以再学习下设计CPU,包括流水线,取指、译码、执行,总线,中断异常等等这些硬件的设计,这已经非常非常底层了。

为什么嵌入式工程师要学习FPGA或者设计CPU呢?

我觉得这是底层原理,会底层的原理,解决上层的问题会思路更开阔,好比你明白TCP的原理,那如果HTTP出了问题,你会更容易解决。

好,以上就是进阶机阶段需要学习的东西了,此刻的你觉得兴奋还是觉得可怕?

如果掌握了这些呢,工作中遇到的任何技术问题,基本上没有你解决不了的了。

进阶机阶段,一般是工作至少5年吧,5年8年10年都有可能。想要理解和掌握,既需要不断的学习理论知识,也需要积累实践经验。

进阶机到此结束,马上就要迎来最后一个阶段,老司机阶段。

让我们来一起揭开老司机的神秘面纱吧。

老司机

老司机阶段,分了4个部分,技术、管理、行业、公司。

到了老司机阶段,你不单单是一个懂技术的人了,还要懂管理、懂行业。

仍然可以继续学习技术,可以学一些横向的技术扩展,比如上位机、APP的编写;测试工具、测试流程的学习;有兴趣可以学学Matlab仿真。

如果喜欢画板子,可以多画画PCB;愿意做设计,也可以学学工业设计、结构设计这些知识。

那么管理呢,包括了这些内容:

可以边带团队边学习管理知识,要依靠团队的力量实现你想实现的产品或者功能。

你还要有一定的行业认知,就是你要懂行业,我大概总结了几个单片机涉及到的行业:

不要把目光集中在手上开发板的一亩三分地儿,要关注行业的市场空间,是否处在上升期。

要努力成为某个行业的专家,行业的专家,行业的专家!

什么是行业的专家?举个例子,如果你在医疗行业,那你就要懂些医疗方面的知识。

比如做个血糖仪,要学习血糖对人体有什么作用、正常血糖值是什么范围,还要懂一个血糖仪是怎么设计、生产的,都有哪些人参与,客户是哪些人,他们在哪,通过什么样的方式或者渠道能把产品卖给他们,有没有什么行业潜规则。

大家现在听我这么说可能觉得很难,但其实没多难,你如果喜欢一个行业,那就去那个行业干几年,稍微用点心,都不用太久,慢慢就不知不觉都学会了。

老司机的最后一点就是公司了,我列了整个电子行业上下游的产业链出来:

从最上层的芯片原厂再到中间的模组厂传感器厂、操作系统、云平台、运营商,最后是B端或C端的硬件厂商,或者是集成商或者渠道商。

无论哪种类型的公司,都会有嵌入式工程师的需求。

作为一个老司机的你,应该了解你们行业中头部、腰部、尾部的公司,了解他们的商业模式,他们的生存状态,了解同行在做什么产品,都有哪些业务,为什么开展这些业务,这是一个老司机应该懂的。

这些行业认知和公司认知,都是需要在多年的从业中,摸爬滚打获得的,这些经验在哪本书或哪篇文章中都是学不到的。

end

以上就是整个脑图的全部内容了,看到这一定又有人会说我在劝退了。

这乱七八糟的学科知识都需要学,一看就头大,一看就不想学,好,那么请问啊,你是想学哪种知识呢?有什么知识学会了就不用怎么动脑,躺着就能数钱的,也教教我。

坦白说,我真的没有在劝退。

刚刚毕业的我们参加工作,一定要树立一个正确的职业观。

没有谁的人生是简简单单的,也没有谁的职业生涯是轻松加愉快的。

既然一定是要去做一个职业,那就不论是嵌入式还是大家知道的其他的,后端呀,Java呀,PHP啊,Python啊, 这些所有的语言,所有的知识,你都是需要一个这样的一个成长阶段的。

如果最开始就树立着一个长远目标,就朝着老司机这样的方向去迈进,有一个指引,我相信你会非常明确的,你会获得一段成功的职业生涯和难忘的人生经历。

人的一生何其短暂,职业生涯多说不过40年,我希望,当你退休、回首往事的时候,不会因为虚度年华而悔恨,也不会因为碌碌无为而羞愧。

全文完。如果对你有启发有帮助,求赞、求在看、求转发,让更多的兄弟看到。

后面我还会再出一期嵌入式linux的学习路径,主要讲Linux系统工程师的,欢迎大家关注起来。

到这了,大家再见!


---------------END---------------

文章到这里就结束了。

欢迎扫描下方二维码关注「科岩成果」~~~O(∩_∩)O~

你好,我是科岩。我做嵌入式工程师9年多了,每当调通一块板子时,都会有满满的成就感。

我将持续分享个人的成长收获,帮助你提升技术能力与认知视野。另外我还听说,关注我的人个个都是人才,一起加油吧,人才们 :)



科岩成果 科岩:嵌入式工程师;成果:喵~
评论
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 71浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
我要评论
12
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦