DSP软件开发.ppt
- 文档编号:2638411
- 上传时间:2022-11-04
- 格式:PPT
- 页数:22
- 大小:487.50KB
DSP软件开发.ppt
《DSP软件开发.ppt》由会员分享,可在线阅读,更多相关《DSP软件开发.ppt(22页珍藏版)》请在冰豆网上搜索。
第五章第五章TMS320C54X应用软件开发过程应用软件开发过程1、选择汇编语言编写源程序、选择汇编语言编写源程序2、选择开发工具和环境、选择开发工具和环境文本文本编辑器编辑器汇编器汇编器.asm源文件源文件.obj目标文件目标文件链接器链接器.out可执行文件可执行文件DSP调试程序调试程序.cmd链接命令文件链接命令文件.map存储器映像文件存储器映像文件mal.lst列表文件列表文件oHEX500ROM编程器编程器汇编语言的编辑、汇编、连接过程汇编语言的编辑、汇编、连接过程asm500lnk500hex500图图TMS320C54xDSP软软件件开开发发流流程程表5-1TMS320C54xV3.50版代码生成工具程序asm500inputfileobjectfilelistingfile-option-a:
-a:
产生一个绝对地址清单。
产生一个绝对地址清单。
-g:
-g:
允许汇编器在源码调试器中进行源码调试。
允许汇编器在源码调试器中进行源码调试。
-s:
-s:
将所有定义的符号放入目标文件的符号表中将所有定义的符号放入目标文件的符号表中Lnk500filename1filenamenoption例如:
例如:
Lnk500Lnk500file1.objfile2.objfile1.objfile2.objoolink.outlink.outLnk500Lnk500mmlink.maplink.maplinker.cmdlinker.cmd汇编器:
链接器:
-ofilename-ofilename对可执行输出模块命名对可执行输出模块命名-m-mfilenamefilename生成一个生成一个MAPMAP映像文件,映像文件,MAPMAP文件中说明了存储文件中说明了存储器配置、输入、输出段布局以及外部符号重定位之后的地址器配置、输入、输出段布局以及外部符号重定位之后的地址-cc使用由使用由TMS320C54C/C+TMS320C54C/C+编译器的编译器的ROMROM自动初自动初始化模型所定义的链接约定始化模型所定义的链接约定语法:
语法:
标号标号:
助记符助记符操作数操作数;注释;注释5.2C54X汇编汇编语言书写规范语言书写规范u所有语言必须以标号、空格、星号或分号开始所有语言必须以标号、空格、星号或分号开始u所有包含汇编伪指令的语句必须在一行完全指定所有包含汇编伪指令的语句必须在一行完全指定u可以选择带有标号,若使用标号,则标号必须从可以选择带有标号,若使用标号,则标号必须从第一列开始第一列开始u每区必须用一个或多个空格分开每区必须用一个或多个空格分开TabTab字符键与空格字符键与空格等效等效u程序中可以有注释程序中可以有注释,注释开始在第一列时注释开始在第一列时,前面需标前面需标上星号或分号上星号或分号(*(*或或;),;),但在其他列开始的注释前面但在其他列开始的注释前面只能标上分号只能标上分号汇编语言编写的一般规则为:
汇编语言编写的一般规则为:
l标号区标号区标号分大小写,且第一字符不能是数字,后面可以带标号分大小写,且第一字符不能是数字,后面可以带冒号(冒号(:
),但冒号并不处理为标号名的一部分。
标号实:
),但冒号并不处理为标号名的一部分。
标号实际代表了该代码行在程序或数据段中的地址际代表了该代码行在程序或数据段中的地址l助记符区助记符区助记符区可以包含以下操作码之一:
助记符区可以包含以下操作码之一:
机器指令助记符(机器指令助记符(STMSTM,MACMAC,MPVDMPVD,STLSTL)(建议大写)建议大写)汇编伪指令(汇编伪指令(.data,.set,.textdata,.set,.text););(小写)(小写)宏伪指令宏伪指令(.macro,.var,.mexitmacro,.var,.mexit););宏调用宏调用l操作数区操作数区操作数可以是常数、符号或表达式,操作数之间必操作数可以是常数、符号或表达式,操作数之间必须用逗号隔开,有的指令无操作数须用逗号隔开,有的指令无操作数#前缀表示立即数或直接地址前缀表示立即数或直接地址后缀后缀B或或b表示二进制常数表示二进制常数例如:
例如:
LD#1000B,A后缀后缀Q或或q表示八进制常数,或以表示八进制常数,或以0开始的常数开始的常数例如:
例如:
LD#10Q,A(010,A)十进制常数十进制常数例如:
例如:
LD#1000,A后缀后缀H或或h表示十六进制常数表示十六进制常数例如:
例如:
LD#1000H,A使用使用.set定义一个符号常数值定义一个符号常数值例如例如addr.set1000hstm#addr,ar0C54X汇编语言书写规范(数的表示)汇编语言书写规范(数的表示)汇编伪指令汇编伪指令作用作用举例举例.titile紧跟其后的是用双引号括起的源程序名紧跟其后的是用双引号括起的源程序名.title“example”.end结束汇编命令,汇编程序将忽略此后的结束汇编命令,汇编程序将忽略此后的任何源语句,所以它是程序的最后语句任何源语句,所以它是程序的最后语句放在汇编语言源程序的最后放在汇编语言源程序的最后.data紧跟其后的是已初始化数据,通常含有紧跟其后的是已初始化数据,通常含有数据表或预先初始化的数值数据表或预先初始化的数值.datatable1:
.int1,2,3,4.int5,6,7,8Table2:
.word-1,-2,-3,-4.word-5,-6,-7,-8.int用来设置一个或多个用来设置一个或多个1616位无符号整型量位无符号整型量常数常数.word用来设置一个或多个用来设置一个或多个1616位带符号整型量位带符号整型量常数常数.text紧跟其后的是汇编语言程序正文紧跟其后的是汇编语言程序正文.bss.bssbss为未为未初始化变量保留存储空间初始化变量保留存储空间.bssx,4表示在数据存表示在数据存储器中空出储器中空出4个存储单元存个存储单元存放变量放变量x1,x2,x3,x4.sect建立包含代码和数据的自定义段建立包含代码和数据的自定义段.sect”vectors”定义中定义中断服务程序段,紧随其后的断服务程序段,紧随其后的是复位向量和中断向量是复位向量和中断向量常用伪指令一览表常用伪指令一览表汇编伪指令汇编伪指令作用作用举例举例.mmregs将将TMS320TMS320各寄存器名定义为全局符各寄存器名定义为全局符号,这样就可以直接引用寄存器号,这样就可以直接引用寄存器(符号)(符号).set.set.set伪指令附一常数值给某个符号,伪指令附一常数值给某个符号,也可以将符号常数赋给寄存器也可以将符号常数赋给寄存器Shift.set5ld#shift,AAuxR1.setAR1MVMMAuxR1,sp.copy/.include从其他文件读取源代码语句。
从其他文件读取源代码语句。
.copy“coeff.inc”.def指定定义在当前模块中,但可被其指定定义在当前模块中,但可被其他模块使用的符号他模块使用的符号.defstart.global声明符号为全局符号,使其在链接声明符号为全局符号,使其在链接时可为其他模块使用时可为其他模块使用.global_c_int00.ref在当前块中使用,但在其他模块中在当前块中使用,但在其他模块中定义的符号定义的符号.titleexample8.asm.mmregsSTACK.usectstk,10H;设置堆栈指针设置堆栈指针.bssa,4;为变量分配为变量分配4个字的存储的空间个字的存储的空间.bssx,4.bssy,1.def_c_int00.datatable:
.word1,5,3,4;a1,a2,a3,a4.word8,6,7,2;x1,x2,x3,x4.sectvectorsB_c_int00NOPNOP.text_c_int00:
STM#0,SWWSR;插入插入0个等待状态个等待状态STM#STACK+10H,SP;设置堆栈指针设置堆栈指针STM#a,AR1;AR1指向指向x1RPT#7;移动移动4个数据个数据MVPDtable,*AR1+;程序存储器程序存储器CALLMAXend:
BendMAX:
STM#a,AR1STM#x,AR2STM#2,AR3LD*AR1+,TMPY*AR2+,A;第一个乘积在累加器第一个乘积在累加器A中中loop:
LD*AR1+,TMPY*AR2+,B;其他乘积在累加器其他乘积在累加器B中中MAXA;A和和B比较,选大的存比较,选大的存A中中BANZloop,*AR3-;循环共进行循环共进行3次乘法和比较次乘法和比较STLA,yRET.end*44公共目标文件格式公共目标文件格式公共目标文件格式,即公共目标文件格式,即COFF(CommonObjectFileFormat)441COFF文件中的段文件中的段段段(sections)是是COFF文文件件中中最最重重要要的的概概念念。
一一个个段段就就是是最最终终在在存存储储器器映映象象中中占占据据连连续续空空间间的的一一个个数数据据或或代代码码块块。
目目标标文文件件中中的的每每一一个个段段都都是是相相互互独独立立的的。
一一般般地地,COFF目标文件包含目标文件包含3个缺省的段:
个缺省的段:
text段、段、data段、段、bss段段。
段可以分为两大类,即已初始化段和未初始化段。
段可以分为两大类,即已初始化段和未初始化段。
图图5-2目标文件中的段与目标存储器的关系目标文件中的段与目标存储器的关系.bss(未初始化段未初始化段)(此段通常为未初始化变量保留数(此段通常为未初始化变量保留数据存储空间)据存储空间).sect(已初始化段)已初始化段)(建立包括代码和数据的自定义(建立包括代码和数据的自定义段,保留在程序区)段,保留在程序区).usect(未初始化段)未初始化段)(此段通常为未初始化变量保留(此段通常为未初始化变量保留数据存储空间)如:
数据存储空间)如:
在数据区在数据区RAM空间开辟一个堆栈区空间开辟一个堆栈区.text(已初始化段)已初始化段)(此段通常包含可执行代码,保留(此段通常包含可执行代码,保留代码在程序区)代码在程序区).data(已初始化段)已初始化段)(通常含有数据表或预先初始化的(通常含有数据表或预先初始化的数值,保留在程序区)数值,保留在程序区)为了灵活使用为了灵活使用C54XC54X的内存,可以将不同的代码段放的内存,可以将不同的代码段放入不同的内存中。
在汇编源程序中可以使用下列指令:
入不同的内存中。
在汇编源程序中可以使用下列指令:
(1).bss该指令表示在该指令表示在.bss.bss段中保留空间段中保留空间用法:
用法:
.bss符号符号,字数字数
(2).usect该指令表示在指定的段中保留空间该指令表示在指定的段中保留空间用法:
用法:
符号符号.usect“段名段名”,字数字数4.4.2汇编连接工具对段的处理汇编连接工具对段的处理其中:
其中:
符号符号对应于保留的存储空间第一个字的变量的名称对应于保留的存储空间第一个字的变量的名称字数字数表示在表示在.bss段或标有名字的段中保留多少个存储单段或标有名字的段中保留多少个存储单元元段名段名程序员为自定义未初始化段起的名字程序员为自定义未初始化段起的名字以上两个是未初始化的,以上两个是未初始化的,.bssbss常用于给数组或变量预留空间常用于给数组或变量预留空间,.usectusect常见于给堆栈开辟空间,二者一般指向数据区常见于给堆栈开辟空间,二者一般指向数据区RAMRAM中。
中。
.text将代码或数据放入将代码或数据放入.text段中段中.data将数据放入将数据放入.data段中段中.sect将代码或数据放入指定的段中。
将代码或数据放入指定的段中。
用法:
用法:
.text段起点段起点.data段起点段起点.se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 软件 开发
![提示](https://static.bdocx.com/images/bang_tan.gif)