学习方向
首先要学习下基础课程单片机,汇编和C语言等等,然后再学习嵌入式,如果说你要想水平高的话,最好学习下操作系统,数据结构,算法及一些硬件方面的知识等等。看你是想在什么方面发展,在硬件方面还是软件方面。假如是软件方面,当然对编程要侧重,反之在硬件方面,那么就要对单片机,电子电路,数电,模电等等要多加学习才是。
做嵌入式的大概有这样几个方向:
驱动/BSP/内核移植类:这一类要求你了解硬件芯片和电路原理图多一些,需要多学习大学这类基础课,然后看一些基本的CPU芯片外围芯片手册,知道什么是CPU内部总线、外设控制器和寄存器。这类人在产品项目中人数需要不大,但是工资不低。(内核移植和内核开发暂且不提)
(辅助知识:通信:串口,usb口,网口,RS232,RS285,LINE2.0,CANBUS,RF,蓝牙,红外数模:ADC,DAC,放大器应用电路电源,存储器,时钟,传感器等应用)
嵌入式操作系统类:这一类要求你能根据产品需要设计出能多任务处理并控制一些外设或者与外设通讯的程序。需要你有很好的C语言基础,单片机基础,然后是嵌入式操作系统基础,知道各种多任务处理的模型,然后还需要一些数据结构知识。你要知道程序是如何烧写到芯片里变成能控制设备的东西的。
嵌入式系统应用类:这一类要求更加偏向软件一些,有时甚至只是知道内存限制就可以了,其它硬件都不必考虑太多,比如做嵌入式GUI的(miniGUI,
Qt)、嵌入式数据库的、嵌入式webserver程序等,这一类归根结底是软件开发,需要有强大的阅读源码能力和程序设计基础。高级嵌入式相关应用程序开发类:如手机开发的,特别是iphone
android的应用开发,这一类实际上是纯软件开发,要求有很好的程序设计基础、面向对象概念、结构化开发概念等,UI相关的现在还需要有一些UX用户体验理念。
大概就这几类,如果你是学生建议自己买一个三星的ARM9开发板,很便宜的,从读芯片手册、学习移植ucosII,写写ucosII应用程序,深入的可以学习嵌入式linux下应用程序开发等,总之一年之内学透一个开发板,那么你就可以合格胜任前两类工作了。总体来说第一类:模拟电子
数字电子
微机控制等技术很好,对嵌入式各个模块很熟悉,单片机应用的炉火纯清,能独来开发(软件,硬件,PCB)测试,控制等项目(能力很强,适合独立开发项目)
第二类:能把操作系统移植到嵌入式,并且能编写驱动程序(适合团队开发,和应用软件工程师配合)
第三类:熟悉BS/CS架构和设计,操作系统原理和内核有相当的认识,有美工经验,熟悉嵌入式应用软件的开发(适合开发上位机,或与第二者协作开发嵌入式)
在此建议 统筹全部 专于一个方面
硬件介绍
DSP(digital singnal
processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特 {MOD}。
ARM 即Advanced RISC
Machines的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。
SoC:片上系统 (SoC:System on a Chip)
片上系统(SoC:System-on-a-chip)指的是在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术。所谓完整的系统一般包括中央处理器(CPU)、存储器、以及外围电路等。
SoC是与其它技术并行发展的,如绝缘硅(SOI),它可以提供增强的时钟频率,从而降低微芯片的功耗。由于空前绝后的高效集成性能,片上系统是替代集成电路的主要解决方案。SoC
已经成为当前微电子芯片发展的必然趋势
FPGA是英文Field-Programmable Gate
Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
硬件比较
FPGA:
时序控制能力强。(时序能力强,没有指令周期,速度快)
控制能力较强(由于没有指令集,不如ARM和单片机)。
数字信号处理及算法弱(这里讲的弱是指内部不集成DSP的前提下)
DSP:
时序控制能力较弱。(没办法。有了指令集,就有指令周期。而且受到时钟约束)
控制能力较强(有指令集。但是不是专业搞控制的)
数字信号处理及算法强(专业特长嘛)
DSP和FPGA开发的概述:
DSP,专用电路(内部结构已经固定)通过对RAM内部的指令和数据工作(这个是CPU和ARM等等的工作方式)所以开发遵循嵌入式软件的设计原则。调试应更注重于算法的实现。
FPGA,ASIC一种,经典FPGA的内部结构是寄存器+组合逻辑(查找表)。最后是按照逻辑电路进行设计。所以是属于硬件设计原则。调试除了需要关心功能以外,还需要关心电路
方面的特性。比如说延迟,整体功率等等。
开发工具:
DSP仿真器,开发板。仿真器比较多,网上查吧,DSP仿真器,网上大堆的,嫌不够正规,TI网站自己找教程和datasheet。
FPGA:开发工具比较多,他分成综合工具,仿真工具和开发板,综合工具altera的Quartus和xilinx的ISE以及synplicity的synplify用的比较多。仿真么,modelsim,时序仿真利器。也是网上去找吧。多滴很~~
技术支持你不用担心~TI和Xilinx和Altera的支持非常非常地道。就一个问题。英文要好。至少你能静下心来看。上了他们的网站。你就知道什么叫专业。fpga还好,因为就几家大公司才有能力出。dsp么,具体问题具体分析咯。
选择策略方面。这个是经验谈啊:不能绝对的说。DSP么,专业性比较强。而且的确能做别的IC做不了的事情(人家里面乘法器资源没话说稳定性和效率在数字信号处理这块基本无人能出其右)FPGA呢相对来说可以运用的面比较广泛(不过也是近期的事情。其实FPGA很早就有。只是当初设计领域都是通信方面的。现在有集成CPU和DSP以及公司提供的软核的强力支持,设计面越来越广)
FPGA,ARM,DSP那个更加有前途
三种技术目前看,都有各自的特点,没有任何一个能完全替代另一个。
论市场需求,ARM是现在最火的技术,低端芯片正在替代51单片机,中端芯片做工控,高端的作为便携设备的主控制器,可以跑系统,我感觉主要是I
PHONE和I
PAD一下子把市场激活,ARM立刻火爆了。ARM跟DSP和FPGA比,主要优势是外设丰富,有USB接口,LCD屏接口,NAND接口甚至触摸屏接口等,你要用DSP和FPGA开发这些外围设备,可累死了。
论运算速度,DSP最快,但现在主要用在手机测试示波器这些高频信号测试的地方,控制部分已经完全输给ARM了。FPGA特点是并行处理,主要做一些相对简单的逻辑功能和高速信号采样和显卡等,功能也很强大。
如果非要选一样说最有前途,我建议还是ARM吧,学会ARM有些东西你可以单干,比如手机、平板电脑、各种测试仪器。精通DSP和FPGA的话,最好是在大公司里打工。