我是去年开始真正接触DSP的,之前接触过51,凌阳的61,之前对编程都没有感觉,真正有感觉是在用DSP上面点亮第一个LED,我么有用开发板,而是直接用公司产品上面,(后面觉得找一块好的开发板还是有必要的,毕竟开发板上能将DSP的所有外设都扩展看来),我是先从2407入手的,感觉看2407的架构比直接去看28的架构要省时,而且上手比较快,看24的汇编能具体知道内部是怎么操作的,28就不要去看汇编了,那会很痛苦。28选了两本书《TMS320X281x DSP原理及程序开发》和《TMS320X281x DSP应用系统设计》,这两本书都不错。
学习2812是最近的事情,因为有了硬件开发平台,边看书边学习边实验可以理解的更深。以前是用2407开发的,而且是用的汇编语言,刚开始时觉得好累,不是一般的累,每一句汇编都要找到相关的解释才能看懂;还有寻址方式,不像C语言里那样可以用指针什么的,在汇编里一定要清楚每条指令所能用的寻址方式,不然程序肯定跑飞。
现在学习2812,因为直接上C语言了,所以对2812的硬件内核和外设设置没有一个总体上的了解,有些程序编起来还是会无从下手,大部分程序可以完成,但程序的实际执行顺序并不是很清楚,所以我觉得基本的汇编语言还是应该学习一下的,那样会使自己的程序水平上一个台阶。
2812的头文件定义为编程提供了很大的方便,模块化更加强,具体设置就参考相关的寄存器设置就行。
在此,我总结下学习2407的经验,2812只是初步谈不上经验,有什么不对的地方希望能够提出
1)把存储器映射结构搞清楚
说的具体点就是dsp内到底有那些存储器(ram,rom,flash,etc),这些存储器到底是如何分配的,这个可以参考相关的.cmd文件的写法,它定义了存储器映射和输入输出段的位置
2)编译器的堆栈操作
有关这点我还是没有具体弄清楚,就是中断或是子程序调用时,系统自己的堆栈操作。2407有一个8级硬件堆栈,而2812没有,这个区别比较大,所以在编一边针对堆栈操作的程序(eg. rtos)时就要特别注意了。
3)中断系统
每个mcu的中断系统搞清楚了,会给编程带来很大的便利,所以一定要对所用的mcu的中断过程了解的清清楚楚。
4)数据结构
设计好的,适合的数据结构会使自己的程序编写变得结构清楚而且“容易”。
好了,就先说这么多吧。现在学习2812,有很多地方不同,大家一起讨论,多多交流,肯定能够更深的理解这块2812.