嵌入式Roadmap

#0 写在前面

嵌入式方面的知识包罗万象,网上的嵌入式教程更是卷帙浩繁。我在这一块的知识也只是略知皮毛,挂一漏万在所难免。理解的方式多种多样,不要把我当成权威,也不要认为这篇Roadmap是唯一的标准,而是希望把这篇Roadmap当成一个参考。如果你是初学者,那么需要多进行自己的思考。如果你已经比较熟悉嵌入式开发,也欢迎提出各种批评。

#1 什么是嵌入式

我自己对嵌入式的理解是:丐中丐版计算机,或是乐高式计算机。

如果你没进行过嵌入式开发,而仅仅是进行应用软件开发,那么你的开发路径可能是这样:搭建开发环境---->进行软件设计与开发---->测试与debug---->发布。

但是如果你进行嵌入式开发,开发路径则可能是这样:先构思出自己要做什么东西---->根据自己的开发目标、经济情况、技术力选择需要的组件---->进行PCB设计与焊接---->测试PCB---->进行软件设计与开发---->测试与debug---->发布

两者的区别就是:进行嵌入式开发,必须要对硬件方面的知识有一定的把握。

买来的成品电脑,在硬件方面可以说已经是万事俱备,只欠东风了,需要思考的问题主要集中在软件上面。而进行嵌入式开发,就是一个搭建系统的过程,需要考虑到一个系统的方方面面。而搭建起来的系统,其本质还是一个计算机(系统核心还是CPU)。因此不仅要思考软件上的问题,也要思考硬件上的问题。

#2 需要掌握哪些技能或知识

硬件

  • 电路分析(要求不高,起码看得懂电路,会分析简单的电路)
  • 数字电路(重要,包含很多基础的概念)
  • 模拟电路(要求不高,简单了解一下二极管、晶体管、FET管和运算放大器的性质即可)
  • 计算机组成原理(重要,是理解很多问题的基础)

软件

  • 汇编语言
  • C语言(两种比较常见的开发语言)

其他

  • 英语(读文档、学习一般教程必备,很多优秀的教程都是用英语写的)
  • 喜欢diy、喜欢深入研究的热情
    如果你学习了以上内容,那么你的知识量已经足够支持你开发一些简单的项目了。但这只是学习的一个开始,如果再深入一步的话,就会接触到更多更深入、更抽象的技术领域,比如信号与系统、高频电路设计、操作系统……因为我水平有限,所以就不再列举更深的知识点了。

#3 学习资料和学习顺序的建议

建议学习顺序

  1. C语言、计算机组成原理、汇编语言
  2. 电路分析、模拟电路
  3. 数字电路(学会后再结合机组重新理解)
    当然,这个顺序也仅供参考。

学习资料

电路分析

模拟和数字电子电路基础

来自MIT,经典教材,结合MOOC一起学习更好(还能顺便熟悉一下印度口音

数字电路

数字设计原理与实践

是我上数电课用的教材。把各种概念讲的比较清楚,感觉英文原版比中文版易懂一点。

模拟电路

Electronic Devices and Circuit Theory

模电入门经典教材,反正是让我入门了。而且读起来也不困难,逻辑很连贯,行文也比较有趣。

计算机组成原理

深入理解计算机系统(原书第3版)

经典教材了,怎么吹都不为过。。。读一遍,相信一定有所收获。

汇编语言

汇编语言:基于x86处理器(原书第7版)

我看过前半本,感觉挺好的,至少帮我过了汇编考试。和机组放在一起可以有更深入的理解。

C语言

C语言程序设计:现代方法

这本书写的深入浅出,概念清晰,比谭浩强那本红皮C语言不知道高到哪里去了。

C Primer Plus(第6版)中文版

这本书很厚,不用全看完,就当成C语言的新华字典,哪里不会查哪里。

以上教材基本都有pdf资源,而且我也都读过,阅读体验都不错。当你对以上知识都有大概把握以后,就可以进行进一步学习了。推荐一点资源:

STM32入门教程(基于HAL库+CubeMX+MDK-ARM)

成电漆强老师的课。漆强老师是电子设计竞赛的带队老师,水平在线,这个教程直接手把手带你入门。

野火论坛

有很多开源书籍,但基本开发思想是标准库,与漆强老师主讲的HAL库有一点区别。

Google

懂得都懂

#4 后记

我不是一个厉害的嵌入式开发者,所以这篇Roadmap必定有很多漏洞,因此还是建议批判的阅读。也欢迎大家提出自己宝贵的建议。

1 Like