资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章,DSP,的开发环境与工具,主要内容,软件开发过程及开发工具,CCS集成开发环境,CCS集成开发环境,TMS320C54x代码生成工具,如汇编器、链接器、C/C+编译器、建库工具等。,CCS集成开发环境(Integrated Developong Envirorment,IDE),包括编辑器、工程管理工具、调试工具等。,DSP/BIOS(Basic Input and Output System)插件及应用程序接口API(Application Progran Interface)。,RTDX(Real Time Data Exchange)实时数据交换插件、主机(Host)接口及相应的API。,CCS系统安装,CCS对PC机的最低要求为Windows 95、32M RAM、100M剩余硬盘空间、奔腾90以上处理器、SVGA显示器(分辨率800600以上)。,CCS系统设置,在安装,CCS,之后、运行,CCS,软件之前,首先需要运行,CCS,设置程序,根据用户所拥有的软、硬件资源对,CCS,进行适当的配置。,启动,Setup CCS,应用程序,将显示,Code Composer Studio Setup,窗口。,在Factory Boards中添加设置,在Family下选择C55xx,将看到所有C55xx的仿真驱动,包括软件仿真和硬件仿真;,在Platform下选择Simulator,在Available Factory Boards中只显示软件仿真驱动,选中相应的驱动;,双击C55xx Rev4.0 CPU Functional Simulator,可以在My System下看到所加入的驱动;,点击Save&Quit,将保存设置退出Setup CCStudio v3.1并启动运行CCStudio。,CCS文件名介绍,*.pjt:CCS定义的工程项目文件;,*.c:C语言编写的源程序文件;,*.asm:汇编语言编写的源程序文件;,*.h:C语言程序的头文件,包括DSP/BIOS API模块的头文件;,*.lib:库文件;,*.cmd:链接命令文件;,*.obj:由源文件编译或汇编后所生成的目标文件;,*.out:完成编译、汇编、链接后所形成的可执行文件,可在CCS监控下调试和执行;,*.wks:工作空间文件;,*.cdb:CCS的配置数据库文件,是使用DSP/BIOS API模块所必须的。,汇编伪指令,作用,举例,.title,紧跟其后的是用双引号括起的源程序名,.title“example”,.end,结束汇编命令,汇编程序将忽略此后的任何源语句,所以它是程序的最后语句,放在汇编语言源程序的最后,.data,紧跟其后的是已初始化数据,通常含有数据表或预先初始化的数值,.data,table1:.int 1,2,3,4,.int 5,6,7,8,Table2:.word -1,-2,-3,-4,.word -5,-6,-7,-8,.int,用来设置一个或多个16位无符号整型量常数,.word,用来设置一个或多个16位带符号整型量常数,.text,紧跟其后的是汇编语言程序正文,.bss,.bss为未初始化变量保留存储空间,.bss x,4,表示在数据存储器中空出4个存储单元存放变量x1,x2,x3,x4,.sect,建立包含代码和数据的自定义段,.sect”vectors”,定义中断服务程序段,紧随其后的是复位向量和中断向量,常用伪指令一览表,汇编伪指令,作用,举例,.mmregs,将TMS320各寄存器名定义为全局符号,这样就可以直接引用寄存器(符号),.set,.set伪指令附一常数值给某个符号,也可以将符号常数赋给寄存器,Shift .set 5,ld#shift,A,AuxR1 .set AR1,MVMM AuxR1,sp,.copy/.include,从其他文件读取源代码语句。,.copy “coeff.inc”,.def,指定定义在当前模块中,但可被其他模块使用的符号,.def start,.global,声明符号为全局符号,使其在链接时可为其他模块使用,.global _c_int00,.ref,在当前块中使用,但在其他模块中定义的符号,链接器命令文件的编写和使用,链接命令文件中可以使用MEMORY命令和SECTIONS命令来定义目标系统的存储器配置图及段的映射。,MEMORY和SECTIONS链接伪指令,存储器伪指令MEMEORY,用来定义目标系统的存储器空间。段伪指令SECTIONS负责告诉链接器将输入文件中用.text、.data、.bss、.sect等伪指令定义的段放到MEMORY命令描述的存储器空间的什么位置。,MEMORY伪指令的一般语法为:,MEMORY,PAGE 0:name1(attr):original=constant,length=constant;,PAGE n:namen(attr):original=constant,length=constant;,(1)PAGE指定存储器空间页面,最多255。通常PAGE 0用于程序存储器,PAGE 1用于数据存储器。如果不指定PAGE,链接器默认指定PAGE 0。每一个PAGE代表一个完全独立的地址空间。,(2)name是存储器区间的取名,可由164个字符组成,包括AZ、az、$、.、_。名称对链接器没有特殊的含义,只是用来区分链接器区间。在不同的PAGE里区间名可以相同,但有同一个PAGE里区间名不能相同,且不能重叠配置。,(3)attr指定存储区的14种属性,属性为任选项,利用属性将输出段定位到存储器时加以限制。,R:指定该存储区可以读。,W:指定该存储区可以写。,X:指定该存储区可以装入可执行代码。,I:指定该存储区可以进行初始化。,如果不给存储区指定属性,默认为具有以上4种属性,可以不受限制地将任何输出段分配到该存储区。,(4)original指定存储区的起始地址,可以简写为org或o,该值是一个16位二进制常数,可以用十进制、八进制或十六进制数表示。,(5)length指定存储区的长度,可以简写为len或l。,SECTIONS伪指令语法格式如下:,SECTIONS,name:property,property,property,name:property,property,property,name:property,property,property,链接器命令文件举例,MEMORY PAGE 0:VECT:origin=0 x8000h,length 0 x040h PAGE 0:PROG:origin=0 x8040h,length 0 x600h PAGE 1:DATA:origin=0 x8000h,length 0 x400hSECTIONS.vectors VECT PAGE 0.text PROG PAGE 0.bss DATA PAGE 1.const DATA PAGE 1,;,this function is FFT,.title FFT.asm,.mmregs,.copy coeff.inc“,;从coeff.inc文件复制旋转因子系数,.def _c_int00,sine1:.usectsine1,512,;512=N/2,N=1024(最大N=1024),cosine1:.usect cosine1,512,sine:.usectsine,512,;512=N/2,N=1024(最大N=1024),cosine:.usect cosine,512,fft_data:.usect fft_data,1024,d_input:.usect d_input,1024,fft_out:.usect fft_out,512,STACK .usect STACK,10,.bss d_twid_idx,1,.bssd_data_idx,1,.bssd_grps_cnt,1,.sectfft_prg“,。,MEMORY,PAGE 0:,EPROM:org=0E000h,len=1000h,VECS :org=0FF80h,len=0080h,PAGE 1:,SPRAM:org=0060h,len=0020h,DARAM:org=0200h,len=1000h,RAM:org=8000h,len=1500h,SECTIONS,sine1 :EPROM PAGE 0,cosine1 :EPROM PAGE 0,fft_prg :EPROM PAGE 0,.vectors:VECS PAGE 0,.bss :SPRAM PAGE 1,sine :align(1024)DARAM PAGE 1,cosine :align(1024)DARAM PAGE 1,d_input :RAM PAGE 1,fft_data :RAM PAGE 1,fft_out :RAM PAGE 1,STACK :SPRAM PAGE 1,存储空间名称,分配各个段到各个存储空间,该伪指令就是用来指定存储器的模型,该伪指令将输出段分配到指定的存储器范围,程序存储器,E000,E1FF,E200,E3FF,E400,E4A2,FF80,EFFF,正弦系数表,余弦系数表,程序代码,0000,005F,0060,0061,0062,0063,006C,0400,05FF,0800,09FF,8000,87FF,8800,8FFF,9000,93FF,数据存储器,sine1,cosine1,fft_prg,.vectors,.bss,存储器映射,寄存器,暂存单元,堆栈,正弦系数表,余弦系数表,输入数据,FFT 结果,(实部、虚部),FFT结果,(功率谱),sine,cosine,d_input,fft_data,fft_out,用CCS开发简单的程序,1,创建新的工程文件,工程文件中包含着设计中所有的源代码文件、链接器命令文件、库函数、头文件等。,(,1,)在,CCS,的安装目录的,myprojects,子目录下创建一个,myfile1,目录。,(,2,)启动,CCS,,在,Project,菜单中选择,New,项,在,Project,中输入,myfile1,,,CCS,将创建一个名为,myfile1.pjt,的工程。,2.,将文件添加到工程中,(,1,)新建源文件,执行菜单file/New/source files,并把文件保存在myfile工程文件夹下。,(,2,)在工程中添加源文件,执行菜单project/add files to project,把此文件添加到工程中。,3生成和运行程序,(,1,)选择菜单命令,ProjectRebuild All,,对工程重新编译、汇编和链接,主窗口下方的信息窗口将显示,build,进行汇编、编译和链接的相关信息。,(,2,)选择菜单命令,File,Load Program,,在当前目录的,Debug,目录下选择,myfile,.,out,并打开,将,Build,生成的程序加载到,DSP,中。,(,3,)选择菜单命令,Debug,Run,或在,Debug,工具栏上单击,Run,按钮,运行该程序。,举例,实现数组a20=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,x20=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1的初始化,并将数据存储器中的数组x20复制到数组y20,将数据存储器中的a20写入到程序存储器PROM(2000H-2013H),再将程序存储器PROM中的20个数据存入数据存储器DATA(0200H-0213H),1.编写汇编源程序,.mmregs,.data,TBL:.word,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,.word 1,1,1,1,1,1
展开阅读全文