DSP应用方向:信号处理,运动控制(比较难),图像处理稍好一点。嵌入式通讯领域的平均收入是最体面的。

DSP主要是三个方面的应用一是图像处理、;二是语音处理(这个东西市面上有很多现成的模块,而且很便宜,往这个方面学习有没有钱途);三是电机控制(我感觉这个方向应该比较好学,但是不知道主要是哪些电机上要用DSP控制,这种电机的应用场合是什么地方,长这么大还没有见过用DSP控制的电机。而且感觉这个方面就是处理速度要求快一点外,没有什么名堂)

DSP单纯从编程角度来讲没有任何难度,其精髓在于编程实现的算法.


嵌入式系统

首先你将来从事的行业必须有大规模计算的需求,而且这种计算需求从某种程度上对时间要求比较高。比如通信,实时视频处理等方面。

其次应用DSP人员必须对自己行业所需要的专业知识极为精通,注意!这里的专业知识不是指什么数模电微机原理等专业课。而是解决本行业可能遇到的问题所需的知识。

 

基本的逻辑电路设计,大的趋势还是做SOCSOC这个概念不难理解,简单点说就是把你原来做的实验那个PCB板换成硅片,把与外界的连线换成管脚。用芯片做了原来电路板做的工作。单纯组建一套片上系统并不复杂,复杂的是这套系统的商业化成本。现在很多SOC设计里面大量应用的现成的IP都是需要付费的。一方面原因是如果自己设计,周期和风险就会成倍放大,另一方面针对某些功能的IP靠自己的力量也搞不出来。如果是学生或者独立开发者,当SOC进行到一定程度后就会感觉自己的开发寸步难行了。抬头望去到处都是IP壁垒。想做出自己的东西真的很不容易。如果你的理论知识够牛的话,可以自己设计IP也是一个挺好的出路。

 

搞嵌入式开发的人有两类

一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader Board Support Package(PCBIOS一样,往下驱动硬件,往上支持操作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式操作系统原理和复杂应用软件等)


一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。

如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,我认为大概分3个阶段:
  1、嵌入式linux上层应用,包括QTGUI开发
  2、嵌入式linux系统开发
  3、嵌入式linux驱动开发


嵌入式目前主要面向的几个操作系统是,LINUXWINCEVxWorks等等。Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。

可以尝试以下路线:
1 C
语言The C Programming Language》 这本经典的教材是老外写的,也有中译版本。
2) 操作系统原理
3 Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)
4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。
5) 系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。
6) 驱动开发
: linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。

linux
驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。