一说到嵌入式开发,大多数人想到的是ARM、Linux、C++、安卓等等。
看了很多相关的入门学习文章,一脸茫然,这学习的东西也太多了吧?门槛也太高了吧?
我做了这个行业10年,现在看到网上那些入门文章都感觉学习难度很大,很多新手就是这样从入门到放弃的。
但真实的情况是,这个行业入门门槛低到让你发指,只要你能坚持,初中文凭照样能玩得很溜。
如果你真的喜欢研究技术,喜欢做一个创客,通过自己掌握的技术把自己天马行空的想象变成现实产品,那嵌入式开发绝对是你必学的技术。
1.嵌入式软件开发是做什么的?
很多人可能还不知道,嵌入式软件开发是做什么的。
简单来说啊,就是你写程序控制硬件电路去实现电子产品的智能控制功能。
相对纯软件,嵌入式开发更有意思,纯软件学习过程大多数都是在屏幕上打印一些冷冰冰的字符。
而嵌入式开发大多数是在开发板上面,你很快就能写程序去控制一个LED灯,这是不是更有意思一些?
还有就是嵌入式开发是基于芯片开发,比如说一些ARM芯片,这种芯片就像是电脑CPU一样,只不过性能、成本、尺寸各方面比电脑CPU要精简。
这种更适合去做定制化的电子产品,比如说丰巢快递柜,平板电脑等等。
2.嵌入式开发要学习哪些课程?
很多新手从开始就已经走错了方向,嵌入式涉及的技术太多了。
就像一个公司的组织架构一样,一个公司分很多职位,比如说有做技术的、有做业务的、有做人力的等等。
同样,嵌入式开发也分很多方向的,主流的方向就是:
单片机开发ARM+Linux开发还有别的FPGA/DSP等等就先不说了。
如果你前期方向不定位清楚,你基本不可能学会嵌入式开发,因为学的东西太多了,你根本学不过来,长期学习没结果肯定也会放弃。
但是如果我们定位很清晰,那学习的速度就像开挂一样。
我经常和我们无际单片机编程的学员说,要活成一道激光一样,聚焦一个点死磕,这样才能快速有效做出成绩。
那单片机开发和ARM+Linux开发有什么区别?
单片机开发主要做中低端产品,比如说大家一定接触到的ofo共享单车、智能家居传感器和网关、无人机、扫地机器人等等。
ARM+Linux主要做中高端产品,比如说平板电脑,智能机器人等等。
这两个方向没有谁比谁更好的说法,各自的应用场景和产品不同。
很多人说学嵌入式开发就学ARM、Linux,单片机开发没前途,这种纯粹是技术人和外行人的思维。
曾经我也是这样想的,我这几年一直在做单片机开发,单片机开发总是比做ARM+Linux开发的工资低,心里也很不爽。
自从后面看到一些只会51单片机,年入几百万老板的时候,才彻底颠覆我的三观。
技术再牛逼,做的东西再高端又如何?
认知和思维不进步,你的收入永远都是打工水平。
所以,技术水平和收入并不是因果联系,技术再好,从打工的层面都会有瓶颈,关键还是怎么通过技术这个工具去产生价值。
Ok,有点扯远了,回到主题,嵌入式开发要学哪些课程?
我们前面说了方向,拿我最熟悉的单片机开发来说。
一个电子产品实际开发会有2个人共同开发:硬件工程师和软件工程师。
我们的定位就是软件工程师,因为待遇会比硬件工程师好一点,现在硬件很多都是集成化,所以做硬件成长过程会比较坎坷,接触不到核心的技术。
如果接触不到核心技术,那硬件不如软件工资高。
这样一步步缩小我们的定位以后,再根据我们定位去收集学习的内容,最后你会发现你要学的东西其实并不多。
收集学习内容最好的方法就是去招聘平台搜相关职位。
比如说我们可以搜:单片机工程师/嵌入式工程师。
这个是某鹏汽车的单片机开发职位,结合我从事这个行业10年的经验总结出,必须要学习就是以下几个课程:
C语言嵌入式和单片机开发主要是用c语言来编写程序去控制硬件完成相应的产品功能。
其实汇编也可以,但是汇编写的代码维护起来很麻烦,现在一般很少用,所以主要学C为主。
我们无际单片机编程也录制了一套单片机c语言的入门教程,非常适合新手。
这套本来是为零基础的学员录制的,后面感觉这块教程已经泛滥,干脆分享出来了。
2.电路基础
做嵌入式单片机开发主要就是写程序控制硬件,所以需要有一定的电路基础,学到看得懂电路就可以了。
3.单片机
目前市面上单片机的型号很多,基本都是大同小异,新手可以先从51单片机开始学起,比较容易上手,后面再进阶到STM32。
最后,祝大家学有所成!