收藏 分享(赏)

DSP第6章-DSP软件开发工具.ppt

上传人:weiwoduzun 文档编号:4174277 上传时间:2018-12-13 格式:PPT 页数:28 大小:160.02KB
下载 相关 举报
DSP第6章-DSP软件开发工具.ppt_第1页
第1页 / 共28页
DSP第6章-DSP软件开发工具.ppt_第2页
第2页 / 共28页
DSP第6章-DSP软件开发工具.ppt_第3页
第3页 / 共28页
DSP第6章-DSP软件开发工具.ppt_第4页
第4页 / 共28页
DSP第6章-DSP软件开发工具.ppt_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、第六章 软件开发工具, 6.1 软件开发流程,1、软件开发工具C编译器汇编器链接器,.asm,.obj,.out,第六章 软件开发工具,2、编制一个汇编程序的步骤 (1)用文本编辑器编辑C55x格式要求的汇编源程序。 (2) 调用汇编器(masm55或asm55)汇编该源程序,生成一个公共目标文件格式的COFF目标文件(.obj)。 (3)调用链接器(lnk55)链接目标文件,生成可执行的COFF执行文件(.out) (4)将COFF执行文件下载到 C55x DSP中执行,同时也可借助调试工具对程序进行跟踪调试或优化,也可利用交叉参考列表器和绝对列表器生成一些包含调试信息的表。,第六章 软件开

2、发工具, 6.2 汇编源程序(.asm)格式 1、源程序的构成C55x的程序基本单元是段(Section),一个程序文件由若干段构成。每段由若干语句(Statement)构成。 2、段的分类程序段分为初始化(Initialize)段和未初始化(Uninitialized)段。初始化段可以是:程序代码,程序中用到的常量、数据表等。未初始化段:通常是变量。,第六章 软件开发工具,理解:初始化段:往程序空间写数据(程序代码或数据)的段,如同初始化程序空间一样。未初始化段:变量,在下载时,变量是没有值的,所以无需向程序空间写,只需留出一段空间以便在运行时存放变量的值。所以这段空间在程序未运行前是没有初

3、始化的。 3、段的定义(1)用户自定义的语法格式 symbol .sect “section_name”; symbol(可选项)为该段的起始地址。 symbol .usect “ section_name”,length;length为该段的长度(单位:字)。,定义初始化段,定义未初始化段,汇编指示符,第六章 软件开发工具,(2)汇编器对默认段的处理 汇编器默认的段有3个:.text:程序代码段.data:数据段.bss:变量段 汇编指示符:.text和.data定义的是初始化段。.bss定义的是未初始化段。,第六章 软件开发工具,4、汇编源文件举例(完成两个复数矩阵的乘法)* file n

4、ame :matrix_mpy.asm. include “evb_constant.h”. ref row_ number,column_number. def mpy_start. mmregs. sect “mpy_data”matrix_a .copy matrixa.datmatrix_b .copy matrixb.datmatrix_c .usect “mpyresult”,2row_nunbercolumn_numer.sect “mpy_prog”mpy_start:bclr c54cm.c54cm off,定义初始化的数据段,定义未初始化段,定义初始化的程序代码段,标号,注

5、释,第六章 软件开发工具,(1)程序matrix_mpy.asm由用户自定义的 3段组成mpy_data、mpy_result和mpy _prog初始化段.sect “mpy_data”:定义了名为 mpy_data的数据段。 段中使用了“.copy”指示符,汇编器在汇编时将数据文件marixa.dat,matrib.dat拷贝进来。“.include”指示符不是将文件全部拷贝进来,只是将程序用到的部分拷贝进来。未初始化段.usect “mpy_result”:定义的是用于存放矩阵a与矩阵b相乘的结果。初始化段.sect “mpy_prog”:定义的是执行乘法的代码段。,第六章 软件开发工具,

6、(2)程序中的其它的汇编指示符(汇编指示符的使用参阅P275的附录C).ref:程序要引用在其它程序模块中定义的全局符号。.def:在程序中定义的供其它程序引用的全局符号。.mmregs:程序中可直接使用存储映射寄存器或字段名。程序中标号必须以字母从第1列开始,可以含有数字或下划线,程序语句则不能从第1列开始。指令可以大写也可以小写,操作数间用逗号分隔。注释可以用星号(*)和分号(;)表示,但星号必须从第1列开始,而分号可以从任意一列开始。,第六章 软件开发工具, 6.3 汇编器 1、功能:汇编器把汇编源文件汇编成COFF目标文件。 2、C55x的两个汇编器:masm55:用于汇编采用 C55

7、x的助记符指令编写的源文件asm55:用于汇编采用 C55x的代数指令编写的源文件。 3、汇编器完成的工作处理汇编语言源文件中的源语句,生成一个可重新定位的目标文件;产生源程序列表文件,提供对源程序列表文件的控制;将代码分成段,为每个目标代码段设置一个段程序计数器 SPC,并把代码和数据汇编到指定的段中,在存储器中为末初始化段留出空间;,第六章 软件开发工具,定义(.def)和弓l用(.ref)全局符号,将交叉参考列表加到源程序列表中;汇编条件段;支持宏调用,允许在程序中或在库中定义宏。 4、汇编器调用方法(1) 可以在命令行用下面的命令格式调用汇编器masm55 input file obj

8、ect file listing file options asm55 input file object file listing file options input file :汇编源文件名。如不写扩展名,汇编器将使用缺省的.asm。 object file:汇编器输出的 COFF目标文件名,缺省为.obj listing file:汇编器输出的列表文件名; options:汇编选项,不分大小写,可放在命令行中汇编命令之后的任何地方。,第六章 软件开发工具,(2) 使用举例对汇编源程序matrix_mpy.asm进行汇编masm55 matrix_mpy.asm matrix_mpy.o

9、bj -i C:timyproject(3) 汇编器调用也可以在集成开发环境下由CCS调用(参见第8章),输入源文件,输出目标文件,汇编器通过这个路径查找数据文件和头文件,第六章 软件开发工具,6.4 COFF目标文件汇编器生成的文件称为 COFF目标文件(如: matrix_mpy.obj)链接器生成的文件称为COFF执行文件(如: matrix_mpy.out) 1、 COFF目标文件格式的特点:(1)支持模块化(段)编程(2)能提供有效灵活的管理代码段和目标系统存储空间的方法。 2、COFF文件结构 (1) 一个文件头长度为22字节,包含COFF文件结构的版本号、段头的数量、创建日期、符

10、号表起始地址和入口数量、可选文件头的长度等信息。,第六章 软件开发工具,(2) 可选的文件头信息包含执行代码的长度和起始地址、初始化数据的长度和起始地址、未初始化段的长度、程序入口地址等信息,以便在下载时进行重定位。 (3) 各个段的头信息列表每个段都有一个头,用于定义各段在COFF文件中的起始位置。段头包含段的名称、物理地址、虚拟地址、长度、原始数据长度等信息。 (4) 每个初始化段的原始数据包含每个初始化段需写入程序存储空间的代码和初始化数据。,第六章 软件开发工具,(5)每个初始化段的重定位信息汇编器自动生成各初始化段的重定位入口信息,链接时再由链接器读取该入口信息并结合用户对存储空间的

11、分配进行重定位。 (6)每个初始化段的行号入口用于C语言程序的符号调试。C程序被编译为汇编程序,汇编器就会在汇编代码前生成一个行号,该行号映射到C源程序里相应的行上,便于调试程序。 (7) 一个符号表用于存放程序中定义的符号的入口,以便调试。 (8) 一个字符串表用于存放那些符号名称超过8个字符的符号名称字符串。,第六章 软件开发工具,3、 段的顺序 汇编器将汇编源程序汇编成COFF目标文件, COFF目标文件段的顺序为:.text.data.bss用户自定义初始化段用户自定义的末初始化段”,注意: 未初始化段(.bss和.usect)只是在存储空间中保留空间,并没有代码或数据,所以未初始化段

12、只有段头,而没有原始数据、重定位信息和行号等,第六章 软件开发工具, 6.5 链 接 器 一、链接器概述链接器能够把COFF目标文件链接成可执行文件(.out)。允许用户在目标系统的存储空间中为程序的各段分配存储空间。能根据用户的配置,将各段重定位到指定的区域,包括各段的起始地址、符号的相对偏移等。C55X的链接器能够接受多个 COFF目标文件,把多个目标文件的相同段组合在一起,生成COFF执行文件。,第六章 软件开发工具,二、链接器调用方法 1、调用链接器的命令格式:lnk55 -options filename1 filenamen lnk55:链接器调用命令filename:为输入的目标

13、文件名options:为链接器的选项,用于控制链接操作,可以放在命令行或链接器命令文件中的 任何地方,第六章 软件开发工具,2、链接器调用的4种方法 (1)在命令行指定选项和文件名例:lnk55 -o link.out file1.obj file2.obj (2)只输入lnk55命令,在链接器给出的提示符下输入相应内容:command files:输入命令文件名object files .obj :输入一个或多个目标文件output file a.out:链接器输出文件名option:输入选项,第六章 软件开发工具,(3) 使用链接器命令文件假定一个命令文件linker.cmd的内容如下:o

14、 link.outfile1.objfile2.obj 在命令行运行链接器Lnk55 linker.cmd,表示连接两个目标文件产生名为link.out(4) 使用集成开发环境CCS先写好链接命令文件和相应的选项,然后由CCS自行调用,第六章 软件开发工具,3、链接器命令文件 (1)作用 利用链接器命令语言来编制链接器命令文件(.cmd),应用MEMORY和SECTIONS命令可灵活自行配置目标系统的存储空间,为各段指定地址。 允许用户将链接信息放入一个文件中,以便于在相同情况下的多次调用, (2) 内容 输入文件名 链接器选项 MEMORY和SECTIONS命令,MEMORY用于指定目标存储

15、器配置,SECTIONS用于指定段的地址; 赋值语句,用于定义全局符号,并赋值。 注意,在链接器命令文件中,不能将保留字用作符号或段的名称:,第六章 软件开发工具,例:链接命令文件matrixmpy.cmd内容如下:matrixmpy.obj ;输入的目标文件o matrixmpy.out ;输出的可执行文件e mpy_start ;程序的入口地址MEMORY PAGE 0:DARAM (RW): org0000C0h len0FF3FhSARAM (RWX): org010000h len03FF00h SECTIONS mpy_result: DARAM PAGE 0mpy _prog:

16、SARAM PAGE 0mpy_ data: SARAM PAGE 0 ,第六章 软件开发工具,分析:命令文件分为三个部分输入/输出文件和选项部分;由MEMORY命令定义目标存储器的配置;由SECTIONS命令定义各段的定位。 (2) MEMORY命令指定所需的存储方式和存储地址范围,语法结构如下MEMORY PAGE0: name attr:origincostant,length costantPAGEn: name attr:origincostant,length costant,标识一个存储空间,表示一段存储空间的名字 Attr为该段存储空间的属性,表示该存储空间的起始地址,表示该存

17、储空间的长度,以字节为单位,第六章 软件开发工具,(3) SECTIONS命令可以指定各个段的存储地址,一般语法如下。SECTIONSname : property, property, property, name : property, property, property, 其中:name 表示段的名称,是在程序中定义的,如:mpy_prog。property 为该段的属性,包括段的内容以及如何定位等。,第六章 软件开发工具,上述例子中,将程序中定义的三段分别定位到在MEMORY中定义的存储空间DARAM和SARAM中。下载时 系统就会在DARAM中从地址0000 C0h开始,为matr

18、ix_c留出长为 2*row_number*column_number个字的空间; 将程序段 mpy_prog写到从地址010000h开始的SARAM中, 数据段mpy_data紧跟其后。 程序将从mpy_start即地址010000h处开始运行,因为在命令文件中指定mpy_start为程序人口地址。,第六章 软件开发工具,6.6 C编译器及其他 1C编译器 C编译器包含三个功能模块:语法分析、代码优化和代码产生语法分析:完成C语法检查和分析;代码优化:对程序进行优化,以便提高效率;代码产生:将 C程序转换成 C55 x的汇编源程序。 C编译器的调用格式为:cl55 options filen

19、ames -z link_options object files,调用命令,编译选项,输入文件名,目标文件,调用链接器时的链接选项,第六章 软件开发工具,2、交叉参考列表器交叉参考列表器属于调试工具,能以链接器输出的文件为输入,生成一个交叉参考列表。该交叉参考列表将列出程序中的符号、符号的定义及其引用等。调用格式xref55 options input filename output filename ,第六章 软件开发工具,3绝对列表器绝对列表器属于调试工具,能以链接器输出的文件为输入,生成一个列表文件(.abs)。该列表文件将列出程序代码的绝对地址。调用格式为:abs55 option inputfile 其中: abs55为调用命令inputfile为输入文件名options为选项:,第六章 软件开发工具,思考题:下列链接命令文件*.cmd问题出在哪里?*.cmd:MEMORY DATA : org0X000000 len0X07FFPROG : org0X000400 len0X0600 SECTIONS my_data: DATA text: PROG,问题: DATA占用了MMR的空间 DATA 与PROG空间有重叠,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 软件工程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报