该如何学习嵌入式?看大佬的职业规划!

大鱼机器人 2021-10-23 17:18

大家好,我是张巧龙,今天分享一篇关于如何学习好嵌入式的文章。


01 



身边朋友问我如何学习嵌入式,在这个行业健康的发展。我一直未能做一个系统的回答。这里我想写篇文章,彻底的回答这个问题。

嵌入式,这是个术语。

为了应用高度定制软件和硬件的计算机系统,满足一系列的特定应用需求。国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”。

从我个人的理解,到普遍的定义,再到IEEE的权威。可以看到,嵌入式系统首先是计算机系统。我们不能忽略这个问题。既然是计算机系统,那么学习嵌入式,计算机的基本理论知识我们要不要学习呢?

比如说,编译原理、数据结构、操作系统、离散数学、计算机系统体系结构。个人认为,没学走,就学跑是非常要不得的。

很多人意识不到这点。加之国内很多学校没有培养嵌入式的专业,没有相应的人才输出。很多学习嵌入式的人都是从电子类的专业,自动控制类的专业等等转过来的。这个转型也意味着理论上的巨大缺憾。

如果要问,排序算法有几种,恐怕只知道冒泡和希尔,不知道堆排序,快速排序,基数链式排序这些算法,更不知道还有内部排序和外部排序之分。查找算法只知道个基本的2分查找。对于树的查找算法一无所知。

怎么说呢?

也许很多从业的程序员,不乏专业水平相当优秀的,认为这些并不重要。我只能说,你命好,做这种具体的工程大于理论的东西。实际上,如果从一个嵌入式的程序员成长为系统设计者,或者更高的技术职位,要从更深的层次看问题。理论起到了非常大的支撑作用。

比如说,设计一个普通的微波炉控制系统。说实话,这个代码应该是非常简单的。但是,作为精细的设计者,不仅仅要考虑需求是否完成。还用从整个程序的空间杂度、时间杂度上去分析,并降低整个代码的复杂度。从而进一步降低软件结构、算法实现对处理器的要求,达到对成本的节约。

一般来说,成本不光光是BOM成本,还包括人力成本,运营成本,开发成本,维护成本等等。任何软件系统都要测试,然而一份代码要怎么才能比较好测试呢?

这个问题并不好回答。我这里先卖个关子,回头我在另外一篇文章里详述。尤其是嵌入式代码,测试方法虽然沿用了PC机的一些做法,但是仍然有许多工程限制。做起来难度颇高。马克思说过,一切的节约可归结为时间的节约。代码结构简单,空间杂度小。那么也意味着更小的工程量,更短的测试时间,更稳定的产品质量。

如果是个理论性稍微强点的产品,汽车导航系统。地图的路径搜索算法。定位位置的搜索,以及地图的分类加载优化等等,都不是太容易就能做好的。更需要坚实的理论基础。许多刚出学校的大学生朋友们,没出校门就把相关的知识还给老师了。其实,我经常问公司新来的同事,设计算法的思路是什么?

这个是从计算机的角度去考虑一个问题的解决办法。很多新人是计算机毕业的都无法完整的回答我的问题,失望之余,更想说的是:经验很重要!但是比经验更重要的是知识,比知识更重要的是方法。在理论的指导下去积累经验。

减少从经验下获取知识,减少体验式学习这种状态,养成系统的认识分析问题的方法,理论联系实践的方法,实践检验真理的方法,经验必须能被理论解释的方法。

所以,
第一点建议,就是希望从事嵌入式的朋友能把计算机基础课程全部系统的学习一遍。


02 



我们还是来看嵌入式的定义,这个定义是相对的概念。

什么计算机系统不是“高度定制的软硬件计算机系统”呢?PC机。不严谨的说是这样。嵌入式在工程上有非常多的特点,相对于PC系统说,如果把PC系统看成一个完全的标准的“大嵌入式系统”,我们用大鹏鸟来形容它。那么,像“蜂鸟”这样的最小的小鸟,像“麻雀”这样的常见系统。也就不难理解了。

从技术上讲,PC系统的知识量,难度都要比一般的嵌入式高出N个数量级。但由于PC系统在计算机历史上发展得比较早。

因而,其智力投入、完善性、应用的广泛性重要性是别的系统平台无法比拟的。然而,正因为发展了这么久,其平台的封装性稳定性是非常高的。操作系统级,支撑软件级,应用软件级。

特别是应用软件级,一些与平台无关的软件,基本上很少涉及操作系统的知识,以及一些内部的原理。如浏览器里的Javascript开发,基本上不涉及操作系统的知识,只是受不同的浏览器的影响;又如Java,只涉及较少的系统平台的知识;就算是C/C++语言,开发应用程序,也就是一套API的应用。涉及的操作系统的东西也只是冰山一角。

由此可见,PC平台的优良封装,极大的简化了问题的复杂度,使开发者和应用者能把主要精力放在自己的业务上,提高开发效率。嵌入式领域就没有这么幸运了。其为应用的高度定制,造成了以效率,应用为优先的特点。封装层次太多必然对效率有所伤害。同时规模变大,测试变得复杂。开发周期变长。

所以嵌入式的层次结构相对于PC系统,边界没那么清晰,封装考虑的问题没有那么全面。完成同样的一个工作,需要了解的内容更多,才能做得更好。

如果一定要拿嵌入式和PC系统比,个人觉得,PC系统的开发有时候比嵌入式系统还要难。由于封装的比较完善,PC开发的门槛比较低,但是做好,做精通,做全面,比嵌入式难多了。

嵌入式因为一开始就要了解相当规模的东西,所以入门的门槛变得比较高。纵观这些东西,其实PC系统和嵌入式系统很大一部分都是重叠的。

所以。第二点,我推荐大家读(俞甲子 / 石凡 / 潘爱民)写得《程序员的自我修养》。


03



首先,嵌入式只是比PC开发要多了解些东西,本质上来讲并无区别,这些知识当中有一半是与具体工程相关的东西。也就是说,照着流程做,并无太多的为什么,如果硬要问为什么,其实也就是一些工程上的需求。

一些嵌入式应用之间可能略有一些区别,可能有些区别还很大,但大致的流程还是相似的。有个比较好的PC开发功底,了解了这些流程,开发嵌入式应该是没什么特别的障碍的。

其次,《程序员的自我修养》这本书是针对PC平台的,书中的许多东西是PC平台特有的,比如说动态加载等。但理解动态加载也会对Bootloader加载应用程序和操作系统有一个直观的比较。由于并不是针对嵌入式平台的(我没发现有专门讲嵌入式的书),所以,很多东西需要自己在嵌入式中去体会。

另外书中对一些嵌入式中比较在意的问题描述的并不够详细,比如说链接脚本还有ABI。PC平台这些问题被很好的封装起来了。所以,有些问题在嵌入式领域,还需要进一步深挖。这本书作为嵌入式入门的理解是非常合适的。

嵌入式在工程领域最大的问题是软硬件同时成熟,出了问题容易踢皮球。这里就很容想到调试。嵌入式的问题定位较为复杂,尤其是牵涉到软硬件的复杂问题。

首先嵌入式的调试手段较为单一。相对于PC平台,稳定性和可靠性都要打折扣。这里不仅包括调试平台的问题,也包括一些调试手段对代码的影响,诸如改变代码的运行时间,改变了代码的动态行为(频度,触发时差等)。

做嵌入式对系统更加要有个全面的认识。这里包括从设计方法思路,设计目标要求,硬件的详细设计和软件的详细设计。了解的越深刻对问题的定位越有帮助。

这里就涉及到一个最大的问题,也就是刚出校门很多学生对自己的憧憬:要软件硬件都通。这个目标向大家坦白,我也憧憬过。当我现在招聘学生的时候,甚至有些工作经验的人都说出这个目标。这个目标不是错,只是计算机软件和硬件这两大块都是非常广袤的领域,说通,目标的确有点点高了。

所以在这里,我常常给同事的建议是:

如果你的专业是电子类的,可以把精力主要的放在硬件上,软件只作为兼顾,学习一些C语言的基本知识,写一些小型代码,不宜把目标放在全职编程上。如果是计算机专业的,我建议把主要精力放在软件上,学会看懂原理图,了解一些电路的大致功能就可以了。两方面往深里面去都是无底洞。全通的话,的确要些大本事的。这里只是我的建议。理由也很简单,人都是经营自己的长处,规避自己的短处。

曾经有一个朋友问我嵌入式问题,想成为软硬都通的人。想给自己的职业规划一下,我大致的问他几个软件问题,比如说,算法的设计思路,排序算法的种类,搜索算法的种类,操作系统的本质,互斥多线程等等基本问题,回答毫无头绪。然而问起电路的知识,KCL,KVL,竞争冒险,运放的分析方法,信号与系统的基本知识,对答如流。

这种人去主攻软件,是资源的极大的浪费。等你软件入门了,硬件方面的设计知识也忘得差不多了。然后面临事业更上一层楼的压力,软件需要学习的东西比较多,基础理论差,学什么都吃力。硬件方面缺乏调试和经验/的积累,也很难有所作为。若干年后只能做配角,精力的下降,事业上的失意,只能让自己沦为屌丝。

这里又提到项目经理,技术总监这样的技术管理职位,不是说你技术好就可以做这个职位了。首先各个公司这两种职位都是有所区别的,但一般来讲都是偏向管理的。既然是管理,不能用别人管你的时候,你得到的体验再去管别人,要学习管理理论。

诸如PMBOK,CMMI,好好看看行业内优秀的工程实践,好好看看项目目标如何对齐。这些理论知识都是指导我们实践的最有效的手段。不要寄希望自己是牛人中的牛人,可以发明新的理论。

请大家看看历史,每个行业都有个开山鼻祖,那时候水平还比较低,然后发展一段时间后有一个将这个行业壮大的牛人。这个并不仅仅是因为那个牛人牛,也有因为这个行业积累到一定的时间,可以出这样的一个牛人将这个行业进一步壮大。这是事物发展的客观规律,我们必须要尊重。

但在中国,技术人是一类特殊的人群,他们因为技术而傲,对于不懂技术的领导,私下缺乏应有的尊重和诚服。容易造成政令不通。项目经理,总监更应有好的技术,以便得到下属最大的认同。

所以这第三点,要综合自己的专业情况,知识背景,合理的选择自己的职业目标。在嵌入式领域找到自己的发展空间。


04



学习嵌入式的方法多种多样。但最好的办法,还是求助于计算机,计算机是自己的第一老师,人都是第二位的。不要指望通过牛人,你就可以变成牛人。

学习知识,实际上是自己对知识建立理解的过程,不要第一时间去听大牛的讲解。

首先要有自己的理解,即使是错的,我认错。再通过大牛的讲解进一步的学习,纠正调整自己,可以事半功倍。如果没有自己的思考,自己也只是个鹦鹉学舌的人,缺乏创造力和独立面对问题的能力。久而久之是非常可怕的。

不要想通过几个月培训机构的学习,就能像屌丝吃了全能丸,拿到高薪。如果真是这样,这世界里有时间有钱的人多了,他们为什么不能通过这种办法变得更有能力,拿到更高的收入?高薪背后意味着很多内涵和外延,这些内涵和外延不仅仅包括点点知识和技术,还有做事的态度方法,面对问题的坚韧……太多了。

一句话,在自己想把自己变得更强,首先寻求的是能力的全方面的提升,不光光是点点技术。所以,面对这种问题一定要踏实。

你要求的薪水高,公司对你的期望也高;每个公司都有特殊的东西,那不是一两天就能学会的,也不是技术能替代的。

自己把调子提得那么高,要么惨淡收场,要么勉强完成任务;要么惊艳四座。自己看着办。

想反,薪水提得不高不低,给自己一点点时间,企业对你的期望低,能做出点成绩,反倒容易让别人刮目相看,利于自己的长期发展。这里还是有许多学问的。自己的人生,一定要谨慎经营。

学习嵌入式一定要勤奋,编程是一种体力+脑力的活。熟能生巧,这是常识。十万行的编程量是基础。

写一些复杂的算法,如A*,树等等算法;
再写一些计算机图形学方面的算法,以应用软件为目标,把自己的编程量撑到十万行。

这样的强度能保证自己对所用的语言有一个非常的熟练程度,也能对计算机的算法设计和数据结构有个深刻的认识,同时对操作系统的API也能略微熟悉。若能坚持这种训练到达三十万行。那么就会更加的优秀。可为进一步的行业发展,打下坚实的基础。


推荐阅读:点击下方图片即可跳转阅


苏联的三进制电脑,为什么被二进制干掉了?


做项目,如何选单片机?


C语言,一把菜刀。


我有单片机,你有酒吗?



-END-
我是张巧龙,一名教电子的大学老师,欢迎关注!
大鱼机器人 一个专注于机器人技术,单片机,嵌入式系统,智能家居,智能设备,PCB设计,IT最新动态的自媒体。此外,还有海量学习资源等你来领取。作者:张巧龙,个人微信号:well_xiaolong。欢迎关注公众号,名称:大鱼机器人,公众号ID:All_best_xiaolong
评论 (0)
  • 一、汽车智能化浪潮下的蓝牙技术革新随着智能网联汽车的快速发展,车载信息娱乐系统(IVI)正从单一的驾驶辅助向“第三生活空间”转型。蓝牙技术作为车内无线连接的核心载体,承担着音频传输、设备互联、数据交互等关键任务。然而,传统方案中MCU需集成蓝牙协议栈,开发周期长、成本高,且功能扩展性受限。WT2605C蓝牙语音芯片应势而生,以双模蓝牙SOC架构重新定义车用蓝牙系统的开发模式,通过“多、快、好、省”四大核心价值,助力车企快速打造高性价比的智能座舱交互方案。二、WT2605C芯片的四大核心优势1.
    广州唯创电子 2025-04-17 08:38 17浏览
  •   无人机蜂群电磁作战仿真系统软件,是专门用于模拟、验证无人机蜂群在电磁作战环境中协同、干扰、通信以及对抗等能力的工具。下面从功能需求、技术架构、典型功能模块、发展趋势及应用场景等方面展开介绍:   应用案例   目前,已有多个无人机蜂群电磁作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机蜂群电磁作战仿真系统。这些成功案例为无人机蜂群电磁作战仿真系统的推广和应用提供了有力支持。   功能需求   电磁环境建模:模拟构建复杂多样的电磁环境,涵盖各类电磁干扰源与
    华盛恒辉l58ll334744 2025-04-17 16:49 38浏览
  •   无人机电磁兼容模拟训练系统软件:全方位剖析   一、系统概述   北京华盛恒辉无人机电磁兼容模拟训练系统软件,专为满足无人机于复杂电磁环境下的运行需求而打造,是一款专业训练工具。其核心功能是模拟无人机在电磁干扰(EMI)与电磁敏感度(EMS)环境里的运行状况,助力用户评估无人机电磁兼容性能,增强其在复杂电磁场景中的适应水平。   应用案例   目前,已有多个无人机电磁兼容模拟训练系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁兼容模拟训练系统。这些成功案例为
    华盛恒辉l58ll334744 2025-04-17 14:52 23浏览
  • 一、行业背景与需求智能门锁作为智能家居的核心入口,正从单一安防工具向多场景交互终端演进。随着消费者对便捷性、安全性需求的提升,行业竞争已从基础功能转向成本优化与智能化整合。传统门锁后板方案依赖多颗独立芯片(如MCU、电机驱动、通信模块、语音模块等),导致硬件复杂、功耗高、开发周期长,且成本压力显著。如何通过高集成度方案降低成本、提升功能扩展性,成为厂商破局关键。WTVXXX-32N语音芯片通过“单芯片多任务”设计,将语音播报、电机驱动、通信协议解析、传感器检测等功能整合于一体,为智能门锁后板提供
    广州唯创电子 2025-04-18 09:04 59浏览
  • 自动驾驶技术的飞速发展,正在重新定义未来出行的边界。从感知到决策,从规划到控制,每一个环节都离不开海量、精准的高质量数据支撑。然而,随着传感器数量的增加和数据规模的指数级增长,行业正面临一系列挑战:多源传感器数据的时间同步难题、复杂数据格式的适配、测量技术的灵活性不足、设备集成周期冗长等,这些问题正成为自动驾驶研发与测试的“隐形瓶颈”。基于技术积累与行业洞察,本文分享一套创新的ADAS时空融合数据采集方案。通过硬件与软件的深度协同优化,能够很好地解决数据采集中的核心痛点,还为自动驾驶研发提供了高
    康谋 2025-04-17 09:54 23浏览
  • 【摘要/前言】4月春日花正好,Electronica就在浪漫春日里,盛大启幕。2025年4月15-17日,慕尼黑上海电子展于上海新国际博览中心成功举办。伴随着AI、新能源汽车、半导体的热潮,今年的Electronica盛况空前。请跟随Samtec的视角,感受精彩时刻!【 Samtec展台:老虎的朋友圈技术派对】借天时、占地利、聚人和,Samtec 展台人气爆棚!每年展会与大家相聚,总能收获温暖与动力~Samtec展台位于W3展馆716展位,新老朋友相聚于此,俨然一场线下技术派对!前沿D
    电子资讯报 2025-04-17 11:38 29浏览
  •   北京华盛恒辉无人机电磁兼容模拟训练系统软件是专门用于模拟与分析无人机在复杂电磁环境中电磁兼容性(EMC)表现的软件工具。借助仿真技术,它能帮助用户评估无人机在电磁干扰下的性能,优化电磁兼容设计,保障无人机在复杂电磁环境中稳定运行。   应用案例   目前,已有多个无人机电磁兼容模拟训练系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁兼容模拟训练系统。这些成功案例为无人机电磁兼容模拟训练系统的推广和应用提供了有力支持。   系统功能   电磁环境建模:支持三维
    华盛恒辉l58ll334744 2025-04-17 15:10 20浏览
  •   无人机电磁环境效应仿真系统:深度剖析   一、系统概述   无人机电磁环境效应仿真系统,专为无人机在复杂电磁环境下的性能评估及抗干扰能力训练打造。借助高精度仿真技术,它模拟无人机在各类电磁干扰场景中的运行状态,为研发、测试与训练工作提供有力支撑。   应用案例   目前,已有多个无人机电磁环境效应仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机电磁环境效应仿真系统。这些成功案例为无人机电磁环境效应仿真系统的推广和应用提供了有力支持。   二、系统功能  
    华盛恒辉l58ll334744 2025-04-17 15:51 38浏览
  • 一、行业背景与产品需求随着社会对清洁效率与用户体验要求的提升,洗地机行业迎来快速发展期。面对激烈的市场竞争,产品差异化成为制胜关键。传统洗地机普遍存在两大痛点:操作交互单一化与成本控制困境。尤其对于老年用户群体,缺乏语音状态提示和警示功能,导致操作门槛升高;而硬件方案中MCU与语音功能的耦合设计,则增加了系统复杂度与开发成本。WT588F/WTV/WT2003系列语音芯片的引入,为洗地机行业提供了低成本、高集成、强扩展性的解决方案,既满足用户友好性需求,又助力厂商实现硬件架构优化。二、方案核心亮
    广州唯创电子 2025-04-17 08:22 22浏览
  • 一、行业背景与需求随着智能化技术的快速发展和用户对便捷性需求的提升,电动车行业正经历从传统机械控制向智能交互的转型。传统电动车依赖物理钥匙、遥控器和独立防盗装置,存在操作繁琐、功能单一、交互性差等问题。用户期待通过手机等智能终端实现远程控制、实时数据监控及个性化交互体验。为此,将蓝牙语音芯片集成至电动车中控系统,成为推动智能化升级的关键技术路径。二、方案概述本方案通过在电动车中控系统中集成WT2605C蓝牙语音芯片,构建一套低成本、高兼容性的智能交互平台,实现以下核心功能:手机互联控制:支持蓝牙
    广州唯创电子 2025-04-18 08:33 63浏览
  • 1. 在Ubuntu官网下载Ubuntu server  20.04版本https://releases.ubuntu.com/20.04.6/2. 在vmware下安装Ubuntu3. 改Ubuntu静态IP$ sudo vi /etc/netplan/00-installer-config.yaml# This is the network config written by 'subiquity'network:  renderer: networkd&nbs
    二月半 2025-04-17 16:27 38浏览
  • 现阶段,Zigbee、Z-Wave、Thread、Wi-Fi与蓝牙等多种通信协议在智能家居行业中已得到广泛应用,但协议间互不兼容的通信问题仍在凸显。由于各协议自成体系、彼此割据,智能家居市场被迫催生出大量桥接器、集线器及兼容性软件以在不同生态的设备间构建通信桥梁,而这种现象不仅增加了智能家居厂商的研发成本与时间投入,还严重削减了终端用户的使用体验。为应对智能家居的生态割裂现象,家居厂商需为不同通信协议重复开发适配方案,而消费者则需面对设备入网流程繁琐、跨品牌功能阉割及兼容隐患等现实困境。在此背景
    华普微HOPERF 2025-04-17 17:53 38浏览
  • 置信区间反映的是“样本均值”这个统计量的不确定性,因此使用的是标准误(standard error),而不是直接用样本标准差(standard deviation)。标准误体现的是均值的波动程度,而样本标准差体现的是个体数据的波动程度,两者并非一回事,就如下图所显示的一样。下面优思学院会一步一步解释清楚:一、标准差和标准误,究竟差在哪?很多同学对“标准差”和“标准误”这两个概念傻傻分不清楚,但其实差别明显:标准差(Standard Deviation,σ或s):是衡量单个数据点相对于平均值波动的
    优思学院 2025-04-17 13:59 17浏览
  •   无人机蜂群电磁作战仿真系统全解析   一、系统概述   无人机蜂群电磁作战仿真系统是专业的仿真平台,用于模拟无人机蜂群在复杂电磁环境中的作战行为与性能。它构建虚拟电磁环境,模拟无人机蜂群执行任务时可能遇到的电磁干扰与攻击,评估作战效能和抗干扰能力,为其设计、优化及实战应用提供科学依据。   应用案例   目前,已有多个无人机蜂群电磁作战仿真系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润无人机蜂群电磁作战仿真系统。这些成功案例为无人机蜂群电磁作战仿真系统的推广和应用提
    华盛恒辉l58ll334744 2025-04-17 16:29 37浏览
  • 近日,全球6G技术与产业生态大会(简称“全球6G技术大会”)在南京召开。紫光展锐应邀出席“空天地一体化与数字低空”平行论坛,并从6G通信、感知、定位等多方面分享了紫光展锐在6G前沿科技领域的创新理念及在空天地一体化技术方面的研发探索情况。全球6G技术大会是6G领域覆盖广泛、内容全面的国际会议。今年大会以“共筑创新 同享未来”为主题,聚焦6G愿景与关键技术、安全可信、绿色可持续发展等前沿主题,汇聚国内外24家企业、百余名国际知名高校与科研代表共同商讨如何推动全行业6G标准共识形成。6G迈入关键期,
    紫光展锐 2025-04-17 18:55 106浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦