第五章DSP开发工具及环境一、DSP开发工具介绍◆软件仿真器(Simulator)◆DSP入门套件(DSK,DSPStarterKit)◆标准评估模块(EVM)◆硬件仿真器XDS510◆集成开发软件CCS1、软仿真器(Simulator)软仿真器是一个软件程序,使用主机的处理器和存储器来仿真TMS320DSP的微处理器和微计算机模式,从而进行软件开发和非实时的程序验证。使用这种软仿真器,可以在没有目标硬件的情况下作DSP软件的开发和调试。2、DSP入门套件(DSK,DSPStarterKit)DSK是一个较完整的DSP系统,它既具备良好的硬件平台,又配有CCS软件和应用示例,同计算机连接也十分方便。可以用于初学者的学习平台,或用于大学的教学使用。同时DSK也提供详细的原理图和PLD原码,对于开发是一个很好的参考。3、标准评估模块(EVM)TMS320的评估模块(EVM)是廉价的开发板,用于器件评估、标准程序检查、以及有限的系统调试。EVM是一个PC插件,包括目标处理器、一个小容量的存储器、和有限的外设。EVM可以用来实时运行代码,并与外部系统接口。4、硬件仿真器XDS510扩展开发系统(XDS,extendeddevelopmentsystem)是功能强大的全速仿真器,用以作系统级的集成与调试。扫描式仿真(Scan-BasedEmulator)是一种独特的、非插入式的系统仿真、集成、调试方法。使用这种方法,程序可以从片内或片外的目标存储器实时执行,在任何时钟速度下都不会引入额外的等待状态。5、集成开发软件CCSCCS是开放的软件平台,它可以支持不同的硬件接口,因此不同的硬件接口必须通过标准的Driver同CCS连接。◆集成可视化代码编辑界面◆集成代码生成工具◆基本调试工具◆支持多DSP调试◆断点工具二、硬件仿真系统PCI开发系统ISA开发系统EPP开发系统三、CCS的使用编写源程序(*.asm、*.c)链接命令文件(*.cmd)。建立项目文件(*.mak或者*.pjt,1.2版本的使用*.mak;2.0以上版本的使用*.pjt)。在项目文件建立之后,向项目添加程序。添加的程序包括:源程序*.asm、*.c,链接命令文件*.cmd以及根据需要可能要加入的库文件*.lib等。系统默认的环境为当前CCS所在的Projects下,即所有的源程序、链接命令文件、项目文件以及调试过程中生成的目标文件*.obj、映射文件*.map、绝对列表文件等以及链接成功后生成的COFF文件等都在此子目录下。如果想改变,就得设置路径使指向目标所在。调试环境的设置:软件的调试在设置完成后,就可进行调试。调试主要包括汇编、编译、链接。当汇编完全通过后,即可进行输出文件的加载。文件加载成功后,即可运行调试。F5键连续运行;F8键单步执行。可通过观察DSP的寄存器、数据存储器等进行调试。检查调试情况选择View菜单下的CPURegisters\CPURegisters,观察CPU寄存器在程序运行时的变化情况;选择View菜单下的CPURegister\PeripheralRegs,观察CPU外围寄存器在程序运行时的变化情况;选择View菜单下的Memory,可选数据区、程序区、I/O空间的数据变化情况存储器窗口例:软件仿真器Simulator的使用建立子目录d:\tic5000\c5400\exerice将lab1.asm,lab1.cmd文件拷贝在exerice子目录下。进入CCSC5000从Project目录下选择new,建立一个新项目文件。输入文件名:lab1.mak。(或lab1.pjt)从Project目录下选择AddFilestoProject(给项目中添加文件),将需用的文件(源程序文件、链接文件等)lab1.asm,lab1.cmd添加入:lab1.mak。分别对汇编器、编译器、链接器进行设计。查看编译、链接过程中的信息加载运行文件。运行程序。对程序进行调试。四、程序设计举例1、计算.bssx,5.bssy,1STM#x,AR1STM#4,AR2LD#0,Aloop:ADD*AR1+,ABANZloop,*AR2-STLA,y51iixy2、计算z=x+y-wLD@x,AADD@y,ASUB@w,ASTLA,@z3、计算y=mx+bLD@m,TMPY@x,AADD@b,ASTLA,@y4、计算y=x1*a1+x2*a2LD#0,BLD@x1,TMAC@a1,BLD@x2,TMAC@a2,BSTLB,@ySTHB,@y+15、在中找出最大值,并存放在累加器A中STM#a,AR1STM#x,AR2STM#2,AR3LD*AR1+,TMPY*AR2+,Aloop1LD*AR1+,TMPY*AR2+,BMAXABANZloop1,*AR3-51iixyiixa6、数组初始化x[5]={0,0,0,0,0}方法一:.bssx,5STM#x,AR1LD#0,ARPT#4STLA,*AR1+方法二:.bssx,5STM#x,AR1RPTZA,#4STLA,*AR1+7、对数组x[5]的每个元素加1.bssx,5Begin:LD#1,16,BSTM#4,BRCSTM#x,AR4RPTBnext-1ADD*AR4,16,B,ASTHA,*AR4+next:LD#0,B8、计算y=程序:*********************************************example.asm*********************************************.title“example.asm”.mmregsstack.usect“STACK”,10h.bssa,4.bssx,4.bssy,1.defstart.dataiiixa41;为堆栈指定空间;为变量分配9个字的空间计算y=iiixa41table:.word1,2,3,4.word8,6,4,2.textstart:STM#0,SWWSRSTM#STACK+10h,SPSTM#a,AR1RPT#7MVPDtable,*AR1+CALLSUMend:Bend;变量初始化;插入0个等待状态;设置堆栈指针;AR1指向a;移动8个数据;从程序存储器到数据存储器;调用SUM子程序计算y=程序:iiixa41SUM:STM#a,AR3STM#x,AR4RPTZA,#3MAC*AR3+,*AR4+,ASTLA,@yRET.end;子程序执行9、编写0.4÷(-0.8)的程序数据存储器.bssnum,1num分子.bssden,1den分母.bssquot,1quot商::.datatable.word4*32768/10;0.4.word-8*32768/10;-0.8table0.4-0.8.textstart:STM#num,AR1AR1numRPT#1MVPDtable,*AR1+0.4-0.8quot例:编写0.4÷(-0.8)的程序0.4::-0.8商-0.80.4数据存储器numdenquottableAR1quotLD@den,16,A;分母送AHMPYA@num;商符号送B(num)×AH→B,即分子×分母→B,取符号。ABSA;取分母绝对值STHA,@den0.8LD@num,16,A;分子送AHABSA;取分子绝对值RPT#14SUBC@den,A;15次减法循环完成除法XC1,BLT;若B0,则变号NEGASTLA,@quot;保存商-0.5例:编写0.4÷(-0.8)的程序运行结果:被除数除数商(十六进制)商(十进制)4*32768/100(0.4)-8*32768/100(-0.8)0xC000-0.5-12810240xF000-0.125.bssx,8begin:LD#1,16,BSTM#7,BRCSTM#x,AR4RPTBnext-1ADD*AR4,16,B,ASTHA,*AR4+next:LD#0,B…注意①块结束地址REA通常取程序块最后一条指令的下一条指令地址-1;②重复次数为7次③RPTB指令可以响应中断。10、对数组x[8]中的每一元素加1。11、编制计算的程序41iiixaya1=0.3a2=0.2a3=-0.4a4=0.1x1=0.6x2=0.5x3=-0.1x4=-0.2.bssa,4.bssx,4.bssy,1.datatable:.word3*32768/10.word2*32768/10.word-4*32768/10.word1*32768/10.word6*32768/10.word5*32768/10.word-1*32768/10.word-2*32768/10axy编制计算的程序41iiixaya1=0.3a2=0.2a3=-0.4a4=0.1x1=0.6x2=0.5x3=-0.1x4=-0.2axy.textstart:SSBXFRCTSTM#x,AR1RPT#7MVPDtable,*AR1+0.30.2-0.40.10.60.5-0.1-0.2STM#x,AR2STM#a,AR3RPTZA,#3MAC*AR2+,*AR3+,ASTHA,@y0.3done:Bdone