techff

  • 903 主题
  • 936 帖子
  • 1176 积分
  • 身份:LV4 高级技术员
  • 论坛新秀 灌水之王
  • E币:261

学单片机有前途还是嵌入式系统有前途?要不要放弃

2020-9-10 12:36:27 显示全部楼层
该不该放弃单片机,嵌入式这条路?               

01
故事的起源

知乎上的TopSemic是一名2011年本科自动化专业毕业,他的经历是这样的……大学时玩过51单片机,但是那时就跑了一个流水灯实验,还是用汇编实现的,C语言我都不会,尽快本科时2级C我考了92分,但是不实际使用很快就忘完了。大四暑假去一个小公司面试,人家问我什么是串口,我懵逼的不知道如何回答,自然人家不会要我。

所以现在回看那时的自己,就是一个嵌入式渣渣。

考研也没有考上第一志愿的理想学校,调剂到了北京一所高校,导师的研究方向是模式识别方向,那时图像处理还没有现在这么火,研一的时候导师给我安排了一个VC++的上位机编程项目,结果我实在是搞不定,后面被迫放弃。

那段时间我愁的满嘴溃疡,直到现在我还时不时的平均每月一次溃疡,不知道是不是当初留下的后遗症。

我导师接外面的公司里的项目,我做的第一个项目是一个天然气管道流量采集系统,功能很简单,就是通过RS485 Modbus协议采集温度、流量值,然后发送到监控中心显示。买的现成的RTU设备、中心软件我用的组态软件,所以整个项目了里真正的编程代码工作几乎没有,是一个集成项目。但是这个项目给我的收获非常大,因为里面的所有工作都主要是我完成的,包括原材料购买、机柜安装、现场设备接线、调试等。最后看到现场的数据能够通过3G无线网络传输到远端中心,那当时的感觉还是很不错的。

不得不提,当时我的一个师兄给了我很大的帮助,因为当时我连网络ping的原理都不懂,连什么是交换机和路由器都搞不清楚,是他教了我这些基础的知识。

通过上面的这个项目,我第一次体会到了真正的实际项目是怎么回事,并且也建立了一定的自信,就是原来我也可以做成一件事。

这个项目做完,有段时间我还一度想着以后毕业了就从事工控行业了...

后来,又参与了导师的一个真正的嵌入式的项目,做的是一款物联网燃气表,这里面包括了单片机、手机平台芯片,开发语言是C语言,我那时在现在看来依然是个打酱油的角色,主要就是在外面公司里打打杂,从头到尾也没写过几行代码,不过啊,这期间整天耳濡目染,没吃过猪肉也见过猪跑啊,对嵌入式里的一些概念(串口、IIC、下载、sourceinsight、低功耗等)算是建立起来了,并且我那会也直接和英特尔的工程师一起调试,也学到了很多东西,期间还去上海出了一趟差。这也让我确定了毕业后要进入一家外企芯片公司的念头。

研究生的时光很短暂,第三年就找工作了,由于我准备的较充分并且也有实际项目经验,所以很快就拿到了好几个公司的offer,包括MTK、中兴、威盛、Freescale等。一开始我选择了MTK的linux驱动开发的职位,还去公司实习了1个多月,后来由于没抗住压力和Freescale offer的诱惑,最后毕业时去了Freescale,时过境迁,现在Freescale都不存在,已经被NXP收购了。

第一份工作月薪10.5K+40%业绩奖金+补充住房,当时说的年薪18.6W,那时真心觉得很高啊,因为我本来的期望就是月薪能在8-9K。我的职位是FAE,就是技术支持工作,要经常面对客户,给客户做支持。做了3年后,离开。

离开的原因是,觉得我需要在一个行业专注,做的有深度,同时不想在大公司做一个螺丝钉,于是进入了一家私企,从事车联网V2X行业,又干了两年,这两年我做了单片机的项目,也做了Linux应用开发工作,同时学会了初级的C++编程,另外对产品有了直观的体验。

去年离开,又跳槽到另外一家公司,也是做的同样的行业,目前职位是产品经理,同时也在不断的学习技术知识,月薪30K+。这一年来学会了QT 进行Ui程序开发。目前正在学习JavaScript前端知识,希望能够自己搭建一个简单的系统。

业余时间,和前公司领导写公众号TopSemic,我们也在不断分享过去的经验和教训,希望帮助在嵌入式、芯片行业的朋友。其实每个人在嵌入式行业都会遇到很多问题,大部分你遇到的问题别的人都遇到过,如果能和过来人多交流多沟通,对你影响是很大的。

对于我而言,我不会放弃嵌入式、单片机,因为我是发自内心的喜爱,我相信我会一直坚持做下去。

同时我也会不断学习嵌入式之外的相关知识,因为一个完整的产品不仅包括嵌入式,还有手机端、web端等内容。我不求全部都精通,但是我一定会去实践,去亲自体验。

结合自己的情况(爱好、能力、年龄)等,做出最佳的选择,而不是人云亦云,不知所从。同时一旦确定方向,要坚定不移的去执行,去坚持,不到万不得已不要轻易放弃。

此外要和行业里的人多交流,不断开拓自己的视野,不要总是只盯着自己干的一点事情。要了解你所处的行业,以及整个产品的各个环节,包括芯片(芯片本身就很多门道,什么代理商啊,贸易商啊,原厂啊,很多人都搞不清楚他们的关系),硬件(原理图、PCB设计)、产品外壳、结构,包装,生产环节、UI设计等等方面。这些东西如果有机会,最好是自己亲手参与一下,只有实际做了,才能理解其中的东西。

我就自己完整的经历过:画原理图、PCB,打板、买元器件,烙铁焊接、调试、写嵌入式代码,写上位机、移动端软件,设计产品、现场安装调试等所有环节。我是属于那种自己不亲自干过就不明白的那种。另外嵌入式包含的东西太多了,建议大家除了单片机,还尽量学学linux,我感觉最近几年linux越来越普遍了。

同时无线通信应用越来越多,wifi、ble、Lora、NB-IOT、4G/5G等,无线的知识也得多学习。

最后嵌入式说白了是为了完成一个项目、完成一个产品的工具,技术手段,除了技术本身,你同时应该对背后的行业、业务有深刻的理解,这样自己的价值才会更高。


02
单片机和嵌入式的争论


事实上,很多做一行的人都会发自灵魂问出一个问题:“学单片机有前途还是嵌入式系统有前途?”

著名嵌入式吴坚鸿认为,毫无疑问的,当然是单片机有前途。

嵌入式系统现在炒得很火,满街到处都是嵌入式系统的培训。遇到很多刚入门的朋友,开口闭口都是嵌入式系统。好像觉得嵌入式系统就是武林秘诀,谁掌握了谁就是武林盟主。现在,我愿意公开我的独家心得跟大家分享,看了之后有收获的朋友,也不要感激我,只要记得这个文章的原创是吴坚鸿就可以了。目前的电子产品,用嵌入式系统的很少,大部分都是用单片机,因为单片机实时反应速度快,外围电路简单,价格便宜,开发周期短,这些都是嵌入式系统望尘莫及的,不要跟我说什么手机,PDA等东西是嵌入式系统,这些东西你能独立承接出来单干吗?大部分的朋友学了嵌入式系统后都无用武之地,空有屠龙之术。

即使有用武之地,那也要跟团队一起开展工作,跟团队开展工作,就意味着分工,一旦分工,就意味着流水线作业,单一,乏味,成就感有木有。学嵌入式的不一定比学单片机的厉害。单片机简单吗?一点都不简单。

单片机的功夫在单片机之外。我搞这行那么多年,我觉得单片机是我这一辈子都学不完的。单片机不带操作系统,所以你写单片机程序,本身就意味着你在开发操作系统。嵌入式带操作系统,所以你写嵌入式程序,本身意味着你不用开发操作系统,只是在别人的系统上做一些应用开发。

真正接触底层的,是搞单片机的人。不要以为你花一个月的时间就能精通单片机,我花十年都不会觉得我精通单片机。里面博大精深。你要掌握常用的不同厂家单片机,要掌握各种常用外围芯片,常用数字电路,模拟电路。你要还掌握CPLD,DSP的编程,你要会电路板设计,你英文阅读能力要好,你的学习能力要非常好,以上所有的都还不够,你必须有几年以上各种独立的项目开发经验。

最后谈谈大家最关心的问题,学习单片机赚钱还是学习嵌入式赚钱?学习单片机,只要你技术过硬,一个笔记本电脑,再加一个农民房就可以在深圳单干,我就是这样过来的。学习嵌入式系统的,可能要依附大公司,如果你也出来单干,估计半年没接到一个单,即使接到单,如果开发周期三个月或者半年的,你要有充足的粮草储备。我觉得单片机开发是艺术,我做的每一个作品都让我充满成就感。最后奉劝所有搞技术的年轻人,做一行爱一行,不要急功近利,做好每一天的的工作,沉下心来,时间越久,经验越丰富,你就越牛。

不过还是有网友站出来表示,各有所用,单片机是周期短。可嵌入式有技术含量啊。吴坚鸿认为,(1)单片机入门感觉快,但是真正去做新项目的时候,往往会遇到很多书上你遇不到的问题,往往要折腾一段时间,甚至实在找不出路子,就要重新更换硬件电路,重新更换芯片,而这些问题一旦被你解决了,这些就是你的宝贵经验,这些是别人在书上学不到的,要有这么丰富的经验,功力,短期内很难达到。(2)是不是只有少数人懂的才叫技术含量?足球,男女老少一看就懂,没技术含量?围棋,两个人静静呆在那里对战几个小时,你我都看不懂的,才叫技呆术含量?球星一个月就赚好几百万,棋王一次顶级比赛的奖金才十多万。这个现实让我深受启发。

单片机做的事情要尽量简单,速度要尽量快,成本要尽量低,开发周期要尽量短,这个才是单片机的独到之处。裸机跑的单片机比带操作系统跑的单片机效率要高。带操作系统的单片机实战中用不到。

不过,著名嵌入式工程师火哥曾表示,单片机开发相对于Linux嵌入式最大的劣势在于基层的打工岗位平均薪资偏低。技术本身各有优劣,但是就基层打工而言,在同一座城市,就打工而言,单片机的薪资比嵌入式Linux低30%到50%。也许很多有会拿某些做单片机的高薪的老板(比如野火的火哥,周立功等)或者一些公司高管的薪资和做嵌入式Linux打工的工程师对比,证明单片机也可以拿高收入。但是他们都犯了田忌赛马的错误,拿别人的上等马和你的中等马对比,火哥认为这种田忌赛马的比较非常不切实际,基层打工的就应该和基层打工的这个水平的对比。

著名嵌入式工程师朱有鹏认为单片机其实就是嵌入式linux的初级阶段。或者说嵌入式linux就是更难一些,更复杂一些的单片机开发。所以这2个东西渊源很深,所以经常拿来比较。

如果非要说优势,单片机比嵌入式的优势就是:技术门槛低,工作机会多。

技术门槛低是说单片机相对好学,单片机本身复杂度没那么高,尤其是51单片机这种,可以说真的可以“零基础”去学会。当然了,并不是说单片机就是“低智商”,我们说的简单是相对的,准确说是相对嵌入式linux来说的。

也不是说单片机开发就都是很简单很无脑,没有任何技术含量。并不是的,实际上单片机开发也可以很复杂,譬如火星车、大疆无人机等都是单片机做的,最近很火的美国医疗公司开源的呼吸机主控也是单片机的。所以做单片机的别着急骂我,我不是要贬低单片机开发,我只是说从零基础到入行单片机能找到单片机开发工作,需要的难度相对更低。

如果你够厉害够自信够狠,那就直接嵌入式linux,完全可以跳过单片机这个阶段。

如果你稍微虚点,那就迂回战略。先攻占单片机这个山头,用一两年或者两三年站住了站稳了拿到10k左右的行业中高水平了,感觉没有太多提升了。然后迅速自主的去学习嵌入式linux,继续下一阶段的爬升。总之,就是看哪个薪资高做哪个。


03
该不该放弃嵌入式和单片机


这要从“钱”和“前”两个角度说起。

钱:

首先,放弃一种知识,包括嵌入式,是完全没有必要的,俗话说的好“技多不压身”。嵌入式优势非常明显,它能让你真正理解计算机系统;相信很多从事多年互联网行业,游戏行业的同学,从来没有看过计算机系统原理图,没有见过总线的信号长什么样子,更没有亲手焊接过一个电子元器件。

这里没有鄙视谁的意思,毕竟术业有专攻。所以,嵌入式开发者往往是会修电脑的程序员,甚至是设计计算机系统的程序员;这些知识来之不易,往往需要软硬通吃。这是很多人都想获得的技能,包括互联网从业者。

同时,我必须指出“嵌入式”最大的弱点:吸金能力严重不足,这里不讨论苹果公司或某些头部公司。我说的不是能力/价值不足,而是吸金能力不足。原因很简单:在嵌入式的商业领域里,没有人口红利一说。中国14亿人,人人一部手机,所有互联网业务/游戏,都是在争夺这14亿人的时间,14亿池子的体量巨大,舀一瓢水,就是普通嵌入式企业几年的销售额;当然竞争也十分惨烈,除非变成头部公司,否则,很多公司都会大批的死去;但是有趣的是,这种快钱,特别容易吸引投资,马上又有大批的公司加入到14亿人口的争夺战当中;也许正因为”吸金“能力上的巨大差距,导致互联网/AI/游戏行业风头无二。

以上都是老生常谈,这么多年来,天天都在上演互联网大战。但繁华过后,泡沫最终都会破灭,到底沉淀了多少价值,就值得深思了。嵌入式行业,每一个能被市场接受的产品,都是在改变/改善人们的工作/生活;几乎挣多少钱,就对等了多少社会价值;当然,这还是好的情况,至少还能挣个血汗钱。

而吸金怪兽:游戏,它给社会带来的价值与它的收入对等吗?这里没有怪罪游戏行业的意思,因为一切都是市场经济的游戏规则,只是它对埋头苦干,打造基础产业(包括制造业)的从业者太过残忍。所以,作为一个嵌入式开发者,可能要做好坐冷板凳的思想准备。

前:

再说一下“前”的问题 。互联网头部公司的触角已经伸向了嵌入式领域(只是它们称之为IoT而已),因为嵌入式能产生更多的真实价值,同时设备的数量最终会远远超过14亿人的数量;对于有条件的同学,完全可以借助这个机会携自己的专业知识上岸。同时,这也是对”嵌入式“从业者的一个警告,他们开始了解你了,你了解他们吗?嵌入式开发者不能总生活在自己的安乐窝(舒适区)里面,你需要了解今天的云计算,你需要了解AI可能给你带来的优势,你需要让你的设备的搭上新一代互联网技术的快车。

总的来说,嵌入式行业上可IoT,下可单片机;努力提高自己的上限,才是嵌入式开发者的破局之路,不要盲目的什么都学,因为学艺不精,不仅打不死人,还大量的浪费自己的时间,在自己的专业领域,尽量深入;而对于互联网的快速发展,更不能视而不见,千万不要把自己塑造成一个什么都懂的专家,这样真的很累,而是happy to learn(这句话不仅仅只受用于:苹果/谷歌的工程师),最现实的问题:你应该如何让自己的嵌入式设备上至云端,下通地铁?做到这一点,不需要你成为互联网的顶级专家,只需要你学会如何正确的使用现在的互联网资源。

相信我,我不是看不起大家的学习能力,而是担心大家没钱建立如此庞大的数据中心作实验。

最后,不管什么行业,都要学会拥抱变化,真正的欣赏,学习不同行业的开发者,毕竟我们都有一个共同的名字:程序员。

部分嵌入式和单片机的初学者们有一个很大的误区:只用工作技能对行业进行划分,而不在产品领域进行行业划分。什么单片机、嵌入式、模电数电、代码编写这些都属于工作技能,在初学的前几年需要关注的。而做一定时间后,就要把精力放在产品领域进行深耕。你做哪类产品,就要对哪类产品的相关认证要求、政策导向、同行产品优缺点等重点关注。

比如,做医疗类就关注医疗类产品,做变频器就关注变频器相关,换工作时应聘单位实际上并不太注意你开发技术怎么样,而是注重你对所处产品行业的了解程度,这才是你真实能卖上好价的立足之本。


嵌入式、单片机是否有前途?实际上应该问某个产业是否有前途。因为嵌入式只是一种工具。一个行业呆久了之后就会有本行业特有的直觉,这个比技能本身的经验积累更重要。正是有这无形的财富,才不能轻易转行。

转自21ic

最新评论

楼层直达:

moyanming2013

  • 21 主题
  • 78 帖子
  • 548 积分
  • 身份:版主
  • E币:378
我要评论
1
12
广告
关闭 热点推荐上一条 /8 下一条
快速回复 返回列表