软考之嵌入式系统设计师发展前景如何?值得考吗?

嵌入式系统设计师发展前景如何?值得考吗?很多人表示嵌入式系统设计师这个证书没必要考是个坑,下面看看程序员是怎么看待这个问题的。是不是不得不说这个行业真的是个坑吗?

 

 

软硬通吃的程序猿

 

 

我是做DSP的,可以说我一直再做DSP,我刚开始做DSP的时候,完全因为我比较喜欢数字信号处理的课程(也许很多人认为它很不友好,长得很难看,公式复杂,但事实上它却真的是很可爱),到后来我机缘巧合地接触了专用的DSP芯片,也了解到DSP不仅仅可以做数字信号处理算法,还可以有控制,通信等等算法,从这这里,仅仅有C51基础的我就开始了漫漫的嵌入式之路,路途艰辛而充满乐趣。在此之前,我还有一段Java情节,做了一些残缺的“教务系统网页”,做的好差,这里就不说了。值得一提的是我现在做Java的同学,有转安卓的,有去做网安的,工资确实很多,可我当初没去坚持,想起那个失败的教务系统网页版,真是噩梦。我觉得选择适合自己的才是最重要的!

 

 

DSP在嵌入式这个大饼中不是瓜分它的,而应该是它组成的材料,就像一个做一道菜,里边要有油,要有盐一样,ARM也做着这样的角色,它们都是嵌入式重要的组成部分,各司其职,各行其是。市面上一提到嵌入式,默认地认为嵌入式Linux啊,ARM呀(你们肯定深有体会),实际上不该这样划分的。

 

在这里我要说一下ARM和DSP的区别,首先ARM,如果脱离片上控制,而单单去进行嵌入系统的操作,(M4和A8,A9核区别)所有的精髓应该全部聚集在系统的配置上,从交叉环境配置到对内核把握,做boot,再到写一个驱动程序(这个难一些),到把系统嵌入到芯片里,还有应用程序开发,你会体验到设计师的自豪感,也好像小时候拼装机器人,然后加上电机看它行走,这是一个不错的感觉,ARM的每一步的精妙都有着一种的味道。

 

它所实现的是具体功能,例如一个KTV的点歌台,要有搜索歌曲,点歌,切歌的功能,学校的饭卡圈存机要有一个良好的界面,甚至智能家居吸尘器,还有工业控制台,现在还能嵌安卓,真的很厉害!它的核心面向的是对事件和任务的处理,按照普京的方法,抓主要矛盾, ARM的主要任务服务于功能,从需求出发,然后do it!然而做DSP呢,它是什么呢?

 

DSP从广义上来说也属于嵌入式的范畴,都是为了自动化来除去人工的,我做DSP最大的感受就是,算法是核心,到最后实际上就是在演绎一个算法,(MATLAB的实验比在CCS上多),然而算法唯一最有力的工具是数学。我本科时候学的DSP,但常常因为数学的关卡而到达了一个极限,一些高复杂的算法涉及模糊理论,人工神经等等非线性问题的时候我真的素手无策,编不出来,理解不了过程,于是我发现了问题所在,所以毕业一年后毅然决然的进入到备考研究生的进程中。

 

经过几年的实践,是这样,我更肯定数学是DSP最根本的核心,也就在这里完完全全出现了和ARM的分水岭。我前期的DSP学习停留于和单片机一样的过程中,了解外设(SPI,I2C,串口),片上的内存,io资源等等,还有如何编程,如何熟练控制协调这些外设,中断怎么触发,触发的时机条件等等。致力于和DSP良好的沟通的同时,我也摸索到了和任意MCU打交道的规律,这东西真是一通百通的。到此,抓主要矛盾,那么DSP的主要矛盾就是数学了,比如做了最基础的控制学算法,PID,比例,积分,微分,要架到DSP上,然后输出PWM控制电机,基于我对DSP的外设掌握,设计系统(涉及控制学知识),翻译(编成C), 然后调试,每一步都很重要,第一步对于数学和专业领域知识的掌握,第二步就要有好的编程能力。。

 

你也看到了,一个项目拉开帷幕,唱的第一出就是数学戏,所以,我身边无数数学专业的,都开始在算法上大显神通,(数学专业的只能当老师,这系误解)你信不信,某某地图的路线规划算法,就是数学出身人做的,当然,他选择的是转向纯软的方向(除此之外一些数学专业的转向了金融方向,因为金融也要求数学深厚的功底)。

 

说到这里,你知道了吧。ARM的主要矛盾是任务处理,DSP的主要矛盾是,,(我也找不到一个词,只可意会不可言传 )数据处理吧。。

 

 

我第一个DSP项目是某外企的一款服务器的电源处理器的开发,完全利用一片TI公司一款C2000系列的DSP,用PMBus协议和ARM通信。

 

DSP与ARM两个部分几乎包揽了整个设备的嵌入式这一块。我的任务是控制电源中各种参数,要运算,要根据控制做出反应,还要低功耗启动风扇降温,等等。

 

而我大部分的工程除了协议上的数据交换和外设的控制,更多精力还是放在了算法上了,我恶补了好多好多专业知识,而专业知识常常公式推导,我测算性能,然后黑盒化,最终用C完完整整的编出来,协调外设架到DSP,说到底,就是完全靠你将这个理论的数学推导经过C语言翻译解释给DSP,让它去执行。

 

而任务化的ARM那一块,他们需要的是建立起一个友好的人机界面,一个按钮,按钮下的事件,系统设置,良好的接口,对Linux系统的阉割,同时要做一个完全配套这个系统的应用程序,还要作为PMBus协议栈的主设备和DSP沟通,而这里的工作量的确不小,可能在DSP和ARM中间有浅浅的相同之处,但ARM主要矛盾还是集中在功能的构造上,DSP的主要矛盾是面向数据的处理。 (可以想象电脑的游戏,背后数据处理和前台控制)

 

 

第二次跨度比较大,因为个人的原因换了一份工作,这一次算是真真正正DSP是主力了。因为公司最核心的最值钱的就是算法。自然不用说了,从数字信号处理,还有关于它的上层学科,通通作为理论基础。告别了C2000系列的控制时代。

 

进入到C6000的高性能处理时代。我也不得不感叹,DSP的世界真的如此精彩,游走于各个领域各个学科,只要能用数学来表达,就能被DSP实现。现在服务于各个行业的电子,越来越趋向于智能化了,连吸尘器都追求智能控制,既然是智能,背后肯定有复杂度极高的算法来支撑,这可能是我们用数字来衡量理解世界必须要遵守的准则,也就是越智能的系统算法会越复杂,就要求运算速度,效率越高,(时滞太长就出事儿了,如无人机智能避障,运算太慢撞上了,白费了!)

 

所以DSP优势体现在这里。人工智能,模糊控制,神经网络这些和数学息息相关的理论需要你来理解,灵活的穿插在项目中,需要你来解释给DSP听。工业离不开自动化,消费者也越来越依赖。ARM这座大山和DSP不会成为敌人的,它们会相辅相成。(例子就是,TI的达芬奇平台,ARM+DSP,补足DSP控制缺陷。)

 

 

最后想说下学习过程。个人觉得DSP对个人能力要求蛮高的,因为这里涉及数学功底,这里不需要你能创造什么伟大定理,至少也应该看明白,会用,有基础,微积分自然不用说(也就是考研考的高数),还有其他相关数学理论,做信号的概率,随机过程肯定涉及,但要明确我们不是数学家,我们要用而已,适可而止即可。理论是用数学跟我们交流的,我们还要用计算机语言跟计算机交流,我们是桥梁!对于硬件,或多或少要掌握PCB工艺知识,我记得我那时候一个芯片电源没加电容滤波,结果程序不好使,调了好久,加大了延时才好用,我觉得在硬件上我们不必那么厉害,毕竟人的精力有限,但我们也得懂,不然怎么有底气和硬件工程师吵架呢?还有工具C和C++掌握的,MATLAB就不用说了。

 

 

对了还有数据结构特别重要,除此之外,你的项目涉及什么理论就要翻那个知识,DSP操控也得会,,,oh,真的好多,我承认我是学霸了。。。如果你还在上学,记得要注重积累,不要着急,你既然选择了嵌入式的行业,那么后面的一生都在学习。

 

 

对于ARM,我就不说了。 (我也在学,不想误导大家)。我不太懂FPGA,随口提几句,第一次接触FPGA是学习数电的时候,老师把一个全加器74LS283设计的流水灯的数字电路图编译下载到FPGA中,然后真的实现了功能,老师说,这个逻辑关系还可以用语言来编,它肯定重在逻辑设计,灵活的数字电路。

 

第二次是在公司有人做协议转换,两个MCU之间协议不匹配,FPGA作为枢纽,从这两点来看,它应该归类于数字电路的范畴,就好比我们可以用C51设计一个一个流水灯,也可以用74LS283芯片和与非门的组合来设计,只不过在FPGA上换成语言描述的方式罢了。(完全可以当废话)

 

 

再有就说下就业,根据在国内我同学的情况。我觉得工作挺好找,一些中小型企业需要量也是有的,个别大公司会出来招,得赶时候,一般年后找,好企业多点儿,我第一家公司是在人才热线找的,至于基友b至今为什么这样,我也不清楚,那些小项目是熟练学习的过程,可能欠缺整体的把握和忽视了基础(他数据结构都没弄清楚,多么重要呀),也有可能就是他学生时代投入了太多,不想放弃自己所学,所以才僵持着!去公司DSP的待遇还不错,工资其他工程师也差不多,但我要说奖!金!才!是!重!点!

 

不知道其他同行有没有体会,我们的价值,学的这个东西的价值,往往不是工资来体现,而是奖金。可以说一年下来奖金比工资多很多,但前提是你得有产出。在DSP这个行业里边,工资普遍写的就那样,但做出来奖金不会少的,因为你付出多少,你自己心里清楚,公司也很清楚。

 

 

对于一些人的误解,一个极端说工业控制能饿死,你信吗?反正我不信。这里不谈社会上工业重要性了,还有说嵌入式正在消亡的,(太深奥了。是在消亡吗?我是做技术的,只能谈行业内,对行业的整体把握,我不敢说) 另一个极端,DSP确实是尖端领域的应用,比如,我专业是信息与通信工程的,3G网的交织算法就用DSP算的,同样的,你认为4G网络能离开DSP。。

 

而且在卫星上,国家生产不了DSP芯片,最核心的东西米国还不让用,国家也不放心用,所以,卫星的质量功能和米国没法比,哎,说到这不得不感叹米国是科技大国,就算在TI上下载软件,都要协议审核,进口买个芯片,都要东问西问的,还要保证不能用在军事,生物上。。。。。反正,尖端的地方离不开它,但问题是,不是谁都能做,爱情不是你想买就能买,DSP也一样。。。这才是真的,这才是真相。并且DSP成本在那里呢,一片芯片的价格就算是企业有渠道,也便宜不到哪里去,企业不会轻易用,要用这东西肯定。。。不过越来越多的嵌入式设备开始集成DSP,因为他们在进步嘛。。

 

 

还需要明确一下学各个嵌入式芯片的立场。我们只不过通过嵌入式的一种产物来进入这个行业,没有伯仲之分,方法都是相通的,不要看别人学了一个市场好的而心急,也不要因为自己学的东西工资高而自鸣得意。

 

学习阶段,学透一个,摸准套路(学过DSP肯定很快上手STM32和单片机之类的),找到规律,培养好职业敏感度(这个比较抽象,类似于读英语的语感,做题的题感,比如DSP出了问题,你瞬间能感觉哪里错了)才是最该的,没谁规定学DSP的不能学ARM,重要的是对于这个平台的掌握,这完全依据个人能力了!也许有一天我老板让我学ARM做嵌入式linux,这完全有可能的,但他不会那么傻吧,让我现学现卖,花钱供我读,都是花钱何不找一个职业的,所以我一直做DSP,一直压榨我。。

 

但也不排除这样的傻老板。。而且我觉得一些人应该仅仅解决了普遍问题(了解皮毛),而没有触及到主要矛盾(深层次地),所以才出现了种种的误解,没有那种拨开迷雾见山云感觉,多是一团浆糊。我们要向普京学习,对待问题要抓主要矛盾。

 

我也正在努力研习ARM的知识,不断进行充电,为TI的达芬奇平台(ARM+DSP)做准备。学习也讲究机缘,一方面我们得学,另一方面,我们要不断的去实践,自发的去寻找,哪一天机会来了,静下心来去研究,一定一定是有收获的!这些年我都是基于对嵌入式的兴趣,可以不吃饭的研究,可以不睡觉的研究,我对它的感情很浓厚,它占我生活很大一部分,相反,如果我仅仅为了谋生和金钱,我觉得那一定很痛苦,一步一个脚印儿的走,适合自己才最重要,我们一起加油吧!!

 

 

总结点经验分享吧:

 

 

1、无论你学的是底层相关的还是上层的

 

 

建议:一定要C语言 数据结构 面向对象(C++ 或java) 操作系统

 

 

有时间多看看 程序员面试宝典 刷leetcode, 看看计算机网络 计算机体系结构 TCP/IP 编译原理等等, 什么汇编、bootloader等那些多么多么神的东西,别看了,没几个公司对这个感兴趣,还有模电 运放那些玩意,除非你有特别牛的人带,否则真是有点呵呵,国内真没几个公司搞。。

 

 

你现在可能还没想好要转行,以后真的说不准啊... 基友面过几个公司的FPGA工程师 都在问这些

2、很多人说 EE转CS很普遍,但CS转EE很少,是因为EE门槛高。。还有人说 数学物理生物 转金融工程很普遍,也是因为数学物理门槛高。。。。供参考吧。

 

 

3、EE转CS是全世界的求职狗都在干的事,不是知乎上个别人。

 

 

除非是挚爱或者是情怀,CS 金融待遇高是不争的事实,(CS不单只互联网),所以如果你的得坐标是北上广深,你的目标是早日实现买房买车 学区房、早日经济*,CS和金融是不二的选择。。。

 

 

4、可怜之人必有可恨之处,热门方向必然有热门的原因,别跟钱过不去....

 

 

当然了,360行 行行出状元,如果你在EE已经有了很深的积累,做了好多年嵌入式开发了,那还是具体情况具体分析吧......

 

编后语:

 

嵌入式系统设计师的一天考试分为上午和下午部分,两部分的考试方式、试题难度、考点分布和复习方法都是不同的。在复习的过程中,你要记住:你不是要考一个很高的分数,而是要考一个通过的分数,在复习过程中可以放弃一些内容,只要保证在大部分基本概念,关键技术,重要原理和历年考点上都把握住,能够拿到需要的分数就可以了。最后祝大家考试大捷。

 

备考嵌入式考试点击此处加入高效备考区域群【631327266】,多交流讨论学习,工作。

上一篇:DSP学习资料:基于6U VPX的 XC7VX690T+C6678的双FMC接口雷达通信处理板


下一篇:Android : 高通平台的HVX简介及调试