在知乎看到的,觉得见解不错,看完我觉得会对嵌入式有些见解,分享给大家。
今年毕业刚工作半年,稍微写一下自己的见解。
======================================
嵌入式就个万金油!干得活可以涉及硬件和软件!永远学不完的知识。
嵌入式工程师简直就是硬件工程师与软件工程师的合体!别问我是哪一类软件工程师,反正不是前端、后端、APP、测试、运维。也别问我是什么硬件工程师,电源、单片机、高频、通信……你会做你就上!给你个嵌入式工程师的头衔你就是软件硬件小能手,堪比全栈工程师。
先从硬件说起:
硬件要做一款产品很不容易,要考虑各种方案的选型,而硬件方案的选型可不像移动开发一样是选Android呢还是iOS,是用Java还是Delphi那么简单,哦,你问我用什么框架?我还想问框架是什么意思呢!硬件工程师眼中只有电路图!原理图!(OS:电路图和原理图就是同一种东西好么...)以及这电路图是否有人实现过。
好了,会看电路图了,总要做出来给老板看的吧?于是必须会焊接。做嵌入式硬件的绝对离不开主控芯片,不然还叫什么嵌入式工程师啊?所以该芯片的最小系统是要会焊接出来的。
最小系统实现了,那么就可以搭接各种传感器,往智能硬件方向走;或者移植一个操作系统,往人机界面(UI)方向走。
当然,你也可以到此为止,不去做产品,而是做各种硬件模块或开发板,再拿出去卖。如果我没有理解错,这个叫方案提供商。
「我们公司是卖方案的。」——一个小工程师这么介绍自己的公司。
当然,也有的硬件公司是出售自家生产芯片及模块,附送自家的SDK(软件开发包)。我们这些客户(用户、工程师、二次开发者)称这硬件公司为原厂(官方),代码称为原厂的代码(或者官方的代码)。卖芯片的公司,叫芯片供应商。
我想说的是,还有公司是拿原厂的芯片做最小系统模块,再卖给我们这些二次开发者(三次开发者)用……像这些卖方案卖芯片的公司,嵌入式硬件工程师最多了!
我喜欢把嵌入式分为四个层次,硬件层、驱动层、系统层和应用层,前面说完了硬件,下面说软件。
如果某个人在单片机上写过定时器、数码管、温度传感器的程序,用过UART、SPI、IIC、CAN等通信方式、更厉害的话接触过蓝牙协议栈或者TCP/IP协议栈,称其为驱动工程师应该没什么不妥吧?都是底层代码,虽然有难有易。
系统层。一般个人或小公司是写不了的,听说Windows某版本用了300人写了2年。只有大公司才会想着自己写系统,比如最近的新闻:华为推自主物联网操作系统Liteos 对全球免费开放
而我们个人所能做的是把操作系统移植到芯片上去。
另外补充一个知识点:一个操作系统,一般来说有五样东西:内存管理、进程管理、文件系统、设备硬件接口和网络通信。在嵌入式领域里,可能会针对不同的应用情况而对系统层进行裁减,比如裁减掉文件系统和网络通信,只留下内存、进程和硬件接口就可以了。
如果你现在干的活硬件层是ARM芯片、系统层是Linux。
那么就是ARM+Linux嵌入式工程师,但是你以为你是要做上面的活吗?不!
你只是在ARM+Linux上面修修改改,上面所说的硬件和驱动的活都交给其他人或上游公司做了,但是那些人也可以说是在做嵌入式!
然后呢,安卓本质上不也是Linux么?所以如果你是在做安卓底层开发,安卓APP开发,本质上也是在做嵌入式!而且Android和iOS不是常常相提并论吗?于是iOS开发也是嵌入式开发了……真是让人不可思议!
另外,除了ARM+Linux/Android,还有其他的芯片+系统,比如:STM32+uCOS,ARM+WinCE。
按照目前社会对嵌入式这个词语的理解,可能就在这个范围内。像我这样电子专业出身的人,对嵌入式的理解就没那么狭隘。
我还想说的是:驱动层和系统层这一类的工程师,因为不需要大篇幅的修改而市场需求量少,因为需要阅读大量的代码和要有很多Debug经验而人才稀少。
近年来嵌入式这三个字那么火,但还是一个被培训机构炒作出来的概念!最重要的还是要回到现实中具体是做什么的!你在这一家公司做嵌入式工程师,可能根本就不能担任另一家的嵌入式工程师!所以……
嵌入式最大的坑,就是定义未清!
嵌入式定义未清,又被商家炒作,就会有一大堆人趋之若鹜(包括我),接触之后发觉并不是自己想象的那样,想退出却发现自己除了嵌入式其他什么也不会,想去互联网行业,发现自己HTML、CCS、JavaScript、PHP、Delphi、C#一概不知!
互联网只要一台电脑+一个服务器就能赚钱,软件还是零成本;而嵌入式,你们知道我妈看了我做的毕业设计之安卓手机蓝牙遥控三色灯,第一句话说了什么吗?这属于制造业吗?
2015-10-08补充:
后来想了想不能说定义未清,应该说是定义太广泛。
嵌入式系统在书本上的定义很明确,也很长,具体可查某百科。我的嵌入式老师只用了三个词语就总结了嵌入式系统的精髓:专用的 可裁剪的 计算机系统。
目前社会上对嵌入式的理解,也就是商家炒作出来的概念:嵌入式=ARM+Linux。可是作为电子专业出身的我,套用老师总结出的概念,我能发现很多东西都属于嵌入式:MP3、手机、ATM、好记星等等。学嵌入式为什么偏要去学ARM+Linux呢,而且还难!还不一定找的到工作!
所以,如果你是想进入嵌入式行业的人,请把握好自己的学习方向,不要被培训机构的炒作而迷途。
作者:阏男秀
链接:https://www.zhihu.com/question/28111300/answer/64780548
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
推荐阅读:
专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈