资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DSP,原理及应用,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DSP,原理及应用,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,DSP原理与应用汇编语言程序开发工具,DSP原理与应用汇编语言程序开发工具,1,第,6,章 汇编语言程序开发工具,6.,1,TMS320C54x,软件开发过程,C54x,的应用软件开发主要完成以下工作:,(1),选择编程语言编写源程序,C54x,提供2种编程语言,即汇编语言和,C/C+,语言。,(2),选择开发工具和环境,C54x,提供了两种开发环境。即非集成开发环境和集成开发环境,CCS。,2,DSP原理及应用,第6章 汇编语言程序开发工具6.1 TMS320C54x软件,第,6,章 汇编语言程序开发工具,6.,1,TMS320C54x,软件开发过程,1.,C54x,应用软件开发流程,C,源文件,C,编译器,汇编,源文件,汇编器,汇编,源文件,COFF,目标,文件,链接器,可执行的,COFF,文件,宏,源文件,存档,器,宏库,存档器,目标,文件库,建库工具,运行时,支持库,EPROM,编程器,交叉引用,列表器,调试工具,TMS320C54x,绝对地址,列表器,HEX,代码,转换工具,3,DSP原理及应用,第6章 汇编语言程序开发工具6.1 TMS320C54x软件,第,6,章 汇编语言程序开发工具,2.,C54x,的开发工具,TI,公司提供的,DSP,开发环境和工具主要包括以下三个部分:,代码生成工具,代码调试工具,实时操作系统,4,DSP原理及应用,第6章 汇编语言程序开发工具2. C54x的开发工具,第,6,章 汇编语言程序开发工具,2.,C54x,的开发工具,(1)代码生成工具:,C,编译器,汇编器,链接器,文档管理器,建库实用程序,十六进制转换程序,5,DSP原理及应用,第6章 汇编语言程序开发工具2. C54x的开发工具(1),第,6,章 汇编语言程序开发工具,2.,C54x,的开发工具,(2)代码调试工具:,C/,汇编语言源码调试器:,与软件仿真器、评价模块、软件开发系统、软件仿真器等配合使用。,软件仿真器:,是一种模拟,DSP,芯片各种功能并在非实时条件下进行软件调试的调试工具,它不需目标硬件支持,只需在计算机上运行。,初学者工具,DSK:,是,TI,公司提供给初学者进行,DSP,编程练习的一套廉价的实时软件调试工具。,6,DSP原理及应用,第6章 汇编语言程序开发工具2. C54x的开发工具(2),第,6,章 汇编语言程序开发工具,DSK (DSP Starter Kitm),7,DSP原理及应用,第6章 汇编语言程序开发工具DSK (DSP Starter,第,6,章 汇编语言程序开发工具,C5402 DSK,实物图,8,DSP原理及应用,第6章 汇编语言程序开发工具C5402 DSK 实物图8DS,第,6,章 汇编语言程序开发工具,2.,C54x,的开发工具,(2)代码调试工具:,可扩展的开发系统仿真器(,XDS510):,可用来进行系统级的集成调试,是进行,DSP,芯片软硬件开发的最佳工具。,评价模块,EVM,板:,是一种低成本的开发板,可进行,DSP,芯片评价、性能评估和有限的系统调试。,9,DSP原理及应用,第6章 汇编语言程序开发工具2. C54x的开发工具(2),第,6,章 汇编语言程序开发工具,6.,2,汇编语言程序的编辑、汇编和链接过程,示意图,汇编器,调试程序,链接器,文本编辑器,.,asm,源文件,.,obj,目标文件,.,out,输出文件,.,cmd,链接命,令文件,.,lst,列表文件,.,map,存储器,映像文件,十六进制,转换程序,HEX500,-,o,-,m,-,l,10,DSP原理及应用,第6章 汇编语言程序开发工具6.2 汇编语言程序的编辑、汇编,第,6,章 汇编语言程序开发工具,6.,2,汇编语言程序的编辑、汇编和链接过程,汇编语言源程序以,.asm,为其扩展名,汇编语言源程序的每一行都可以由四个部分组成,语法如下:,标号,:,助记符,操作数,;,注释,1.,编辑,11,DSP原理及应用,第6章 汇编语言程序开发工具6.2 汇编语言程序的编辑、汇编,第,6,章 汇编语言程序开发工具,6.,2,汇编语言程序的编辑、汇编和链接过程,2.,汇编,常用的汇编命令:,asm500 %1 s 1 x,调用汇编器命令,源文件名,将程序所有定义的符号放在目标文件的符号表中,生成一个,列表文件,.,lst,生成一个,交叉汇编表,12,DSP原理及应用,第6章 汇编语言程序开发工具6.2 汇编语言程序的编辑、汇编,第,6,章 汇编语言程序开发工具,6.,2,汇编语言程序的编辑、汇编和链接过程,3.,链接,常用的汇编器命令:,lnk500 %1.cmd,lnk500:,调用链接器命令,%1.cmd:,链接命令文件名,该文件须,指明,目标文件、,输入文件、输出文件、,链接选项和存储器配置要求等。,13,DSP原理及应用,第6章 汇编语言程序开发工具6.2 汇编语言程序的编辑、汇编,第,6,章 汇编语言程序开发工具,6.,3,COFF,的一般概念,汇编器和链接器生成的目标文件,是一个可以由,C54x,器件执行的文件。这些目标文件的格式称之为公共目标文件格式(,COFF)。,File Header,Optional Header,Section Header 1,.,Section Header n,Section Data,Relocation Directives,Line Numbers,Symbol Table,String Table,14,DSP原理及应用,第6章 汇编语言程序开发工具6.3 COFF的一般概念,第,6,章 汇编语言程序开发工具,6.,3,COFF,的一般概念,6.3.1,COFF,文件的基本单元,COFF,文件有3种类型:,COFF0、COFF1、COFF2。,链接器能够读/写所有类型的,COFF,文件,默认时链接器生成的是,COFF2,文件,采用-,vn,链接选项可以选择不同类型的,COFF,文件。,C54x,汇编器和,C,编译器产生的是,COFF2,文件。,15,DSP原理及应用,第6章 汇编语言程序开发工具6.3 COFF的一般概念 6.,第,6,章 汇编语言程序开发工具,6.3.1,COFF,文件的基本单元,1.,段(,sections),段,是存储器中占据相邻空间的代码或数据块。一个目标文件中的每个段都是分开的和各不相同的。,COFF,目标文件都包含以下3种形式的段:,.,text,段(文本段),.,data,段(数据段),.bss,段(保留空间段),16,DSP原理及应用,第6章 汇编语言程序开发工具6.3.1 COFF文件的基本单,第,6,章 汇编语言程序开发工具,6.3.1,COFF,文件的基本单元,2.,段的基本类型,COFF,目标文件中的段有两种基本类型。,初始化段, 未,初始化段,(1),初始化段,初始化段中包含有数据或程序代码。主要有:,.,text,段已初始化段;,.,data,段已初始化段;,.,sect,段,已初始化段,由汇编器伪指令建立,的自定义段。,17,DSP原理及应用,第6章 汇编语言程序开发工具6.3.1 COFF文件的基本单,第,6,章 汇编语言程序开发工具,6.3.1,COFF,文件的基本单元,2.,段的基本类型,COFF,目标文件中的段有两种基本类型。,(2),未初始化段,在存储空间中,为未初始化数据保留存储空间。,它包括:,.,bss,段未初始化段;,.,usect,段,未初始化段,由汇编命令建立的命,名段(自定义段)。,18,DSP原理及应用,第6章 汇编语言程序开发工具6.3.1 COFF文件的基本单,第,6,章 汇编语言程序开发工具,6.3.1,COFF,文件的基本单元,3.,段与目标存储器的对应关系,汇编器的任务:,在汇编过程中,根据汇编命令用适当的段将各部分程序代码和数据连在一起,构成目标文件。,链接器的任务:,就是分配存储单元,将目标文件中的段重新定位到目标系统的存储器中,这一过程称为定位或分配,。,19,DSP原理及应用,第6章 汇编语言程序开发工具6.3.1 COFF文件的基本单,第,6,章 汇编语言程序开发工具,3.,段与目标存储器的对应关系,目标文件中的段与目标存储器之间的关系,目标文件,目标存储器,.,bss,.,data,.,text,RAM,E,2,PROM,ROM,20,DSP原理及应用,第6章 汇编语言程序开发工具3. 段与目标存储器的对应关系目,第,6,章 汇编语言程序开发工具,6.3.2,汇编器对段的处理,汇编器有,5,条伪指令可识别汇编语言程序的各个部分:,.,bss,.,usect,.,text,.,data,.,sect,定义未初始化段,定义未初始化段,定义已初始化段,定义已初始化段,定义已初始化段,21,DSP原理及应用,第6章 汇编语言程序开发工具6.3.2 汇编器对段的处理,第,6,章 汇编语言程序开发工具,6.3.2,汇编器对段的处理,未初始化段就是在,C54x,存储器中保留空间,通常它们被定位在,RAM,区。在目标文件中,这些段中没有确切的内容。,由这些段定义的空间仅作为临时存储空间,在程序运行时,可以利用这些存储空间存放变量。,未初始化段分为默认的和命名的两种,分别由汇编器伪指令.,bss,和.,usect,产生。,1.,未初始化段,22,DSP原理及应用,第6章 汇编语言程序开发工具6.3.2 汇编器对段的处理,第,6,章 汇编语言程序开发工具,(1),.,bss,伪指令,1.,未初始化段,用于,在,bss,段中保留若干个空间。,格式:,.,bss,符号, 字数,.bss x, 1,.bss buffer, 10,23,DSP原理及应用,第6章 汇编语言程序开发工具(1) .bss伪指令1. 未初,第,6,章 汇编语言程序开发工具,1.,未初始化段,(2),.,usect,伪指令,用于为指定的命名段保留若干个空间,。,格式:,符号,.,usect,“,段名,”,,,字数,24,DSP原理及应用,第6章 汇编语言程序开发工具1. 未初始化段 (2) .,第,6,章 汇编语言程序开发工具,6.3.2,汇编器对段的处理,已初始化段中包含有可执行代码或初始化数据。,已初始化段由.,text、.data,和.,sect,三个伪指令建立。,2.,已初始化段,25,DSP原理及应用,第6章 汇编语言程序开发工具6.3.2 汇编器对段的处理,第,6,章 汇编语言程序开发工具,已初始化命令的句法:,2.,已初始化段,.,text,段起点,.,data,段起点,.,sect,“,段名,”,段起点,26,DSP原理及应用,第6章 汇编语言程序开发工具 已初始化命令的句法:,第,6,章 汇编语言程序开发工具,6.3.2,汇编器对段的处理,命名段由用户指定,与默认的,.,text,,.,data,和,.,bss,段的使用相同,但它们被分开汇编。,可用,.,usect,和,.,sect,两个伪指令产生命名段。,3.,命名段(自定义段),27,DSP原理及应用,第6章 汇编语言程序开发工具6.3.2 汇编器对段的处理,第,6,章 汇编语言程序开发工具,.,usect,伪指令产生类似,.,bss,的段,为变量在,RAM,中保留存储空间。,.,sect,伪指令产生类似,.,text,和,.,data,的段,可以包含代码或数据。,.,sect,伪指令产生可重新定位地址的命名段。,3.,命名段,产生命名段伪指令格式:,符号,.,usect,“,段名,”,,字数,.,sect,“,段名,”,28,DSP原理及应用,第6章 汇编语言程序开发工具 .usect伪指令产生类,第,6,章 汇编语言程序开发工具,6.3.2,汇编器对段的处理,汇编器为每个段都安排了一个单独的程序计数器称之为段程序计数器,SPC。,链接器在链接时要对每个段进行重新定位。,4.,段程序计数器,SPC,29,DSP原理及应用,第6章 汇编语言程序开发工具6.3.2 汇编器对段的处理,第,6,章 汇编语言程序开发工具,【,例,6.,3.1,】,段命令应用举例。,汇编语言源程序:,.,data,coeff .word 044h,055h,066h,.,bss buffer,8,prt .word 0456h,.,text,add: LD 0Dh,A,aloop:SUB #1,A,BC aloop,AGEQ,.,data,ivals .word 0CCh,0DDh,0EEh,;,初始化数据段,;,3,组数据放入.,data,段,;,在.,bss,段保留8个单元,;,0456h,放入.,data,段,;,初始化文本段,;,1,字指令,;,2,字指令,;,2,字指令,共计5个字,;,初始化数据段,;,3,组数据放入.,data,段,30,DSP原理及应用,第6章 汇编语言程序开发工具【例6.3.1】段命令应用举例。,第,6,章 汇编语言程序开发工具,汇编语言源程序:,var2 .usect,“,newvars,”,,2,inbuf .usect,“,newvars,”,,8,.text,mpy,:,LD 0Ah,,,B,mloop,:,MPY #0Ah,,,B,BC mloop,,,BNOV,.sect,“,vectors,”,.word 044h,,,088h,;,建立,newvars,命名段,保留2个单元,;,在,newvars,段保留8个单元,;,初始化文本段,;,1,字指令,;,2,字指令,;,2,字指令,共计5个字,;建立,vectors,命名段,;2组数据放入,vectors,命名段,31,DSP原理及应用,第6章 汇编语言程序开发工具汇编语言源程序:var2,第,6,章 汇编语言程序开发工具,经汇编后,得列表文件(部分):,2,*,3,*,汇编一个初始化表到.,data,段,*,4,*,5,0000,.data,6,0000,0044,coeff .word 044h,055h,066h,0001,0055,0002,0066,7,*,8,*,在,.,bss,段中为变量保留空间,*,9,*,10,0000,.bss buffer,,,8,11,*,12,*,仍然在,.,data,段中,*,13,*,14,0003,0456,prt,.,word 0456h,32,DSP原理及应用,第6章 汇编语言程序开发工具经汇编后,得列表文件(部分):,第,6,章 汇编语言程序开发工具,15,*,16,*,汇编代码到,.,text,段,*,17,*,18,0000,.text,19,0000,100d,add,:,LD 0Dh,,,A,20,0001,f010,aloop,:,SUB #1,,,A,0002,0001,21,0003,f842,BC aloop,,,AGEQ,0004,0001,22,*,23,*,汇编另一个初始化表到,.,data,段,*,24,*,25,0004,.,data,26,0004,00cc,ivals,.,word 0CCh,,,0DDh,,,0EEh,0005,00dd,0006,00ee,27,*,28,*,为更多的变量定义另一个段,*,29,*,30,0000,var2,.,usect,“,newvars,”,,,2,31,0001,inbuf,.,usect,“,newvars,”,,,8,33,DSP原理及应用,第6章 汇编语言程序开发工具15,第,6,章 汇编语言程序开发工具,32,*,*,33,*,汇编更多代码到,.,text,段,*,34,*,35,0005,.,text,36,0005,110a,mpy,:,LD 0Ah,,,B,37,0006,f166,mloop MPY #0Ah,,,B,0007,000a,38,0008,f868,BC mloop,,,BNOV,0009,0006,39,*,40,*,为中断向量,.,vectors,定义一个自定义段,*,41,*,42,0000,.,sect,“,vectors,”,43,0000,0044,.,word 044h,,,088h,0001,0088,34,DSP原理及应用,第6章 汇编语言程序开发工具32,第,6,章 汇编语言程序开发工具,汇编语言源程序经过汇编后,共建立了5个段:,.text,段,文本段,段内有,10,个字可执行,的程序代码。,.,data,段,已初始化的数据段,段内有,7,个字的数据。,vectors,段,用,.,sect,命令生成的命名段,段内有,2,个字的初始化数据。,.,bss,段,未初始化的数据段,,在存储器中,为变量保留,8,个存储单元。,newvars,段,用,.,usect,命令建立的命名段,为变量保留10个存储单元。,35,DSP原理及应用,第6章 汇编语言程序开发工具 汇编语言源程序经过汇编后,第,6,章 汇编语言程序开发工具,经汇编后,得列表文件(部分):,2,*,3,*,汇编一个初始化表到.,data,段,*,4,*,5,0000,.data,6,0000,0044,coeff .word 044h,055h,066h,0001,0055,0002,0066,7,*,8,*,在,.,bss,段中为变量保留空间,*,9,*,10,0000,.bss buffer,,,8,11,*,12,*,仍然在,.,data,段中,*,13,*,14,0003,0456,prt,.,word 0456h,行号,目标代码,段名,100,d,f010,0001,f842,0001,110a,f166,000a,F868,0006,0044,0055,0066,0456,00,cc,00dd,00ee,0044,0088,没有数据,保留10个字,5,0000 .data,6,0000 0044 coeff .word 044h,055h,066h,10,0000 .bss buffer,,,8,14,0003 0456 prt,.,word 0456h,.,data,6,0044,6,0055,6,0066,10,.,bss,没有数据,保留8个字,14,0456,36,DSP原理及应用,第6章 汇编语言程序开发工具经汇编后,得列表文件(部分):,第,6,章 汇编语言程序开发工具,15,*,16,*,汇编代码到,.,text,段,*,17,*,18,0000,.text,19,0000,100d,add,:,LD 0Dh,,,A,20,0001,f010,aloop,:,SUB #1,,,A,0002,0001,21,0003,f842,BC aloop,,,AGEQ,0004,0001,22,*,23,*,汇编另一个初始化表到,.,data,段,*,24,*,25,0004,.,data,26,0004,00cc,ivals,.,word 0CCh,,,0DDh,,,0EEh,0005,00dd,0006,00ee,27,*,28,*,为更多的变量定义另一个段,*,29,*,30,0000,var2,.,usect,“,newvars,”,,,2,31,0001,inbuf,.,usect,“,newvars,”,,,8,行号,目标代码,段名,100,d,f010,0001,f842,0001,110a,f166,000a,F868,0006,6,6,6,14,0044,0055,0066,0456,00,cc,00dd,00ee,.,data,0044,0088,10,没有数据,保留8个字,.,bss,没有数据,保留10个字,.,text,18 0000 .text,19 0000 100d add,:,LD 0Dh,,,A,19,100d,20 0001 f010 aloop,:,SUB #1,,,A,20,f010,20,0001,21,0003,f842 BC aloop,,,AGEQ,21,f842,21,0001,25 0004,.,data,26 0004 00cc ivals,.,word 0CCh,,,0DDh,,,0EEh,.,data,26,00cc,26,00dd,26,00ee,30 0000 var2,.,usect,“,newvars,”,,,2,30,保留2个字,31 0001 inbuf,.,usect,“,newvars,”,,,8,31,保留8个字,newvars,37,DSP原理及应用,第6章 汇编语言程序开发工具15 *,第,6,章 汇编语言程序开发工具,32,*,*,33,*,汇编更多代码到,.,text,段,*,34,*,35,0005,.,text,36,0005,110a,mpy,:,LD 0Ah,,,B,37,0006,f166,mloop MPY #0Ah,,,B,0007,000a,38,0008,f868,BC mloop,,,BNOV,0009,0006,39,*,40,*,为中断向量,.,vectors,定义一个自定义段,*,41,*,42,0000,.,sect,“,vectors,”,43,0000,0044,.,word 044h,,,088h,0001,0088,行号,目标代码,段名,19,20,20,21,21,100,d,f010,0001,f842,0001,110a,f166,000a,F868,0006,.,text,6,6,6,14,26,26,26,0044,0055,0066,0456,00,cc,00dd,00ee,.,data,0044,0088,10,没有数据,保留8个字,.,bss,30,31,没有数据,保留10个字,newvars,35 0005,.,text,.,text,36 0005 110a mpy,:,LD 0Ah,,,B,36,110a,37,0006 f166 mloop MPY #0Ah,,,B,37,f168,37,000a,38 0008 f868 BC mloop,,,BNOV,38,f868,38,0006,42 0000,.,sect,“,vectors,”,vectors,43 0000 0044,.,word 044h,,,088h,43,0044,43,0088,38,DSP原理及应用,第6章 汇编语言程序开发工具32 *,第,6,章 汇编语言程序开发工具,6.3.3,链接器对段的处理,链接器是开发,C54x,器件必不可少的开发工具之一,它对段处理时有,2,个主要任务:,将一个或多个,COFF,目标文件中的各种段作为链接器的输入段,经链接后在一个执行的,COFF,输出模块中建立各个输出段;, 在程序装入时对其重新定位,为各个输出段选定存储器地址。,39,DSP原理及应用,第6章 汇编语言程序开发工具6.3.3 链接器对段的处理,第,6,章 汇编语言程序开发工具,6.3.3,链接器对段的处理,链接器有2条伪指令支持上述任务:,MEMORY,伪指令,SECTIONS,伪指令,40,DSP原理及应用,第6章 汇编语言程序开发工具6.3.3 链接器对段的处理,第,6,章 汇编语言程序开发工具,6.3.3,链接器对段的处理,默认的存储器分配, 将所有.,text,段组合在一起,形成一个.,text,段,并分配到程序存储器中;, 将多个目标文件中的.,data,段组合在一起,分配到紧接着.,text,段的程序存储空间中;, 将.,bss,段组合,配置到数据存储器中;, 组合命名段。初始化的命名段按顺序分配到紧随.,data,段的程序存储器,而未初始化命名段将被配置到紧随.,bss,段的数据存储器中。,41,DSP原理及应用,第6章 汇编语言程序开发工具6.3.3 链接器对段的处理 默,第,6,章 汇编语言程序开发工具,默认的存储器分配过程:,File1.obj,.,text1,.,data1,.,bss1,table_1,(,初始化的命名段),u_vars1,(,未初始化的命名段),File2.obj,.,text2,.,data2,.,bss2,table_2,(,初始化的命名段),u_vars2,(,未初始化的命名段),FFT,(初始化的命名段),程序存储器,数据存储器,.text,.,text1,.,text2,.data,.,data1,.,data2,.bss,.,bss1,.,bss2,table,table_1,table_2,u_vars1,u_vars1,u_vars2,FFT,FFT,没有使用,没有配置,没有配置,没有使用,42,DSP原理及应用,第6章 汇编语言程序开发工具 默认的存储器分配过程:F,第,6,章 汇编语言程序开发工具,6.3.4,链接器对程序的重新定位,1.,链接器重新定位,重新定位的方法:,将各个段配置到存储器中,使每个段都有一个,合适的起始地址;,将符号变量调整到相对于新的段地址的位置;,将引用调整到重新定位后的符号,这些符号,反映了调整后的新符号值。,43,DSP原理及应用,第6章 汇编语言程序开发工具6.3.4 链接器对程序的重新定,第,6,章 汇编语言程序开发工具,6.3.4,链接器对程序的重新定位,2.,运行时间重新定位,利用,SECTIONS,伪指令选项可让链接器对其定位2次,其方法:, 使用运行关键字设置它的运行地址;, 使用装入关键字设置装入地址。,44,DSP原理及应用,第6章 汇编语言程序开发工具6.3.4 链接器对程序的重新定,第,6,章 汇编语言程序开发工具,6.3.5,程序装入,可以采用以下方法装入程序:,使用调试工具转入程序,C54x,的调试工具包括软件模拟器,,XDS,仿真器和集成系统,CCS。,它们都具有内部的装入器,调用装入器的,LOAD,命令,装入器将程序复制到目标系统的存储器中。,采用,Hex,转换工具转入程序,可以使用转换工具,Hex500,,将可执行,COFF,目标模块转换成几种其他目标格式文件,然后将转换后的文件通过编程器将程序装(烧)进,EPROM。,45,DSP原理及应用,第6章 汇编语言程序开发工具6.3.5 程序装入 可,第,6,章 汇编语言程序开发工具,6.3.6,COFF,文件中的符号,1.,外部符号,是指在一个模块中定义、而在另一个模块中引用的符号。它可以用伪指令.,def,、.,ref,或.,global,来定义。,.,def,在当前模块中定义,并可在别的模块中使用的符号;,.,ref,在当前模块中使用,但在别的模块中定义的符号;,.,global,可以是上面的任何一种情况。,46,DSP原理及应用,第6章 汇编语言程序开发工具6.3.6 COFF文件中的符号,第,6,章 汇编语言程序开发工具,1.,外部符号,【例,6.,3.,2,】,说明代码段中外部符号的定义。,x: ADD #56h,A,B y,.def x,.,ref y,;,定义,x,;,引用,y,;,x,在此模块中定义,可为别,的模块引用,;,y,在这里引用,它在别的模,块中定义,47,DSP原理及应用,第6章 汇编语言程序开发工具1. 外部符号【例6.3.2】说,第,6,章 汇编语言程序开发工具,6.3.6,COFF,文件中的符号,2.,符号表,每当遇到一个外部符号,无论是定义的还是引用的,汇编器都将在符号表中产生一个条目。,汇编器还产生一个指到每段的专门符号,链接器使用这些符号将其他引用符号重新定位。,48,DSP原理及应用,第6章 汇编语言程序开发工具6.3.6 COFF文件中的符号,第,6,章 汇编语言程序开发工具,6.,4 源程序的汇编,汇编器包括如下功能:,将汇编语言源程序汇编成一个可重新定位的目标文件(.,obj,文件)。,根据需要,可以生成一个列表文件(.,lst,文件),并对该列表进行控制。,将程序代码分成若干个段,每个段的目标代码都有一个,SPC(,段程序计数器)管理。,49,DSP原理及应用,第6章 汇编语言程序开发工具6.4 源程序的汇编 汇编器包括,第,6,章 汇编语言程序开发工具,6.,4 源程序的汇编,汇编器包括如下功能:,定义和引用全局符号,如果需要可以在列表文件后面附加一张交叉引用表。,对条件程序块进行汇编。,支持宏功能,允许定义宏命令。,为每个目标代码块设置一个程序计数器,SPC。,50,DSP原理及应用,第6章 汇编语言程序开发工具6.4 源程序的汇编 汇编器包括,第,6,章 汇编语言程序开发工具,6.,4 源程序的汇编,6.4.1,汇编程序的运行,C54x,的汇编程序名为,asm500,.,exe。,要运行汇编程序,可键入如下命令:,asm500,input file,object file,listing file,-options,Asm500,:,运行汇编程序,asm,500.exe,的命令。,input file,:,汇编源文件名,默认扩展名为,.,asm。,object file,:,汇编程序生成的,C54x,目标文件,扩展名为.,obj。,listing file,:,汇编器产生的列表文件名,默认扩展名为.,lst。,-options,:,汇编器的选项,为汇编器的使用提供各种选择。,51,DSP原理及应用,第6章 汇编语言程序开发工具6.4 源程序的汇编 6.4.1,第,6,章 汇编语言程序开发工具,汇编器,asm,500,的选项及其功能,选 项,功 能,-,-,filemane(,文件名,),可以将文件名的内容附加到命令行上。,使用该选项可以避免命令行长度的限制。如果在一个命令文件、,文件名或选项参数中包含了嵌入的空格或连字号,则必须使用,引号括起来,例如:,“,this-file.asm,”,。,-,a,建立一个绝对列表文件。,当选用-,a,时,汇编器不产生目标文件,。,-,c,使汇编语言文件中大小写没有区别,。,-,d,为名字符号设置初值。格式为-,d name=value,时,,与汇编文件,被插入,name .set=value,是等效的。,如果,value,被省略,,则此名字符号被置为,1,。,-,f,抑制汇编器给没有,.,asm,扩展名的文件添加扩展名的默认行为。,52,DSP原理及应用,第6章 汇编语言程序开发工具汇编器asm500的选项及其功能,第,6,章 汇编语言程序开发工具,汇编器,asm,500,的选项及其功能,选 项,功 能,-,g,允许汇编器在源代码中进行代码调试。汇编语言源文件,中每行的信息输出到,COFF,文件中。,注意:用户不能对已经包含,.,line,伪指令的汇编代码使用,-,g,选项。例如由,C/C+,编译器运行,-,g,选项产生的代码,。,-,h,-,help,-,?,这些选项的任一个将显示可供使用的汇编器选项的清单。,-,hc,将选定的文件复制到汇编模块。格式为-,hc filename,所选定的文件包含到源文件语句的前面,复制的文件将,出现在汇编列表文件中。,-,hi,将选定的文件包含到汇编模块。格式为-,hi filename,所选定的文件包含到源文件语句的前面,所包含的文件,不出现在汇编列表文件中。,53,DSP原理及应用,第6章 汇编语言程序开发工具汇编器asm500的选项及其功能,第,6,章 汇编语言程序开发工具,汇编器,asm,500,的选项及其功能,选 项,功 能,-,i,规定一个目录。汇编器可以在这个目录下找到,.,copy,、,.include,或,.,mlib,命令所命名的文件。,格式为-,i pathname,,,最多可规定,10,个目录,每一条路径,名的前面都必须加上-,i,选项。,-,l,(小写,L,),生成一个列表文件。,-,mf,指定汇编调用扩展寻址方式,-,mg,源文件是代数式指令。,-,q,抑制汇编的标题以及所有的进展信息。,-,r,-,rnum,压缩汇编器由,num,标识的标志。该标志是报告给汇编器,的消息,这种消息不如警告严重。若不对,num,指定值,,则所有标志都将被压缩。,54,DSP原理及应用,第6章 汇编语言程序开发工具汇编器asm500的选项及其功能,第,6,章 汇编语言程序开发工具,汇编器,asm,500,的选项及其功能,选 项,功 能,-,pw,对某些汇编代码的流水线冲突发出警告。,-,u,-,u name,取消预先定义的常数名,从而不考虑由任何-,d,选项所指定的常数。,-,v,-,v value,确定使用的处理器,可用,541,542,543, 545, 5451,p,5461p,548,549,值中的一个。,-,s,把所有定义的符号放进目标文件的符号表中。,汇编程序通常只将全局符号放进符号表。当利用-,s,选项时,所定义的标号以及汇编时定义的常数也都放进符号表内。,-,x,产生一个交叉引用表,并将它附加到列表文件的最后,,还在目标文件上加上交叉引用信息。即使没有要求生成,列表文件,汇编程序总还是要建立列表文件的。,55,DSP原理及应用,第6章 汇编语言程序开发工具汇编器asm500的选项及其功能,第,6,章 汇编语言程序开发工具,6.4.2,汇编时的列表文件,列表文件包括,4,个部分:,源程序语句编号,段程序计数器,目标代码,源程序语句,56,DSP原理及应用,第6章 汇编语言程序开发工具6.4.2 汇编时的列表文件 列,第,6,章 汇编语言程序开发工具,目标代码后记符含义,!,未定义的外部引用;,,,可重新定位的文本段;,”,可重新定位的数据段;,+,可,重新定位的初始化命名段;,-,可重新定位的未初始化段;,%,复杂的重新定位的表达式。,57,DSP原理及应用,第6章 汇编语言程序开发工具目标代码后记符含义,第,6,章 汇编语言程序开发工具,6.4.3,汇编伪指令,将代码和数据汇编进指定的段,为未初始化的变量在存储器中保留空间,控制清单文件是否产生,初始化存储器,汇编条件代码块,定义全局变量,为汇编器指定从中可以获得宏的库,考察符号调试信息,汇编器伪指令可完成以下工作:,58,DSP原理及应用,第6章 汇编语言程序开发工具6.4.3 汇编伪指令,第,6,章 汇编语言程序开发工具,6.4.3,汇编伪指令,对各种段进行定义的命令,如.,bss、.data、.sect、.text、.usect,等。,对常数(数据和存储器)进行初始化的命令,如.,bes、.byte、.field、.float、.int、.log、,.space、.string、.pstring、.xfloat、.xlong、,.word,等。,59,DSP原理及应用,第6章 汇编语言程序开发工具6.4.3 汇编伪指令 对各,第,6,章 汇编语言程序开发工具,6.4.3,汇编伪指令,调整,SPC,的指令,如.,align,等。,对输出列表文件格式化的命令,如.,drlist、.drnolist,等。,引用其他文件的命令,如,copy、.def、.global、.include、.mlib、.ref,等。,60,DSP原理及应用,第6章 汇编语言程序开发工具6.4.3 汇编伪指令 调整,第,6,章 汇编语言程序开发工具,6.4.3,汇编伪指令,控制条件汇编的命令,如,.,break、,.,else、,.,elseif、,.,endif、,.,endloop、,.,if、,.,loop,等。,在汇编时定义符号的命令,如,.,asg、,.,endstruct、,.,equ、,.,eval、,.,label、,.,set、,.,sruct,等。, 执行其他功能的命令,如,.,algebraic,、,.emsg,、,.end,、,.mmregs,、,.mmsg,、,.newblock,、,.,sblock、,.,version、,.,vmsg,等。,61,DSP原理及应用,第6章 汇编语言程序开发工具6.4.3 汇编伪指令 控制,第,6,章 汇编语言程序开发工具,6.,5,链接器的使用,1.,运行链接程序,C54x,链接器的运行命令,:,lnk500,-options,filename 1 filename n,lnk500:,运行链接器命令。,-options:,链接命令选项。,filenames:,文件名。,62,DSP原理及应用,第6章 汇编语言程序开发工具6.5 链接器的使用 1. 运行,第,6,章 汇编语言程序开发工具,1.,运行链接程序,C54x,链接器的运行,有三种方法,:,(1),键入命令:,lnk500,链接器会提示如下信息:,Command files:,Object files ,.,obj,:,Output Files a,.,out:,Options:,(要求键入一个或多个命令文件),(要求键入一个或多个需要链接的目标文件),(,要求键入一个链接器所生成的输出文件名,),(,要求附加一个链接选项,),63,DSP原理及应用,第6章 汇编语言程序开发工具1. 运行链接程序 C,第,6,章 汇编语言程序开发工具,1.,运行链接程序,(2),键入命令:,lnk500,file1.obj,file2.obj,-o,link.out,目标文件:,file1.obj,、,file2.obj,命令选项:,-,o,输出文件:,link.out,64,DSP原理及应用,第6章 汇编语言程序开发工具1. 运行链接程序 (2) 键入,第,6,章 汇编语言程序开发工具,1.,运行链接程序,(3),键入命令:,lnk500,linker.cmd,linker.cmd:,链接命令文件。,例如:希望完成第二种命令的链接,在链接命令文件,中,,应包含如下内容:,file1.obj,file2.obj,-o link.out,65,DSP原理及应用,第6章 汇编语言程序开发工具1. 运行链接程序 (3) 键入,第,6,章 汇编语言程序开发工具,6.5.1,链接器的运行,2.,链接命令选项,链接命令选项,选 项,含 义,-,a,生成一个绝对地址的、可执行的输出模块。所建立的绝,对地址输出文件中不包含重新定位信息。如果既不用-,a,选项,也不用-,r,选项,链接器就像规定-,a,选项那样处理。,-,ar,生成一个可重新定位、可执行的目标模块。这里采用了,-,a,和-,r,两个选项(可以分开写成-,a,-,r,,,也可以连在一起,写作-,ar,),,与-,a,选项相比,-,ar,选项还在输出文件中保留,有重新定位信息。,-,e global_symbol,定义一个全局符号,这个符号所对应的程序存储器地址, 就是使用开发工具调试这个链接后的可执行文件时程序 开始执行时的地址(称为入口地址)。当加载器将一个程 序加载到目标存储器时,程序计数器(,PC,),被初始化到入 口地址,然后从这个地址开始执行程序。,66,DSP原理及应用,第6章 汇编语言程序开发工具6.5.1 链接器的运行 2.,第,6,章 汇编语言程序开发工具,2.,链接命令选项,链接命令选项,选 项,含 义,-,f fill_vale,对输出模块各段之间的空单元设置一个16位数值,(,fill_value),如果不用-,f,选项,则这些空单元都置0。,-,i dir,更改搜索文档库算法,先到,dir(,目录)中搜索。此选项,必须出现在-,l,选项之前。,-,l filename,命名一个文档库文件作为链接器的输入文件;,filename,为文档库的某个文件名。此选项必须出现在-,i,选项之后。,-,m filename,生成一个.,map,映像文件,,filename,是映像文件的文件名。,.,map,文件中说明存储器配置、输入、输出段布局以及外,部符号重定位之后的地址等。,-,o filename,对可执行输出模块命名。如果默认,则此文件名为,a,.,out,。,-,r,生成一个可重新定位的输出模块。当利用-,r,选项且不用,-,a,选项时,链接器生成一个不可执行的文件。,67,DSP原理及应用,第6章 汇编语言程序开发工具2. 链接命令选项 链接命令选项,第,6,章 汇编语言程序开发工具,6.5.2,链接器命令文件的编写与使用,链接,命令文件为,ASC,文件,可包含以下内容:,(1),输入文件名,用来指定目标文件、存档库或其他命令文件。,(2),链接器选项,它们在命令文件中的使用方法与在命令行中相同。,(3),MEMORY,和,SECTIONS,链接伪指令,用来指定目标存储器结构和地址分配。,68,DSP原理及应用,第6章 汇编语言程序开发工具6.5.2 链接器命令文件的编写,第,6,章 汇编语言程序开发工具,例如:可根据给出链接命令,编写完成该命令操作的链接器命令文件,link,.,cmd,。,lnk500 a.obj b.obj,-,m prog.map,-,o prog.out,链接命令文件的内容如下:,a.obj,/*,第一个输入文件名,*/,b.obj,/*,第二个输入文件名,*/,-,m prog,.,map,/*,指定,map,文件的选项*/,-o prog,.,out,/*,指定输出文件的选项*/,69,DSP原理及应用,第6章 汇编语言程序开发工具 例如:可根据给出链接命令,第,6,章 汇编语言程序开发工具,【例,6
展开阅读全文