个人认为,对DSP的学习,主要有三个方面:1)芯片的外设的使用,同时学习软件开发环境;2)DSP的内核结构与汇编指令;3)DSP算法的移植和优化工作。
第一部分:芯片的使用
学习哪些内容:芯片的外设一般包括GPIO、SPI、UART、Timer、Interrupt等,这些常见的外设与其它MCU基本一样,参考官方例程即可;对于Blackfin系列DSP,还有高速串行口SPORT和并行口PPI,对于高速数据传输,这两种接口是必不可少的,因此一定要熟练掌握;另外一个比较重要的功能就是DMA了,包括1DDMA和2DDMA的原理与使用方法;
建议:对于外设的学习,主要以硬件手册也就是hardware reference为主,例程为辅,通过程序来学习硬件;中文版的参考书不推荐,鄙人看过几乎全部blackfin的参考书,实在没有值得推荐的地方!
第二部分:内核结构与汇编指令
有人说现在都是C开发,为什么学汇编?阿朗的一位做DSP的技术员跟我说过,一个人对DSP的熟悉程度,是从他对DSP结构的理解上体现的。我也认为,学习汇编并不是要你用汇编去编写代码,而是学习DSP内部到底是如何工作的。内核结构与汇编指令的学习,二者是不可分割的。
建议:如果想毕业后从事DSP开发、算法工程师一类的职务,这个要求是必须的。
第三部分:DSP算法的移植和优化工作
最后就是算法的移植工作,根据compiler reference中的C语言数据类型和语法结构,将算法转化为visual DSP++可编译的C语言描述,如果对时间要求较高,就需要在转化的同时对其进行优化等,包括算法本身的优化和结构的优化,比如for循环如何展开,如何安排代码和数据的存放位置等等。