TMS320C54x的软件开发.ppt

上传人:max****ui 文档编号:11541678 上传时间:2020-04-28 格式:PPT 页数:33 大小:109KB
返回 下载 相关 举报
TMS320C54x的软件开发.ppt_第1页
第1页 / 共33页
TMS320C54x的软件开发.ppt_第2页
第2页 / 共33页
TMS320C54x的软件开发.ppt_第3页
第3页 / 共33页
点击查看更多>>
资源描述
第4章TMS320C54x的软件开发,4.1TMS320C54x软件开发过程4.2汇编语言程序的编写方法4.3汇编伪指令和宏指令4.4公共目标文件格式COFF4.5汇编源程序的编辑、汇编和链接4.6汇编语言程序设计4.7C语言与汇编混合编程,4.4公共目标文件格式COFFCOFF(CommonObjectFileFormat,COFF):汇编器和链接器所创建的目标文件。COFF的核心概念:使用代码块(段)和数据块(段)编程,而不是指令或数据简单的顺序编写。采用段形式的优点:更利于模块化编程,管理代码段和目标系统存储器更灵活不必为程序代码或变量指定目标地址,这为程序编写和程序移植提供了极大的方便;能与系统存储单元充分配合;,4.4.1COFF文件中的段段(Sections)是COFF文件中最重要的概念。段就是在编写汇编语言源程序时,采用的代码块或数据块,它占据存储器的某个连续空间。在编写汇编语言源程序时,程序是按段组织的;每行汇编语句从属一个段,由伪指令标明该段的属性;一个目标文件中的每个段都是分开的和各不相同的。所有的COFF目标文件都包含以下3种形式的段:.text段(此段通常包含可执行代码);.data段(此段通常包含初始化数据);.bss段(此段通常为未初始化变量保留存储空间)。,此外,汇编器和链接器可以建立、命名和链接自定义段。自定义段是程序员自己定义(命名)的段;使用起来与.data、.text以及.bss段类似;它的好处是在目标文件中与.data、.text以及.bss分开汇编,链接时作为一个单独的部分分配到存储器。有2种形式:.sect建立的自定义段是已初始化段;.usect建立的自定义段是未初始化段。,汇编器根据伪指令用适当的段将各部分程序代码和数据连在一起,构成目标文件;链接器分配存储单元,即把各个段重新定位到目标存储器中。,图4.2目标文件中的段与目标存储器之间的关系,4.4.2汇编器对段的处理汇编器对段的处理是通过段定义伪指令区分出各个段,且将段名相同的语句汇编在一起。汇编器有5个段定义伪指令支持该功能,这5个伪指令是:.bss,.usect,.text,.data,.sect如果汇编语言程序中一个段伪指令都没有用,汇编器会把程序中的内容都汇编到.text段。汇编器对不同类型段的处理不同。,1.未初始化段未初始化段(Uninitializedsections)由.bss和.usect伪指令建立。未初始化段就是在目标存储器中的保留空间,以供程序运行过程中的变量作为临时存储空间使用。在目标文件中,这些段中没有确切的内容,通常它们定位到RAM区。,未初始化段分为默认的和命名的2种,其句法如下.bss符号,字数符号.usect“段名”,字数每调用.bss伪指令一次,汇编器在相应段保留预留字数的空间;每调用.usect伪指令一次,汇编器在指定的命名段保留预留字数的空间。,2.初始化段初始化段(Initializedsections)由.text、.data和.sect伪指令建立,包含可执行代码或初始化数据。这些段中的内容都在目标文件中,当加载程序时再放到存储器中。每个初始化段都是可以重新定位的,并且可以引用其他段中所定义的符号。链接器在连接时自动处理段间的相互引用。3种初始化伪指令的句法如下:.text段起点.data段起点.sect“段名”,段起点,二者的不同:当汇编器遇到.text或.data或.sect伪指令时,将停止对当前段的汇编(相当于一条结束当前段汇编的伪指令),然后将紧跟着的程序代码或数据汇编到指定的段中,直到再遇到另一条.text或.data或.sect伪指令为止。而当汇编器遇到.bss和.usect伪指令时,并不结束当前段的汇编,只是暂时从当前段脱离出来,并开始对新的段进行汇编。.bss和.usect伪指令可以出现在一个已初始化段的任何位置上,而不会对它的内容发生影响。,3.自定义段.usect和.sect可以创建自定义的段。自定义段是用户自己创建的,可以同默认的.test.data.bss段一样使用,但它们之间是单独汇编的。可为那些未初始化的、不在.bss段的变量保留空间。.usect创建同.bss段一样使用的自定义段,它在RAM中为变量保留空间。也可以汇编已初始化的、不在.data段中的数据,.sect创建像默认的.text和.data一样的段,可包含代码和数据,而且有可重定位的地址。,4.段程序计数器(SPC)汇编器为每个段都安排一个单独的段程序计数器(SPC)。SPC表示一个程序代码段或数据段内的当前地址。一开始,汇编器将每个SPC置0。当汇编器将程序代码段或数据加到一个段内时,相应的SPC就增加。如果继续对某个段汇编,则相应的SPC就在先前的数值上继续增加。链接器在链接时要对每个段进行重新定位。,【例4.4】段伪指令应用举例。行SPC代码汇编源代码10000.data;汇编至.data段200000011coeff.word011h,022h,033h000100220002003330000.bssbuffer,10;在.bss段为buffer变量;保留10个字的空间400030123ptr.word0123h;继续汇编至.data段50000.text;汇编至.text段60000100fadd:LD0Fh,A70001f010aloop:SUB#1,A0002000180003f842BCaloop,AGEQ;A=0跳转aloop00040001,90004.data10000400aaivals.word0AAh,0BBh,0CCh;继续汇编至.data段000500bb000600cc110000var2.usect“newvars”,1;自定义数据段,保留8;个字的空间120001inbuf.usect“newvars”,7130005.text;继续汇编至.text段140005110ampy:LD0Ah,B150006f166mloop:MPY#0Ah,B0007000a160008f868BCmloop,BNOV;Bnotoverflow00090006,170000.sect“vectors”;自定义数据段,;包含2个初始化字1800000011.word011h,033h1900010033field1field2field3field4行号SPC代码源程序,共建立了5个段。目标代码图,4.4.3链接器对段的处理链接器在处理段的时候,有如下2个主要任务:将由汇编器产生的COFF格式的一个或多个.obj文件链接成一个可执行的.out文件;重新定位,将输出的段分配到相应的存储器空间。链接器有2条命令支持上述任务:(1)MEMORY命令。定义目标系统的存储器配置图,包括对存储器各部分命名,以及规定它们的起始地址和长度;(2)SECTIONS命令。告诉链接器如何将输入段组合成输出段,以及将输出段放在存储器中的什么位置。,1.MEMORY命令作用:定义系统中所包含的各种形式的存储器,以及它们占据的地址范围。句法:MEMORYPAGE0:name1(attr):orign=constant,length=constant;PAGEl:namen(attr):orign=constant,length=constant;PAGE对一个存储空间加以标记。通常PAGE0程序存储器,PAGEl定为数据存储器。Name对一个存储区间取名。Origin存储区的起始地址。键入Origin、Org或O都可Length规定存储区的长度。键入Length、Len或L都可以Attr这是一个任选项,为命名区规定14个属性(RWXI)。,【例4.5】MEMORY命令的使用。MEMORYPAGE0:ROM:origin=0c00h,length=1000h;PAGE1:SCRATCH:origin=60h,length=20h;ONCHIP:origin=80h,length=200h;上述MEMORY命令所定义的系统的存储器配置如下:PAGE0为程序存储器,名ROM,起始地址0C00H,长度4K字。PAGEl为数据存储器,名SCRATCH,起始地址60H,长32字。PAGEl为数据存储器,名ONCHIP,起始地址80H,长度512字。,2.SECTIONS命令作用:说明如何将输入段组合成输出段;规定输出段在存储器中的存放位置;并允许重新命名输出段。句法:SECTIONSname:property,property,property,name:property,property,property,name:property,property,property,Name段名,每一个输出段的说明都从段名开始。Property性能参数,段名后面是一行说明段的内容和如何给段分配存储单元的性能参数。,一个段主要的性能参数有:装入存储器分配(Loadallocation)。定义段装入时的存储器地址,语法为load=allocation(这里allocation指地址)或allocation或allocation(2)运行存储器分配(Runallocation)。定义段运行时的存储器地址,语法为run=allocationrunallocation,【例4.6】SECTIONS命令的使用。file1.objfile2.objSECTIONS.text:load=ROM,run=800h.bss:load=RAM.vectors:load=FF80h.bss段结合file1.obj和file2.obj的.bss段且被装入RAM空间。.text段结合file1.obj和file2.obj的.text段,链接器将所有命名为.text的段都结合进该段,在程序运行时该段必须重新定位在地址0800h。.vectors段定位在地址FF80h。,3.MEMORY和SECTIONS命令的缺省算法如果没有利用MEMORY和SECTIONS命令,链接器就按缺省算法来定位输出段:MEMORYPAGE0:PROG:origin=0 x0080,length=0 xFF00PAGE1:DATA:origin=0 x0080,length=0 xFF80SECTIONS.text:PAGE=0.data:PAGE=0.cinit:PAGE=0.bss:PAGE=1,4.5汇编源程序的编辑、汇编和链接过程,4.5.1编辑:利用诸如Word、Edit、记事本等文本编辑器,编写汇编语言源程序,后缀为.asm。4.5.2汇编器作用:汇编语言源文件(.asm)翻译成机器语言目标文件(.obj)。输入文件:汇编语言源文件,其省缺的文件扩展名是.asm。,1.汇编器的功能(1)处理源语句,产生一个可重新定位的目标文件(.obj);(2)根据要求,产生源列表文件(.lst),并提供对该列表的控制;(3)根据要求,将交叉引用列表添加到源程序列表中;(4)将代码分段;设置一个段程序记数器(SPC);(5)定义和引用全局符号;,2.汇编器的调用命令格式如下asm500inputfileobjectfilelistingfile-options其中:inputfile汇编源文件名,缺省后缀为.asm;objectfile编译输出的目标文件名,缺省后缀为.obj;listingfile产生的列表文件名,缺省后缀为.lst;options编译器使用的各种选项,每个选项前面加有短横。常用选项有:-c:编译器忽略字母的大小写。-1:(小写的L)在编译时产生列表文件,缺省后缀为.lst。-s:将所有的符号都放入符号表。-x:产生一个交叉汇编表,并把它附加到列表文件的最后。例如:asm500example.asm-l-s-x,2.列表文件列表文件包括源程序的行号、段程序计数器(SPC)、目标代码和源程序4个部分。【例4.7】列表文件举例(example.lst部分)100000040008.word8,6,4,200000500060000060004000007000211000000.text;codefollows120000007728start:STM#0,SWWSR;addsnowaitstates0000010000,4.5.3链接器1.链接器的功能作用:将扩展名为.obj的一个或多个COFF目标文件链接起来,生成可执行的输出文件(.out)和存储器映像文件(.map)。功能:(1)将各个段配置到目标系统的存储器中;(2)对各个符号和段进行重新定位,并给它们制定一个确定的地址;(3)解决输入文件之间未定义的外部引用。,2.链接命令文件(扩展名为.cmd)链接命令文件是将链接的信息放在一个文件中,这在多次使用同样的链接信息时,可以方便地调用。命令文件为ASCII文件,可包含以下内容:输入文件名;链接器选项;MEMORY和SECTIONS链接命令;赋值说明。,【例4.8】链接命令文件(file.cmd)的编写。file1.obj-mprog.map-oprog.out-estartMEMORYPAGE0:EPROM:org=0E000h,len=100hPAGE1:SPRAM:org=0060h,len=0020hDARAM:org=0080h,len=100hSECTIONS.text:EPROMPAGE0.data:EPROMPAGE0.bss:SPRAMPAGE1STACK:DARAMPAGE1,ch4-5,3.复位向量文件的编写vectors.asm【例4.9】复位向量vectors.asm。*Resetvectorsforexample.asm*.title“vectors.asm”.refstart.sect“.vectors”rst:Bstart.endvectors.asm文件中引用了example.asm中的标号“start”,这是在两个文件之间通过.ref和.def伪指令实现的。,MEMORYPAGE0:PROG:origin=0 x0100length=0 x2F00VECS:origin=0 xFF80length=0 x0004PAGE1:DAT1:origin=0 x2800,length=0 x0100SECTIONS.text:PROGPAGE0.data:PROGPAGE0.bss:DAT1PAGE1.usect:DAT1PAGE1.vectors:VECSPAGE0,ch4-6,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!