年初到现在,接触DSP已经半年了,由于公司没有人指导,做了这么久都没出什么大的成果,也走了不少的弯路。以前做单片机用C编过一些程序,个人觉得还可以。现在看来也只是在吃以前在学校里面一些C语言皮毛的老本,加上一些网上说的所谓的技巧什么的结合以前汇编的经验做了一些针对处理器的优化而已,实在“**肋”得很。很多东西都没有接触应用到。
直到接触到DSP,由于使用TI的库文件例程的缘故,对结构体,联合体等有了进一步的了解,也对一个工程变量的使用有了更深的认识。下面对谈谈对DSP C刚入门者的一些建议:
1.DSP程序的定位配置---CMD文件,要求熟悉DSP的存储器结构。这一部分对接触硬件多一些的新手很容易,其实也就是配置一般的C语言编译器的一部分,比如AVR单片机的头文件,cpu选择等在DSP中就是这一部分完成。另外还要注意TI例程中对加密位,看门狗的处理。
2.当然是C语言的一些基础了:运算符,优先级,几个基本流程控制语句。这些无论是什么C平台运行都一样的,基础中的基础。但是也很容易因为这些基础的简单的问题,导致一些很郁闷的结果。也是因为对这些基础的概念的理解深入程度影响你的软件思想。
3.结构体,联合体,位域的运用,最好能有一个对比,了解运用的场合及优缺点。有了这些基础,就很容易明白TI例程的一些基本结构。
4.变量的作用域以及生存期,这样才能从最初的单个的C文件过渡到C工程,才能更好地了解模块化编程地基本要素,实现基础。
5.Q格式等的应用,因为大多数DSP都是定点的,而做运算处理的很多时候都不可避免要用到浮点数。使用Q格式才能更好的发挥dsp高速的特性。所以有人说“不会使用Q格式的DSP程序员不是优秀的程序员”!
6.另外我觉得如果用DSP参与控制的话,最好能熟悉一些面向对象的程序语言,比如C++。要能了解用C实现面向对象的方法。为什么呢?一是面向对象我个人觉得在写程序方面模块化等要好一些,特别是控制领域,我看过一些高手的PLC程序也是采用的面向对象的思想构件模块的,从那以后我的单片机程序才开始这样靠拢,也确实发现了一些好处。比如对那些c流程中多次要操作的资源,有时候会出现一些共用操作的位置错误。二是TI的例程中有好多地方用到了这些思想,要明白这些东西,你才能更容易理解那些例程。这一部分我推荐一本书《DSP C2000程序员高手进阶》。
7.数据结构知识,DSP要做运算,肯定要涉及到一些好的数据结构。才能更好的优化算法。
8.matlab的运用。matlab提供了强大的数**算能力,还能对DSP结合CCS进行仿真。可以把程序员从繁琐的底层编程中解放出来。个人感觉matlab给编程思想和底层程序提供了一个连接,一个平台。 |