在嵌入式生涯上出现的疑惑!

刚接触嵌入式的朋友,都会想到如何学习嵌入式,嵌入式有什么用,如何在这个行业站稳脚跟,下面凌阳教育带您见识一下。

嵌入式也被成为嵌入式系统,其是为了应用高度定制软件和硬件的计算机系统,满足一系列的特定应用需求。国内普遍嵌入式工程师认为:嵌入式系统以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统,是用于控制、监视或者辅助操作机器和设备的装置。总的来说,嵌入式系统首先是计算机系统。

我们不能忽略这个问题。既然是计算机系统,那么学习嵌入式,计算机的基本理论知识我们要不要学习呢?比如说,编译原理、数据结构、操作系统、离散数学、计算机系统体系结构。答案相信大家都是肯定的。现在很多人都意识不到这一点,在国内高校中没有设嵌入式专业,因此很多学习嵌入式的人都是出自电子类专业或者自动控制类专业,这就导致理论上会有缺憾。如果要问,排序算法有几种,恐怕只知道冒泡和希尔,不知道堆排序、快速排序、基数链式排序这些算法,更不知道还有内部排序和外部排序之分。查找算法只知道个基本的2分查找,对于树的查找算法一无所知,怎么说呢?

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

比如说,设计一个普通的微波炉控制系统。说实话,这个代码应该是非常简单的。但是,作为精细的设计者,不仅仅要考虑需求是否完成,还用从整个程序的空间杂度、时间杂度上去分析,并降低整个代码的复杂度,从而进一步降低软件结构、算法实现对处理器的要求,达到对成本的节约。一般来说,成本不光是BOM成本,还包括人力成本、运营成本、开发成本、维护成本等。任何软件系统都要测试,然而一份代码要怎么才能比较好测试呢?这个问题并不好回答。

尤其是嵌入式代码,测试方法虽然沿用了PC机的一些做法,但是仍然有许多工程限制,做起来难度颇高。马克思说过,一切的节约可归结为时间的节约。代码结构简单,空间杂度小,那么也意味着更小的工程量,更短的测试时间,更稳定的产品质量。如果是个理论性稍微强点的产品,汽车导航系统、地图的路径搜索算法、定位位置的搜索,以及地图的分类加载优化等等,都不是太容易就能做好的,更需要坚实的理论基础。许多刚出学校的大学生朋友们,没出校门就把相关的知识还给老师了。其实,我经常问公司新来的同事,设计算法的思路是什么?这个是从计算机的角度去考虑一个问题的解决办法。很多新人是计算机毕业的都无法完整的回答我的问题,失望之余,更想说的是:经验很重要!但是比经验更重要的是知识,比知识更重要的是方法。在理论的指导下去积累经验,减少从经验下获取知识,减少体验式学习这种状态,养成系统的认识分析问题的方法,理论联系实践的方法,实践检验真理的方法,经验必须能被理论解释的方法。

我们还是来看嵌入式的定义,这个定义是相对的概念。什么计算机系统不是“高度定制的软硬件计算机系统”呢?PC机,不严谨的说是这样。嵌入式在工程上有非常多的特点,相对于PC系统说,如果把PC系统看成一个完全的标准的“大嵌入式系统”,我们用大鹏鸟来形容它,那么,像“蜂鸟”这样的最小的小鸟,像“麻雀”这样的常见系统,也就不难理解了。从技术上讲,PC系统的知识量,难度都要比一般的嵌入式高出N个数量级。但由于PC系统在计算机历史上发展得比较早,因而,其智力投入、完善性、应用的广泛性重要性是别的系统平台无法比拟的。然而,正因为发展了这么久,其平台的封装性、稳定性是非常高的。操作系统级,支撑软件级,应用软件级,特别是应用软件级,一些与平台无关的软件,基本上很少涉及操作系统的知识,以及一些内部的原理。如浏览器里的Javascript开发,基本上不涉及操作系统的知识,只是受不同的浏览器的影响;又如Java,只涉及较少的系统平台的知识;就算是C/C++语言,开发应用程序,也就是一套API的应用,涉及的操作系统的东西也只是冰山一角。由此可见,PC平台的优良封装,极大地简化了问题的复杂度,使开发者和应用者能把主要精力放在自己的业务上,提高开发效率。

嵌入式领域就没有这么幸运了,其为应用的高度定制,造成了以效率、应用为优先的特点。封装层次太多必然对效率有所伤害,同时规模变大,测试变得复杂,开发周期变长,所以嵌入式的层次结构相对于PC系统,边界没那么清晰,封装考虑的问题没有那么全面。完成同样的一个工作,需要了解的内容更多,才能做得更好。如果一定要拿嵌入式和PC系统比,个人觉得,PC系统的开发有时候比嵌入式系统还要难。由于封装的比较完善,PC开发的门槛比较低,但是做好,做精通,做全面,比嵌入式难多了。嵌入式因为一开始就要了解相当规模的东西,所以入门的门槛变得比较高。纵观这些东西,其实PC系统和嵌入式系统很大一部分都是重叠的。

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

首先嵌入式的调试手段较为单一。相对于PC平台,稳定性和可靠性都要打折扣,这里不仅包括调试平台的问题,也包括一些调试手段对代码的影响,诸如改变代码的运行时间,改变了代码的动态行为(频度,触发时差等)。做嵌入式对系统要有一个更加全面的认识。这里包括从设计方法思路,设计目标要求,硬件的详细设计和软件的详细设计。了解的越深刻对问题的定位越有帮助。这里就涉及到一个最大的问题,也就是刚出校门很多学生对自己的憧憬:要软件硬件都通。

这个目标向大家坦白,我也憧憬过。当我现在招聘学生的时候,甚至有些工作经验的人都说出这个目标。这个目标不是错,只是计算机软件和硬件这两大块都是非常广袤的领域,说通,目标的确有点高了。所以在这里,我常常给同事的建议是:如果你的专业是电子类的,可以把精力主要的放在硬件上,软件只作为兼顾,学习一些C语言的基本知识,写一些小型代码,不宜把目标放在全职编程上。如果是计算机专业的,我建议把主要精力放在软件上,学会看懂原理图,了解一些电路的大致功能就可以了。两方面往深里面去都是无底洞。全通的话,的确要些大本事的。这里只是我的建议,理由也很简单,人都是经营自己的长处,规避自己的短处。曾经有一个朋友问我嵌入式问题,想成为软硬都通的人。想给自己的职业规划一下,我大致问他几个软件问题,比如说,算法的设计思路,排序算法的种类,搜索算法的种类,操作系统的本质,互斥多线程等等基本问题,回答毫无头绪。然而问起电路的知识,KCL,KVL,竞争冒险,运放的分析方法,信号与系统的基本知识,对答如流。这种人去主攻软件,是资源的极大的浪费。等你软件入门了,硬件方面的设计知识也忘得差不多了。然后面临事业更上一层楼的压力,软件需要学习的东西比较多,基础理论差,学什么都吃力。硬件方面缺乏调试和经验的积累,也很难有所作为,若干年后只能做配角,精力的下降,事业上的失意,只能让自己沦为屌丝。

这里又提到项目经理、技术总监这样的技术管理职位,不是说你技术好就可以做这个职位了,首先各个公司这两种职位都是有所区别的,但一般来讲都是偏向管理的。既然是管理,不能用别人管你的时候,你得到的体验再去管别人,要学习管理理论。诸如PMBOK,CMMI,好好看看行业内优秀的工程实践,好好看看项目目标如何对齐,这些理论知识都是指导我们实践的最有效的手段。

不要寄希望自己是牛人中的牛人,可以发明新的理论。请大家看看历史,每个行业都有个开山鼻祖,那时候水平还比较低,然后发展一段时间后有一个将这个行业壮大的牛人,这个并不仅仅是因为那个牛人牛,也有因为这个行业积累到一定的时间,可以出这样的一个牛人将这个行业进一步壮大。这是事物发展的客观规律,我们必须要尊重。但在中国,技术人是一类特殊的人群,他们因为技术而傲,对于不懂技术的领导,私下缺乏应有的尊重和诚服,容易造成政令不通。项目经理,总监更应有好的技术,以便得到下属最大的认同。

学习嵌入式的方法多种多样,但最好的办法还是求助于计算机,计算机是自己的第一老师,人都是第二位的。不要指望通过牛人,你就可以变成牛人。学习知识,实际上是自己对知识建立理解的过程,不要第一时间去听大牛的讲解,首先要有自己的理解,即使是错的,我认错,再通过大牛的讲解进一步的学习,纠正调整自己,可以事半功倍。如果没有自己的思考,自己也只是个鹦鹉学舌的人,缺乏创造力和独立面对问题的能力,久而久之是非常可怕的。

俗话说学无止境的,嵌入式也是一样,若想拿高薪,就要不断的努力学习。高薪背后意味着很多内涵和外延,这些内涵和外延不仅仅包括点点知识和技术,还有做事的态度方法,面对问题的坚韧……太多了。一句话,在自己想把自己变得更强,首先寻求的是能力的全方面的提升,不光光是点技术。所以,面对这种问题一定要踏实。你要求的薪水高,公司对你的期望也高;每个公司都有特殊的东西,那不是一两天就能学会的,也不是技术能替代的。自己把调子提得那么高,要么惨淡收场,要么勉强完成任务,要么惊艳四座,自己看着办。相反,薪水提得不高不低,给自己一点点时间,企业对你的期望低,能做出点成绩,反倒容易让别人刮目相看,利于自己的长期发展。这里还是有许多学问的,自己的人生,一定要谨慎经营。

学习嵌入式一定要勤奋,编程是一种体力+脑力的活。熟能生巧,这是常识。十万行的编程量是基础,写一些复杂的算法,如A*,树等等算法;再写一些计算机图形学方面的算法,以应用软件为目标,把自己的编程量撑到十万行。这样的强度能保证自己对所用的语言有一个非常的熟练程度,也能对计算机的算法设计和数据结构有个深刻的认识,同时对操作系统的API也能略微熟悉。若能坚持这种训练到达三十万行,那么就会更加优秀,可为进一步的行业发展,打下坚实的基础。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容