dsp程序编写和调试环境_第1页
dsp程序编写和调试环境_第2页
dsp程序编写和调试环境_第3页
dsp程序编写和调试环境_第4页
dsp程序编写和调试环境_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

会计学1dsp程序编写和调试环境4.1伪指令及相关概念1.伪指令\宏指令\汇编指令伪指令(Directives)是在汇编和连接的时候提供控制信息和数据,并不产生目标代码。宏指令(MacroDirectives)用户自己创建的指令,在汇编时将其展开并汇编为对应的目标代码。如看门狗。汇编指令(AssemblerDirectives)在汇编时将产生一一对应的目标代码。一.相关概念第1页/共35页2.段\页段:目标文件的最小单位称为段,它是在存储器中占有连续空间的代码块或数据块。页:64K的数据存储器可以分为512个数据页,每页的大小是128字。3.输出段在SECTIONS伪指令描述的输出文件中定义的段,这些段被定义好了内容以及怎么被分配。4.源列表文件将源文件进行汇编,在产生目标文件的同时,还可以产生源列表文件。它是在汇编器对源程序进行汇编后产生的目标代码和源语句的列表文件。可以优化编译器输出。第2页/共35页5.宏定义与子程序的区别宏定义

为了简化汇编语言源程序的书写,通常把一些出现较为频繁的程序段定义为宏指令,当程序需要被执行时,只需要一条宏调用语句。使用宏指令的优点在于可以有效的缩短源程序的长度,节省代码占用内存空间,使得代码易读,同时减少了重复书写引起的错误。子程序

是一个程序段,在程序中通过跳转指令调用,在每次调用的时候,都需要把整个子程序复制到内存中运行,占用更多的内存空间。6.SPC(SectionProgramCounters)汇编器为每个段保留一个独立的程序计数器(SPC),汇编器从0地址开始处理每一个段,同一个段均按顺序存放。连接器根据每个段在内存图的最后位置进行再定位。第3页/共35页二.伪指令的功能伪指令的功能包括:1.把代码和数据汇编到指定的段。2.为未定义的变量保存空间。3.控制列表(LIST)文件。4.分配存储器。5.汇编条件块。6.定义全局变量。7.指定汇编器能得到的宏。8.检查符号调试信息。第4页/共35页三.伪指令的分类1.段定义伪指令:把汇编程序的各个部分与适当的段(数据块或程序块)联系起来。.bss,.data,.text,.sect,.usect;2.初始化常数伪指令:在当前段中汇编数值。.bes,.space,.byte,.field,.float,.bfloat,.int.word,.long,.blong,.string;3.段程序计数器排列伪指令:使段程序计数器SPC指向预定的位置(例如页边界)。.align,.even;第5页/共35页4.引用其他文件伪指令:提供或者获取文件的信息。.copy,.include,.global,.def,.ref,.mlib;5.条件汇编伪指令:.if,.elseif,.else,.endif,.loop,.break,.endloop;6.汇编时的符号伪指令:把自定义的符号等同于常数值或者字符串;.asg,.eval,.set,.equ,.struct,.endstruct,.newblock7.其他伪指令:.end,.label,.mmregs,.port,.sblock,.version,.emsg,.wmsg;第6页/共35页四.常用的伪指令的讲解1.align用途:.align伪指令重置短程序计数器(SPC),使其指向下一个页边界,以保证后面的代码从一个数据页开始。汇编器将原页中间的未用空间用含NOP指令的字填充,一直填到该页边界。例5.10000 SPLK#0,AX ;0页:0000~0079H0080 .align ;从下一页00080H开始0080 … 0081 … 0082 … 0100 .align ;从下一页00100H开始0100 SPLK#0,BX新的一页第7页/共35页2

.word,.int把一个或多个16位的值存储在当前段连续的字中。例:

.word0FFFFH.word0FFFFH.word0FFFFH

第8页/共35页3.bss

用法:

.bss符号,字长[,块标志].bss

该指令表示在RAM中保留空间。(1)符号是一个必要参数,它指向.bss保留空间的第一个地址。(2)字长也是必需参数,它是一个绝对表达式,表示汇编器在.bss段内分配多个字。(3)块标志是可选参数,如果不指定块标志或指定为0,则汇编器在当前.bss段SPC处分配空间;如果块标志为1,则汇编器将检查当前SPC和页边界之间是否有足够的空间为变量分配,若有就连续分配,若无就从下页开始分配。第9页/共35页4.copy,.include

当汇编器遇到.copy和.include伪指令时,将停止汇编当前的源文件语句,而去编译.copy和.include文件中的语句,然后继续汇编.copy和.include后开始的源文件语句。

.copy,.include告诉编译器从其他文件中读入源语句。区别在于:.copy读入的源语句将在列表文件中列出,而.include伪指令读入的不在列表文件中列出。5.data,.text .data:是数据段定义伪指令。它告诉汇编器把源代码汇编到.data段中,且.data成为当前段。该段通常用来存放数据表或初始化前的变量。

.text:定义.text段中的代码部分,该部分为可执行代码。.text段是默认段,若汇编开始不指定其他段,就自动汇编到该段。第10页/共35页6.title用法:.title“字符串” 该伪指令为每一页输出列表文件打印标题(字符串的内容)。字符串不能超过65个字符,汇编器在随后的页面中打印出标题。其作用是生成标志符号,方便通过用反汇编器结合.title所定义字符串来观察生成的*.out文件的代码。7.def,.ref,.global .def,.ref,.global伪指令所指定的符号为全局符号,这些全局符号可以在外部定义或在外部被引用。

.def指定在当前模块中定义且可以在其他模块中使用的符号。汇编器将该符号引入符号表。

.ref指定一个或多个在当前模块中使用但在其他模块中定义的符号。一般与.def定义的符号对应。汇编器将该符号标记为未定义的外部符号放入目标符号表,由连接器在连接时处理该符号的定义。

.global同时具备.def,.ref的功能,需要时可代替它们。第11页/共35页8.usect .sect,8.1

.usect用法: 符号名

.usect“段名”,字长[,块边界] .usect为一个未命名段中的变量保留空间。类似.bss伪指令(都为保留空间,但.usect可以在内存中任意定义,而.bss则是独立的)。(1)符号名指向.usect指定的第一个单元,它代表所预留空间的变量名。(2)段名告诉编译器从哪一个命名段开始保留空间。段名放在双引号内,前8个字符有效。(3)字长定义了该段保留的字数空间,可以用表达式表示。(4)块边界为可选项,如果为非0,则改段为分块段。表示在进行地址分配时,尽量不超过一页,若超过一页时,则从另一页的边界开始。用.usect对同一段名重复定义,可以将连续存放在存储器的若干变量定义在同一个段内。第12页/共35页本例中用.usect伪指令定义两个未初始化的命名段var1和var2。符号ptr和array分别指向var1段内1个字和100个字的第一个字。dflag指向var1段中50个字块中的第一个字。

vec指向var2段中50个字块中的第一个字。.usect执行之后的存储器分布示意图第13页/共35页8.2.sect用法:.sect “段名”定义初始化命名段。段名必须用引号引起。该段中可包括代码或者数据,类似于.text和.data。9.set伪指令: 用法:符号.set数值.set定义的符号在符号表中,不能重复定义。在数值表达式中的符号必需事先定义。用.def或.global可以使用由.set定义的符号被其他模块调用。例: IMR.set0004h;InterruptMaskRegister

IFR.set0006h;InterruptFlagRegister 第14页/共35页10.byte,.float,.bfloat,.int,.word,.long,.blong,.string,.field10.1.byte用法:[标号].byte数值1[,数值2,……].byte指令将一个或者多个8位的值植入当前段的连续字中。数值可以是常数,表达式,字符串。使用标号的时候,汇编器指向第一个.byte位置。每个.byte指令可以定义100个设置,若有字符串,则总数值长度不超过200个字符。例如:

0100 strx .byte ”ab” 0101 …后面几个指令用法也基本类似,但数据类型不同。第15页/共35页五.DSP汇编的工作原理1.汇编编译连接:结合图进行讲述第16页/共35页编写C语言源程序优化ANSIC编译器汇编语言汇编器生成目标文件链接器生成TMS320汇编文件编写TMS320汇编源程序宏汇编源文件文档管理器宏汇编库输出执行文件调试器TMS320目标系统写EEPROM软件仿真软件开发系统评测模块EVM系统仿真XDS软件系统设计框图第17页/共35页2.COFF文件格式:CommonObjectFileFormat

使用汇编器可以将汇编语言源程序汇编成为目标文件,用连接器将若干个目标文件连接成一个可以被TMS320C1X/C2000/C5X芯片执行的可执行文件。这些目标文件的格式称为通用目标文件格式COFF。

COFF文件总包括3个默认的段: 文本段(.text):通常包括可执行代码。 数据段(.data):通常包括已初始化的数据。 预留段(.bss):通常保留用于未初始化变量的空间。第18页/共35页目标文件(.obj)中段Section与目标内存之间的关系第19页/共35页4.2简单的程序设计过程在程序设计时,一般来说需要进行规范的文件管理,使得源代码组织清晰易读,有利于交流和加快开发的进度。1.如果需要在多个模块中使用相同的设置和中断处理,通常将芯片映射到数据空间的寄存器地址及标号、预置变量和常数的空间等设置语句集中在一个文件中,称为I/O寄存器头文件(如F2407REG.h)。2.将定义程序、数据和I/O空间地址块大小和位置的伪指令集中在一个文件称为命令文件(如F2407.cmd)。

[以上两个合称为公用文件。]第20页/共35页3.应用程序采用.copy或.include伪指令将I/O寄存器头文件复制到应用程序中,形成一个汇编源程序(如delay.asm)。再由汇编器进行汇编后生成一个目标文件(如delay.obj),最后连接器把该目标文件和命令文件相连接,生成可执行文件(如delay.out).第21页/共35页4.命令文件*.cmd文件的介绍:

TMS320系列芯片的存储器配置随应用的不同而不同。用链接器伪指令MEMORY可以确定目标系统的各种内存配置。当MEMORY决定了存储器模式后,可以用链接器伪指令SECTIONS确定连接器组合输入段的方法和输出段在存储器中的位置。第22页/共35页VECTBLK_B1PMBLK_B2myVARBLK_B0BUFFERSARAM_DCACHEEX2_DMPACKET第23页/共35页5.1MEMORY伪指令确定在目标系统中具有物理位置并且可以被程序使用的存储器范围,该指令并不对存储器进行逻辑配置。TMS320器件具有独立的程序存储器,数据存储器和I/O存储器空间,连接器允许用户使用MEMORY伪指令的PAGE选项单独配置这些地址空间。第24页/共35页(1)MEMORY的一般格式:

MEMORY { PAGE0:存储器名1[(属性)]:ORIGIN=常数,LENGTH=常数

. . . PAGEn:存储器名n[(属性)]:ORIGIN=常数,LENGTH=常数

}第25页/共35页说明:1.PAGE:定义一个存储空间,用户可以定义多达255页。PAGE0定义程序存储器,PAGE1定义数据存储器。每个PAGE代表一个完全独立的地址空间。在PAGE0上以配置的存储器可以和在PAGE1上已配置的存储器重叠。在同一页中的存储器名不能有相同的名字,且不能重叠。2.ORIGIN:指定存储器区域的起始地址,可以是16位常数、十进制,八进制或者十六进制常数。LENGTH指定存储器的长度。第26页/共35页5.2SECTIONS伪指令:SECTIONS功能:1描述输入段怎样被组合到输出段内;2定义在执行程序中的输出段;3规定输出段在存储器中的位置;4允许重新命名输出段;格式:SECTIONS{ 段名1:[特性1,特性2,…]段名1:[特性1,特性2,…] ……}特性列表第27页/共35页5.2.1SECTIONS伪指令中的特性列表选项有以下几种:装载地址:规定段将被装载在存储器中的位置。句法如下:

load

>allocation

或load

{}>allocation

注:allocation是MEMORY伪指令所定义的给输出段分配存储单元。具体写法有很多种:

.text:{}>PMPAGE0.text:>PMPAGE0第28页/共35页*.cmd文件的例子例:F2407.cmdMEMORY{PAGE0: /*PROGRAMMEMORY*/ VECS :ORIGIN=0000H, LENGTH=0044H PM :ORIGIN=00100H,LENGTH=7000HPAGE1: /*DATAMEMORY*/ BLK_B2 :ORIGIN=0060H, LENGTH=20H /*BlockB2*/ BLK_B0 :ORIGIN=0200H,LENGTH=100H /*BlockB0*/ BLK_B1 :ORIGIN=0300H,LENGTH=100H /*BlockB1*/ SARAM_D :ORIGIN=0800H,LENGTH=0800H /*2KSARAMindataspace*/ EX2_DM :ORIGIN=8000H,LENGTH=8000H /*ExternaldataRAM*/

}第29页/共35页SECTIONS { vector :{}>VECSPAGE0 /*ASVECTOR

/*ISINCLUDE /*INMAINPROGRAM*//*ItCAN'TBEALLOCATEINCMDFILE*/ .text :{}>PM PAGE0.bss :{}>BLK_B0 PAGE1.data :{}>BLK_B1 PAGE1

myVAR :{}>BLK_B2 PAGE

1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论