“搞ARM裸机目的是Linux系统,谁让你做单片机开发了?!” 为何我将技术做到行业顶尖水平,却被同事说弱爆了

-回复 -浏览
楼主 2022-08-18 10:57:09
举报 只看此人 收藏本贴 楼主

(本文指代韦东山,泛指嵌入式工程师或对嵌入式感兴趣的人)



我是韦东山,毕业于中国科学技术大学电子、软件专业双学位,超过15年嵌入式一线开发经验,曾在在中兴通迅负责网络电视、机顶盒、IPCamera等多个项目的Linux底层系统开发,擅长ARM/MIPS等架构的Linux底层系统开发,著有畅销书《嵌入式Linux应用开发完全手册》,曾为多家知名培训机构特邀讲师,2011年陆续录制的工程师必看教程——“韦东山系列Linux/Android视频”。


在从事嵌入式开发这一行,一路走来,就有很多工程师会反复地问我这些“热点问题”:


作为新手该怎么学习嵌入式?学单片机有什么用?学ARM裸机有什么用?可以跳过单片机直接从学习ARM裸机开始吗?学Linux系统开发又该如何开始?ARM裸机和Linux系统有什么关联?做偏软件好还是做偏硬件好?如何规划嵌入式技能和职业才有“钱途”?怎么才能少走弯路?如何避免各种“坑”?

.......



很多事情要厘清前因后果,具体问题具体分析。就譬如,做工程师这一行,特别是电子工程师,要有科学的态度和严谨的逻辑,才有可能最终做出经得起推敲的项目和产品,产品如人品


我就以本人的经历故事和所遇到的一些人和事,在这里一并和大家分享,就当是抛砖引玉了,希望对嵌入式开发工程师或对嵌入式感兴趣的小伙伴们有所启发或助益。大家有任何观点,欢迎在本文底部回复一起交流探讨。



1

我在中兴的嵌入式精英同事们


理想很丰满,现实很骨感。所有行业的从事者都是在一个金字塔里,工作好收入高离家近假期多的人,都只是少数。就我观察而言,ARM嵌入式工程师待遇较好,发展前途不受限。


ARM嵌入式工程师入门门槛高,而且很多职位需要你有项目经验。所以,有一部分同学最终只能转行:转而做单片机或APP开发等相对简单的技术领域。


但是,ARM嵌入式工程师所处位置非常好,向下跟硬件工程师打交道,向上跟APP工程师打交道,可以参与整个系统的开发,可以充当项目多面手的角色。


我是个技术宅男,只能举身边的例子:我在中兴时从事嵌入式系统的同事,发展都很不错。

我的科长,拥有专业的Linux底层知识的同时,极具大局观,他向上研究APP的相关知识、相关协议,上下兼通,是中兴的产品经理、总工了。


同事A,早年从因POS机开发(用单片机),在中兴里天天加班深研Linux技术,现在在创业公司里当技术头头,有股份。加班多,但是收入高。


同事B,在中兴里是做APP开发,后跳槽到OPPO后,深研底层开发,早几年单是年终将就是我的年薪,现在自己创业。


同事C,女,跑到IBM做服务器相关的工作去了,嵌入式Linux的知识绝对是帮上大忙了。


同事D,深研Linux系统知识,人称大师,从不加班(羡慕死人了),有大BUG必定请他出马、出差。


对于嵌入式工程师,把Linux知识吃透了,可以游走于几乎所有行业,因为这些产品基本上都要用Linux。


想当领导的话,向上学习一下APP、业务知识,你就可以掌握整个产品的开发全流程了。


想创业的话,向下你知道需要什么样的硬件,向上你知道需要请哪方面的APP工程师。


对于暂时找不到嵌入式Linux职位的同学,不用担心,你总会发现机会的。


做单片机产品的公司,产品升级的话必定要用Linux,到时你就是公司掌握先机的人;做APP的话,如果跟硬件相关,你的嵌入式Linux知识会提供很多帮忙。


要掌握Linux系统开发,就必须先搞透ARM裸机!


2


在你的薪资翻倍之前,让我们先聊聊ARM裸机



ARM裸机就是单片机,在把能运行Linux系统的板子先当作单片机来使用,熟悉芯片功能、硬件操作,为后续的Linux学习作准备。


我们讲解的ARM裸机,特殊之处在于:不使用IAR/KEIL/MDK等软件,而是在纯粹的Linux环境下从0写代码。这些好用的开发工具屏蔽了太多的技术细节,比如:位置无关码、重定位、中断环境的保存与恢复、链接脚本。而这些细节,在后续的bootloader学习中是需要的。


除上述细节外,ARM裸机的学习目的在于:掌握如何编写程序来控制硬件。后续的“Linux驱动=软件框架+硬件操作”,我们先在单纯的裸机学习中掌握硬件操作,在后面的学习中就可以把精力放在驱动软件框架上。


我们学习ARM裸机的目的,是去学习后续的Linux课程,进阶为Linux系统工程师。而不是要让你继续从事单片机开发,成为单片机工程师。


在技术层面,Linux系统工程师回头从事单片机开发,轻而易举;但是现在不开始着手Linux的学习,后续转型很麻烦。2004年我们使用51单片机从事车载电话开发,所做的软件已经算是单片机层面顶尖水平了──我们可以在单片机上开发自己的操作系统。但是,我们同事纷纷感觉到了危机,单片机能做的事情太单一了,单片机弱爆了!当年流行wince,Linux刚起步,我们选择学习Linux,现在wince已经没人提及,而Linux仍如日中天。中兴公司也是在2005年才全面从vxwork切换到Linux的,我有幸进入中兴与他们一起研究Linux。


在收入方面,大家尽可以去招聘网站搜“单片机”、“Linux”,后者一般是前者2倍以上


在发展方面,有了Linux知识,几乎通吃所有产品。我从事过网络会议系统、监控摄像头、楼宇对讲系统、安防、方面的开发,我只是开发底层系统,不是开发APP,这些产品通通使用Linux。现在兴起的机器人、人工智能,它们要落地的话,运行Linux系统的硬件是必选项。


就身边事例而言,我是2008年离开中兴,随后几年里有几个同科室的同事也都离开了,他们都做Linux系统;现在都做得很不错。有人在联想做Android开发,有人在做POS机,有人自己创业,他们或是团队领导,或是有股份。


3


嵌入式,我见过最奇葩的事



学过嵌入式的人可能会比较清楚,在学习的过程中会有很多小坑,如果自己去解决的话,估计要花上几个小时,但是有经验的人一眼就能看出来。


我遇到过,


最奇葩:拿到开发板,把电源插到耳机孔去了。


大多数:粗心,很多人拼写命令时写错了,结果忙上半天找原因


储备知识不足:开始学习时,我们只能照着文档写命令,这些命令的作用后面才会说明;如果当场就讲这命令,课程就会又臭又长。


所以,我们都会建议:按着视频学习,不懂的、没讲到的,先放着;后面学完你就全懂了。


学习过程中,很多因为粗心导致的问题层出不穷,自己去解决的话很花时间。


而且嵌入式学习过程中,需要的知识非常广,自己临时去学习的话,进度很慢;能否跳过,自己也不知道,反复中断后会备受打击,甚至放弃学习。在遇到困难时,如果能有人指引,效率会高很多。


我在2005年学习嵌入式时,市面上基本没有资料,我学得非常痛苦,在论坛上疯狂发贴,那些问题现在回头看非常弱智,但是当时就把我卡住了:茶饭不思,时不时想砸电脑。


为帮助更多想学习嵌入式的朋友,所以和电子发烧友一起策划推出了最新ARM裸机学习视频“韦东山手把手教你8周玩转ARM裸机实战”(长按下图识别二维码进入视频课程学习



我要推荐
转发到