1、今天开始,我们就要真正开始 2812 的学习了。我们今天的内容比较简单,主要是让没有基础的朋友来了解一下 DSP 开发需要哪些工具,一个完整的 2812 的工程(Project)是由哪些文件组成的,各个文件的主要作用是什么,以及如何在 CCS 里创建一个新的工程。1.DSP 开发所需要的工具+ e# D+ b) z! - Z T/ j5 0 v! D: U咱要进行 DSP 的学习和开发了,可能从没接触过 DSP 的朋友就要问了,我们做 DSP 开发首先要哪些开发工具呢?DSP 开发通常需要软件开发环境和硬件平台。软件开发环境为CCS(Code Composer Studio),是 TI 公司为
2、方便开发人员而设计的软件环境。硬件平台由仿真器和目标板组成。仿真器的作用是将目标板和 PC 机连起来,使得您可以在 CCS 里对目标板上的 DSP 进行编程,烧写和调试等工作,而目标板是指具有 DSP 芯片,上电后能保证 DSP 独立运行电路板,通常为各个公司设计的开发板或者您自己设计的电路板。2.安装并配置 CCS. n“ p T3 e“ ?$ Z* 首先,让我们来了解一下 CCS 的版本。目前,CCS 常用的版本有 CCS2.2,CCS3.1 以及CCS3.3,CCS2.2 是一个分立版本,也就是每一个系列的 DSP 都有一个 CCS2.2 的开发软件,分CCS2.2 for C2000,
3、CCS2.2 for C5000,CCS2.2 for C6000。而 CCS3.1 和 CCS3.3 是一个集成版本,支持全系列的 DSP 开发。我们推荐使用 CCS2.2,因为这是目前最稳定的版本。但是使用最多的是 CCS3.3,因此我们这次学习也以 CCS3.3 为软件开发环境,和大家一起探讨 2812 的软件开发。如果您还没有安装 CCS,请访问下面的地址进行下载。如果您购买了我们 HELLODSP 的相关产品,我们会为您免费提供含有 CCS 开发环境的资料光盘。CCS 下载地址: http:/ . m$ Z7 ) v1 J7 s0 k7 l o5 G! x f. l1 v w打开 g
4、pio 工程之后,gpio.pjt 工程会显示在左侧 Files 窗口内。点击 gpio.pjt 左边的加号,工程内部的文件就展现在我们面前了,下面我们来分析一下构成该工程的文件。+ 9 O: D m _* d! 4 3 k1 b8 y3 C4 9 D2 H6 D1 L; |1 d6 X2 s i% f7 ; |然后是 libraries 下面扩展名为.lib 的库文件,它是 C 语言系统的库文件。2 E* S4 K1 v* c. ! m1 # i库文件下面是 source 文件夹,里面的文件都是以.c 为扩展名的,顾名思义,就是源文件,也就是我们开发时编写的软件代码都是保存在这些文件中的。.
5、 s( p* I L+ G1 m( E: R- c2. 根据前面一个完整工程的组成情况的分析,我们首先来准备头文件。由于头文件多数情况下是不需改动的,也就是说大家用的头文件都是一样的,因为是定义 2812 的内部资源,所以可以将 newproject 文件夹内的头文件全部复制到 hellodsp 文件夹。3. 将 newproject 文件夹内的.lib 文件和.cmd 文件同样复制到 hellodsp 文件夹。2 J: I) U# F! k6 R# u/ f4. 下面就剩下源文件了。我比较喜欢例程中的文件结构,所以建议还没有形成编程风格的朋友也采用这种文件结构。我们先来分析一下 newpro
6、ject 文件夹下各个源文件的内容,以便于我们更好的理解和采用这种文件结构。DSP28_ADC.C 外设 AD 的初始化函数,与外设 AD 相关! P- “ j! _ ?, X9 pDSP28_CpuTimers.CCPU 定时器的初始化和配置函数,与 CPU 的定时器相关DSP28_DefaultIsr.C这个文件很重要,包含了 2812 所有的中断函数,写中断时,只要将程序写在对应的函数内就可以,大大保证了中断的成功率。- q, 9 B. c* V1 Y/ DSP28_ECan.C外设 CAN 的初始化函数,与外设 CAN 相关。DSP28_Ev.C外设 EV 的初始化函数,与外设 EV
7、相关。: r9 f# T2 , C Z( 0 h Q( vDSP28_GlobalVariableDefs.C全局变量的定义,这个文件也很重要,定义了 2812 的寄存器,中断向量表等内容。; N: b- c6 U0 u3 jDSP28_Gpio.CGPIO 的初始化函数,只和 GPIO 相关。% , k! o/ ?5 sDSP28_InitPeripherals.C所有外设的初始化函数,函数的内容是调用了 2812 各个外设的初始化函数。+ j/ s* E! r1 c: m- P$ cDSP28_Mcbsp.CMcbsp 的初始化函数,只和 Mcbsp 相关。DSP28_PieCtrl.CP
8、IE 初始化函数,和中断相关,很重要。DSP28_PieVect.CPIE 中断向量表定义以及初始化,很重要。DSP28_Sci.C外设 SCI 的初始化函数,只和外设 SCI 相关。DSP28_Spi.C外设 SPI 的初始化函数,只和外设 SPI 相关。DSP28_SysCtrl.C系统初始化,主要对开门狗,时钟等模块进行初始化,以保证 2812正常工作,非常重要。9 m5 a. V) L) r# 9 W“ F c+ J: o) X; _8 k. SDSP28_XIntrupt.C外部中断的初始化函数。2 Z- H3 b$ s“ j; Z6 t V$ % uExample_28xGpio.
9、Cmain 函数所在的文件,但是各个工程的 Main 函数一般都是不一样的。, h M J3 + n4 n* g* t通过上面的分析我们可以看到几个文件非常重要,DSP28_DefaultIsr.C,DSP28_GlobalVariableDefs.C,DSP28_PieCtrl.C,DSP28_PieVect.C,DSP28_SysCtrl.C,因此我建议大家每次新建工程的时候,就把这些未编辑过的文件复制过来。其他的外设相关的文件,您这个工程中涉及到哪个外设,您就把这个外设相关的源文件复制过来,一起加入工程。由于 Main 函数所在的文件内容各个工程都不一样,所以建议大家自己创建,顺便来学习
10、一下如何在 CCS 里创建一个.c 的源文件。( o9 S“ k w“ 1 g5 C* C3 x1 N! K% $ D9 _ x7 ; i9 v此时我们的新工程 hellodsp.pjt 还是空的,里面啥都没有,接下来就是往工程内添加文件了。首先我们来添加库文件。点击“hellodsp.pjt”,右键,点击“Add Files to Project”,跳出了添加文件的对话框。$ V# Y0 a( C“ t O% d. * I$ d+ z/ n8 Q4 x, v在筛选框栏内选择“Object and Library Files”,就会看到 RTS2800N.lib,点击并打开,便将库文件添加到工
11、程中来了。6 s1 n# I2 O3 q% 0 # T; _ 2 z; t1 m: K* F. Z! I1 X# C2 G, P. j# K/ J j9 Y2 G0 U8 j i. T*.cc;*.cxx)”添加 CMD 文件时,筛选框的条件应当选择”Linker Command File(*.cmd;*.lcf)”。文件添加完成了,是否 hellodsp 这个工程就建好了呢?可能您想起来了,我们还没有添加头文件,也没有主函数呢。对了,我们还缺少主函数,头文件这里先不管,到最后看看是怎么回事。1 W4 K7 f+ g + |3 k我们点击菜单栏中的File,”New”,”Source File
12、”,在编辑区域内出现了一个新的Untitled1 文件。+ 4 W6 L7 e, 4 z- D O+ c! h1 q6 H* ) t. V- / ; V) I; L8 Y+ u6 O; N2 % T这时,我们看到原来的“Untitled1”变成了“hellodsp”了。我们在 hellodsp 文件内输入以下内容: 1. #include “DSP28_Device.h“9 z# N9 w% l2 Y1 n% k6 Y2.3. Void main(void)“ y! S/ N( j“ G7 D+ y* O4. 5.6. 复制代码然后点击保存,并关闭 hellodsp.c 文件。7 C! Z0
13、|$ U3 O) Q$ S4 R+ ( |: O2 k# _; 9 G s3 g# I c2 c* c. T9 _! w, R* j# - D7 c$ K1 k8 h可惜的是,我编译完成时,提示了一个”warning”,内容如下: 1. hellodsp.c “C:CCStudio_v3.3C2000cgtoolsbincl2000“ -g -pdsw225 -fr“C:/CCStudio_v3.3/MyProjects/hellodsp/Debug“ -d“_DEBUG“ -d“LARGE_MODEL“ -ml -v28 -“Debug.lkf“ “hellodsp.c“2.3. Linki
14、ng. “C:CCStudio_v3.3C2000cgtoolsbincl2000“ -“Debug.lkf“- A3 M) , B t# z6. Use7. -stack option to change the default size.8.9. Build Complete,5 l/ ( F3 |# a7 n5 M1 q10. 0 Errors, 1 Warnings, 0 Remarks.复制代码很糟糕啊,呵呵,不过,静下心来先大概分析一下提示 warning 的原因,提示是用默认的1024bytes 来创建.stack section,就是堆栈段。我在站上搜了一下,发现有朋友也遇到过
15、这样的问题。怎么解决呢?点击菜单栏的”Project”,”build options”,弹出编译选项的对话框。选择“Linker”标签,在 Stack Size(-stack)栏填写“800”,点击确定。重新编译,哇,通过了。“0 errors ,0 warnings ,0 remarkings”!J5 R+ r4 ; % l$ H6 |. q不过我想为什么刚才要将 stack section 段改成 800 呢,改成其他的可以吗?我回头又将刚才的 800 改成了 1000,编译也完全正确。所以我觉得,可能改成小于 1024 的值,只要让它不要是默认的 1024 就不会有 warning 了。虽然,有时候 Waring 其实并不会影响程序,但是总会觉得不安,所以还是想办法将其解决吧。怎么样,心动了吗?赶紧下载附件开始自己搭建新的工程吧。8 8 j+ k I, 5 , 3 t. E2 k * k$ C* n( Z通过本课时的学习,您应该弄清楚了一个完整的 2812 工程由哪些文件构成了,也应该会搭建属于自己的工程了,但是有些问题我们还没有阐述,留给大家讨论和思考:1. 什么是 GEL 文件?GEL 文件的作用是什么呢?2. Lib 文件内部究竟是什么内容,我们自己能编辑 LIB 文件吗?