DSP

怎样混好电子这一行?(关于MCU、ARM、DSP,嵌入式)

2019-07-13 09:39发布


01
很多初学者,甚至是混了好几年的老手,都在抱怨,电子这行怎么竞争这么大啊? 颓废,这完全在抹杀自己的激情,没了激情,搞电子,完全就是在浪费生命。其实,竞争真的大吗??对比一下,难道做业务的竞争不大,做管理的竞争不大,现在这个社会,哪个领域,哪个行业,竞争都大。

所以,假如你想逃避竞争,那你就不用活了,当然,你本身家庭很好,父辈好有钱的话,那另当别论!所以, 不管什么行业,竞争大不大的问题,都不用问了。答案都是:竞争大,但是必须面对,我们要自己面对的竞争越小,那么你的技术能力应该是越牛X。搞电子的人要跟得上时代,但是人的脑袋会随着年龄的增大而迟钝,所以这就造成了电子人才(特别是搞电子软件)的一种生老病死的自然规律。

也就是说,一般40岁左右的技术人才,有三种出路。

第一,自己创业了或者是技术管理层,完全脱离技术,请几个二十来岁的新手,让他们去发掘脑袋,自己在一旁,靠着自己的经验,嘴巴说说可以了。

第二,转行了,这个不好评论,不知是祸是福。

第三,继续做技术,但是这种会很累,天天逼着自己学习,还吃力不讨好,也不敢轻易换工作了,因为此时编程思维固定,工作激情缺乏,学习能力偏低,一个新的工作环境很难让他适应,这种情况,假如不是元老级人物,或者已经是个技术负责人,那么很容易被一个新手所代替。也就是说,搞了十多年技术之后,这批人将慢慢的淡出这个行业,新老交替,长江后浪推前浪。

所以真正的技术人才永远都缺,前提是你真的有能力。所以,只要有能力,你永远都吃香的,永远都不怕竞争,就不应该担心竞争大不大的问题,而是担心自己牛不牛的问题。



 怎样学好单片机? 

我大二就开始自学单片机(我们学校的单片机课程是大三开的,汇编版),那时候,我完全不懂什么是单片机,照着书上的原理图自己用万用板焊接,按键,数码管,串口,电位器,温度传感器,等等都不懂,反正就是照焊,不懂的,找网络。程序一点都不懂,哈哈,还是照搬,写好编译,烧录进去,行了,但是还是不懂。哈哈。但是这就给自己一个很大的自信心,记住,搞电子的人,永远都是成就感第一,虽然不懂,做出来了,还是很有成就的。慢慢的,到了大三,开始学单片机和C语言了,老话,上课要专心。此时,重要的一点是,学了理论,要付之于实践,我以前就经常跑实验室,回去宿舍,也搞搞单片机,编编程序,调试调试开发板等等。这段时间很重要,同样一起上课,为什么有些人就不适合搞电子,因为此时,他们都没有动手,忘得太快了。

学单片机,是软硬件的综合体。并不是单单会点汇编或者C语言就说会单片机,这顶多只能说会编程而已。因为大部分单片机系统都是不带操作系统的裸机系统,那么没有所谓的操作系统和应用软件,没有操作系统层所封出来的一些接口可用,也就是说,需要架一个简单的前后台系统,只会写应用软件,就比较难使用单片机,因为他们对这些只有硬件,没有软件接口的东西,无从下手。所以,学单片机,首先学会硬件,也就是简单的电阻电容电感,三极管,二极管,比较器,等等相关的基础元器件特性及其应用。个人觉得,大学教程的模电数电很重要,先模后数,模电是数电的基础,也是电子这块的基础,显得特别重要。然后数电就要吸取其思想,很多数电所介绍的集成IC,比如门电路,计数器,触发器,比较器,运算器等等,现在工业很少见的了,但是,其设计思想是值得学习的。

理解单片机内部的人就清楚,单片机或者其他的主控(ARM DSP等)的内部其实也就是这些东东高度集成而来的。所以,学单片机的时候或者之前,先抽时间学习一下模电数电,学到自己有所理解的程度,就可以学一下单片机编程,C语言或者汇编都可以,看个人爱好,C语言移植方便,好维护,编程快速,但是缺点是其编译出来的CODE比较占空间,一般用于移植性通用型要求高的嵌入式软件领域,或者比较大的单片机项目,或者要求开发速度而对价格不敏感的产品。而汇编刚好相反,对利润薄,成本低,开发难度不大的行业使用,比如小家电。不过现在的MCU也很便宜的,几块钱都几十k的FLASH ROM,在现在技术人工那么贵的情况下,估计还是C语言比较迎合市场。学习这些理论知识的同时,都需要动手做实验,不怕搞错,最怕就是懒得搞。

会编程之后,怎样切入单片机?  

初学者学了编程语言的之后,又或者搞纯软件想转单片机的人,都会有个共同的特点就是,下一步不知道如何入手?
那么我就会问,你懂硬件吗?要求不高,略懂就好,不求很精,因为硬件这东西是越老越辣,越久越醇,锻炼多了,自然会精。

假如你一点都不懂,那请看上面的一段,学硬件基础去吧。

假如略懂,那么你现在的切入点就是在五花八门的单片机中找一款合适的入门单片机,初学者做任何决定都是以“易入手”为标准,入手了,就不怕你以后跑不快,力求找些通用的MCU,资料多,软件平台也多,容易上手,比较51核的,虽然简单,但是它是鼻祖,学起来方便,只要懂了这个鼻祖,其他的再复杂的东西,也不过它繁殖出来的,不会太难。一下子搞太难的东西,不单学不会,还会打击自己的脆弱的心灵。

选好了单片机,那就搭开发平台,首先是软件开发平台,针对不同的单片机内核或者型号,有不同平台,通用性51核的KEIL51,AVR的IAR ICC,还有很多不同厂家的开发平台,不一一列举。其次就是单片机硬件平台了,也就是开发板,不同的单片机器引脚和外围都稍有不同,所以开发板也有针对性,网上很多卖开发板的,都希望做的很通用,支持很多种型号的MCU,价格也不高,假如怕麻烦,怕焊接出错的初学者,可以买,关键是现在的开发板便宜,几十块钱很漂亮,以前那个年代动不动几百块,流血啊。当然,我更推荐是自己焊接,特别是自我感觉硬件还可以的人,趁此机会锻炼一下焊工,还有,会对电路理解更深的。其实各种各样的开发板都是一样的,只要你焊接遵循以下原则:

首先,焊接最小工作环境,电源电路,复位电路,振荡电路(现在很多MCU都集成内部晶振,精度也可以,频率也比较高)。然后就是其他的常用的外设电路,按键输入(按键多的话,可以用矩阵,学学矩阵扫描),串口(UART),AD/DA,蜂鸣器,数码管,点阵显示屏,电机驱动,温度传感器等等,这些资料很多的了,几十年来,初学者都是学这些。

这些外围电路,网上资料多得是,随便找几份对比一下就有了。找个万用板,就可以动手焊了。不成功的,测量单片机工作电压正不正常,晶振有没有起振,复位电路有没有搞错等等,再不成功,焊多一块,哈哈。有了软硬件平台,就可以一个实验一个实验的动手,开始是模仿,后来就改动,再后来就完全自己搞一个有新意的,从0开始写code,做第一个属于你自己的project。顺便说一下,单片机的编程和纯软件的编程,除了编程思想和大部分语法可以沿用之外,其他的,寄存器配置和部分语法都有针对性,要花点时间去学的。学会了51之后,假如有时间可以学一下AVR PIC MSP430 等等其他内核的单片机或者功能更强大的51核单片机,宏晶,笙泉等等,作为一种提高的练习。

ARM、DSP等主控难吗? 

ARM 、DSP等,其实也属于单片机一类,只不过它的内核牛X一点而已,两种东西我都搞过,用了一段时间,但是,假如你就单单让他作为一种普通的单片机来用,那说明你不会用。

首先说ARM芯片吧,它的内核就是ARM内核,它的主频高很多,普通的都有几百M。CPU缓存大,分有很多级的流水处理线,这样大大提高了CPU利用率。这种IC的资源足以让一个嵌入式操作系统正常跑起来,WINCE, LINUX, UCOS 等等,一个操作系统移植到里面去,跑起来,然后就自己利用操作系统的接口写一些应用软件,就可以直接控制其强大的外设了。当然了,这中间还有另外一种工程师在工作,就是嵌入式驱动工程师,他是专门针对硬件接口写驱动的,封出来的接口就给上层的人使用,这种工作有点类似搞单片机的。很多人想从搞软件直接搞ARM,那么我的建议的是,除非你能力很强大,可以直接搞ARM,否则的话,先学单片机,再学ARM吧。

DSP,中文名叫数字处理器,看它的名字就知道了,它就是用来处理数据的,他的数据处理能力,比ARM强大的多,一般来说接口没有ARM丰富,它的接口都是有针对性的,快速的存储,快速的访问,这都是为了快速的处理数据而作准备的。它的主频也是几百M,DMA就肯定有的了。一般来说,图片处理,视频处理,网络数据处理等等多是用DSP的。就是因为它是用来做数据处理,那么精通DSP的人,一定要精通各种数据处理的算法,什么傅里叶等等,假如你将DSP看做一款MCU来搞,那太浪费了,100块的东西当几块钱的来用。要用好它,物尽其用,那真的很难,要精通算法才行。

嵌入式软件是什么东东?  
嵌入式软件分为嵌入式操作系统软件,嵌入式应用软件。大部分的嵌入式软件都寄宿在ARM内核的芯片上,三星,飞利浦等等都有ARM内核的IC,做计算机软件的人,很容易的就转做嵌入式软件,但是要做嵌入式驱动软件的话,就有点难了,因为这个涉及到硬件接口,一般都是搞单片机的人转过去做的。这几年,这个东西很火,用在数码产品,比如MID,掌上电脑等,我在凌阳的时候,刚毕业进来的应届毕业生都懂linux了,那个压力啊,哈哈,是学校专门开课的,可想而知,想逃避竞争的人,不用想了。

谈谈PCB 

搞电子的人,不管你面对但是MCU,ARM, DSP,甚至是其他杂交变异品种,有一种东西是离不开的,那就是电路板。所以的元器件要发挥作用,都得焊在一个适当的电路板上面。PROTEL99 或者 PADS 或者DXP,这些都差不多,越后来出的,功能越强大,画一些复杂的,比如嵌入式领域的板,一般都用功能强大的画板软件。还是那句话,画PCB图不难,但是要精就不简单了,这里涉及到电路原理图的设计问题和很多布线的原则,走线大小,间距,角度等等,一般的mcu控制板,对这些都不是很敏感的。但是电源板,高频的,或者rf无线收发的板就对这种东西很注重了,干扰和抗干扰都要考虑到,滤波电容什么地方放,多大啊,什么的,都要注意。在大功率领域,线宽也比较讲究,大电流的时候,铜皮不够大,或者不够厚,会发热,很容易导致板烧毁,甚至元器件爆炸。还有很多很多注意的,这个又属于专门一个纯硬件领域,要自己多多学习相关知识,平时也要多练习才行的。

一口气说了一大堆,总结一下:搞电子,要先打好模电数电基础,在学编程语言,然后就开始动手,再动手。数电模电好比基石,编程就是砖头,永远都需要你这个建筑师傅来砌才行的。最后,说明一点,技术是个无底洞,我也只不过茫茫技术海洋的一滴无名小水珠。全部观点和经验都是我自己的总结,不能说完全对,只能说,我是这样过来的。