




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 u5.1 5.1 TMS320C54xTMS320C54x应用软件开发过程应用软件开发过程u5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计u5.3 5.3 汇编器的使用汇编器的使用u5.4 5.4 链接器和命令文件链接器和命令文件u5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFFu5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程u5.7 5.7 用用C C语言和汇编混合编程语言和汇编混合编程u5.8 5.8 本章小结本章小结第第5章章 T
2、MS320C54x的软件开发与设计的软件开发与设计 25.1 TMS320C54x5.1 TMS320C54x应用软件开发过程应用软件开发过程1、TMS320C54x的应用软件开发的必备工作:的应用软件开发的必备工作: (1) 选择编程语言编写源程序选择编程语言编写源程序 汇编语言汇编语言 C/C+语言语言 (2) 选择开发工具和环境选择开发工具和环境 非集成开发环境非集成开发环境 集成开发环境集成开发环境CCS。 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 32、 TMS320C54x应用软件开发流程应用软件开发流程T (1) 编写汇编或编写汇编或C的源文件的源文件T
3、(2) 经经C编译器、汇编器生成编译器、汇编器生成COFF格式的目标文件格式的目标文件T (3) 再用链接器进行链接,生成在再用链接器进行链接,生成在C54x上可执行的目标代上可执行的目标代码码T (4) 然后利用调试工具对可执行的目标代码进行仿真和调试。然后利用调试工具对可执行的目标代码进行仿真和调试。T (5) 当调试完成后,通过当调试完成后,通过Hex代码转换工具,将调试后的可执代码转换工具,将调试后的可执行目标代码转换成行目标代码转换成EPROM编程器能接受的代码,并将该代编程器能接受的代码,并将该代码固化到码固化到EPROM中或加载到用户的应用系统中,以便中或加载到用户的应用系统中,
4、以便DSP目标系统脱离计算机单独运行。目标系统脱离计算机单独运行。 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.1 TMS320C54x5.1 TMS320C54x应用软件开发过程应用软件开发过程4图图5-1 TMS320C54x的软件开发流程图的软件开发流程图 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.1 TMS320C54x5.1 TMS320C54x应用软件开发过程应用软件开发过程53、集成开发环境简介、集成开发环境简介T CCS提供了配置、建立、调试、跟踪和分析程序的工具,提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌
5、入式信号处理程序的编制和测试,它能够加它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。速开发进程,提高工作效率。CCS集成开发环境(集成开发环境(IDE)允允许编辑、编译和调试许编辑、编译和调试DSP目标程序,支持设计开发全过目标程序,支持设计开发全过程。有关程。有关CCS的具体介绍参见第的具体介绍参见第6章。章。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.1 TMS320C54x5.1 TMS320C54x应用软件开发过程应用软件开发过程65.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计T 什么是
6、汇编语言、汇编器、汇编过程什么是汇编语言、汇编器、汇编过程T 汇编语言是为特定汇编语言是为特定CPU设计的一种面向机器的语言,是其机设计的一种面向机器的语言,是其机器语言便于记忆和理解的符号形式(又称为助记符),汇编器语言便于记忆和理解的符号形式(又称为助记符),汇编语言的语句与机器语言(机器语言操作码)存在对应关系。语言的语句与机器语言(机器语言操作码)存在对应关系。T 使用汇编语言编写的程序,机器不能直接识别,要由一种程使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,也称汇编
7、器。汇编器把汇编语言翻译成机器语言的编程序,也称汇编器。汇编器把汇编语言翻译成机器语言的过程称为汇编。过程称为汇编。T 汇编语言程序的编写必须符合一定的格式,以便于汇编器将汇编语言程序的编写必须符合一定的格式,以便于汇编器将源文件翻译成目标文件,源文件可以包含汇编语言指令、汇源文件翻译成目标文件,源文件可以包含汇编语言指令、汇编伪指令、宏伪指令和规定的字符与数字。编伪指令、宏伪指令和规定的字符与数字。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 75.2.1 汇编语言的语法格式汇编语言的语法格式T 助记符指令语法格式:助记符指令语法格式: 标号区标号区: 助记符指令区助记符
8、指令区 操作数区操作数区 ;注释区;注释区例例 T SYM1 .SET 2 ;符号符号SYM1=2T Begin: LD SYM1, AR1 ;将立即数将立即数SYM1装入寄存器装入寄存器AR1中中第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计8T 标号区标号区T 所有汇编指令和大多数汇编伪指令前面都可以带有标号,使所有汇编指令和大多数汇编伪指令前面都可以带有标号,使用它必须从语句第一列开始。标号最多可达用它必须从语句第一列开始。标号最多可达32个字符,由个字符,由AZ、az、09、_以
9、及以及$符号组成,且第一个字符不能是数符号组成,且第一个字符不能是数字,标号的大小写必须一致。字,标号的大小写必须一致。 标号后可带冒号标号后可带冒号“:”,但冒,但冒号并不作为标号的一部分,如例子中的号并不作为标号的一部分,如例子中的“Begin”。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计9T 助记符指令区和操作数区助记符指令区和操作数区T 例子中的汇编指令语句例子中的汇编指令语句“LD SYM1, AR1”。其中其中LD是是助记符指令,助记符指令,SYM1, AR1是它的操作数
10、,该语句的功是它的操作数,该语句的功能是将立即数能是将立即数SYM1装入寄存器装入寄存器AR1中。中。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计10T 注释区注释区T 注释用来说明指令功能的文字,便于用户阅读。注释区注释用来说明指令功能的文字,便于用户阅读。注释区可以从任何一列开始,可以包含可以从任何一列开始,可以包含ASCII字符和空格。注字符和空格。注释可位于句首或句尾,位于句首时,以释可位于句首或句尾,位于句首时,以“*”或或“;”开开始,位于句尾时,以分号始,位于句尾时,以分
11、号“;”开始。注释可单独一行或开始。注释可单独一行或数行;注释是任选项。数行;注释是任选项。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计115.2.2 汇编语言中的伪指令汇编语言中的伪指令T 汇编伪指令为程序提供数据并控制汇编过程。伪指令格式与汇编伪指令为程序提供数据并控制汇编过程。伪指令格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。们并不产生机器指令。T 汇编伪指令主要完成以下工作:汇编伪指令主要完成
12、以下工作:T (1) 将数据和代码汇编进指定的段。将数据和代码汇编进指定的段。 T (2) 控制产生清单文件。控制产生清单文件。T (3) 初始化存储器。初始化存储器。T (4) 汇编条件代码块。汇编条件代码块。T (5) 声明全局变量。声明全局变量。T (6) 在存储器中为未初始化的变量保存空间。在存储器中为未初始化的变量保存空间。T (7) 为汇编器指定库。为汇编器指定库。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计12第第5章章 TMS320C54x的软件开发与设计的软件开发与设
13、计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计 表表51 常用的汇编伪指令常用的汇编伪指令135.2.2 汇编语言中的伪指令汇编语言中的伪指令1、段定义伪指令、段定义伪指令T 段定义伪指令指定汇编程序的段,它们包括:段定义伪指令指定汇编程序的段,它们包括:T .bss 为未初始化的段预留空间。为未初始化的段预留空间。T .data 指定后续代码为数据段,通常包含初始化的数据。指定后续代码为数据段,通常包含初始化的数据。T .sect 自命名的初始化段,可包含可执行代码和数据。自命名的初始化段,可包含可执行代码和数据。T .text 指定后续的代码为
14、文本段,通常包含可执行代码。指定后续的代码为文本段,通常包含可执行代码。T .usect 为未初始化的命名段预留空间。为未初始化的命名段预留空间。T 例例5-4段定义伪指令示例段定义伪指令示例T .data ;表示从这里开始数据段,后表示从这里开始数据段,后T ;续数据顺序存放在数据段中;续数据顺序存放在数据段中T coeff .word 044h,055h,066h ;3个个word型数据连续放入型数据连续放入.data段段第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计145.2.2
15、汇编语言中的伪指令汇编语言中的伪指令2、初始化常数伪指令、初始化常数伪指令T .byte .ubyte .char 指定数值用指定数值用8位表示。位表示。T .float和和.xfloat 指定数值用单精度指定数值用单精度IEEE浮点表示。浮点表示。T .int .uint .half .short .ushort .word .uword 指定数值用指定数值用16位表示。位表示。T .long .ulong .xlong 指定数值用指定数值用32位表示。位表示。T .double和和.ldouble 指定数值用双精度指定数值用双精度IEEE浮点表示。浮点表示。T .bes和和.space 在
16、当前段预留指定的存储空间。在当前段预留指定的存储空间。T 例例5-5 初始化常数伪指令示例初始化常数伪指令示例T .byte 18 ;将一个值将一个值18放入当前段的连续字节中放入当前段的连续字节中T .word 012Ch ;将一个数据将一个数据012Ch放入当前段的连续字中放入当前段的连续字中第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计155.2.2 汇编语言中的伪指令汇编语言中的伪指令3、段程序计数器(、段程序计数器(SPC)定位伪指令定位伪指令T 有一些伪指令可以指定当前段在内
17、存中地址对齐:有一些伪指令可以指定当前段在内存中地址对齐:T .align 用于指定起始位置对准在用于指定起始位置对准在1128字的边界。操作数字的边界。操作数为为1表示对准到字边界;操作数为表示对准到字边界;操作数为2表示对准到长字表示对准到长字/偶字偶字边界;操作数为边界;操作数为128表示对准到页边界。表示对准到页边界。T .even 用于指定起始位置对准到下一个字的边界。它等效用于指定起始位置对准到下一个字的边界。它等效于于.align伪指令的操作数为伪指令的操作数为1;使用;使用.even操作数为操作数为2时,表时,表示对齐到下一个长字的边界。示对齐到下一个长字的边界。T 任何在当前
18、字中没有使用的位都填充任何在当前字中没有使用的位都填充0。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计165.2.2 汇编语言中的伪指令汇编语言中的伪指令4、输出列表格式伪指令、输出列表格式伪指令T 输出列表格式伪指令可以指定格式化的清单列表文件输出:输出列表格式伪指令可以指定格式化的清单列表文件输出:T .length用于控制清单列表文件页面的长度。用于控制清单列表文件页面的长度。T .page 用于控制清单列表文件中加入新页。用于控制清单列表文件中加入新页。T .tab 用于定义制
19、表键(用于定义制表键(tab)的长度。的长度。T .title 用于控制在清单列表文件每页顶部打印标题。用于控制在清单列表文件每页顶部打印标题。T .list和和.nolist用于控制打开或关闭清单列表文件的输出。用于控制打开或关闭清单列表文件的输出。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计175.2.2 汇编语言中的伪指令汇编语言中的伪指令5、文件引用伪指令、文件引用伪指令T 文件引用伪指令可以引用其它文件中的信息:文件引用伪指令可以引用其它文件中的信息:T .copy和和.in
20、clude 指明从其它文件读取源代码程序语句。指明从其它文件读取源代码程序语句。T .def 指明在当前文件中定义但可被其它文件中引用的符号。指明在当前文件中定义但可被其它文件中引用的符号。T .global 指明符号为全局符号。指明符号为全局符号。T .ref 指明在当前文件中引用,但在其它文件中定义的符号。指明在当前文件中引用,但在其它文件中定义的符号。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计185.2.2 汇编语言中的伪指令汇编语言中的伪指令6、条件汇编伪指令、条件汇编伪指令
21、T 条件汇编伪指令用于指示对某些代码按照表达式的计算结条件汇编伪指令用于指示对某些代码按照表达式的计算结果,决定是否对其汇编。有两组伪指令用于条件汇编:果,决定是否对其汇编。有两组伪指令用于条件汇编:T .if .elseif .else .endif 这些语句用于通知汇编器按照表这些语句用于通知汇编器按照表达式的计算结果,对某段代码块进行条件汇编。达式的计算结果,对某段代码块进行条件汇编。T .loop .break .endloop 这些语句用于通知汇编器按照这些语句用于通知汇编器按照表达式的计算结果重复汇编一个代码块。要求表达式和伪表达式的计算结果重复汇编一个代码块。要求表达式和伪指令必
22、须完全在同一行指定。指令必须完全在同一行指定。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计195.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串T 汇编器可支持汇编器可支持7种类型的常数(常量):种类型的常数(常量):T 二进制整数二进制整数T 八进制整数八进制整数T 十进制整数十进制整数T 十六进制整数十六进制整数T 浮点数常量浮点数常量T 字符常量字符常量T 字符串字符串第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54x
23、TMS320C54x汇编语言程序设计汇编语言程序设计205.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串1、二进制整数、二进制整数T 二进制整型常量最多由二进制整型常量最多由16位二进制数字(位二进制数字(0或或1)组成,后缀)组成,后缀为为B(或或b)。)。如果数字少于如果数字少于16位,汇编器将其右边对齐,并位,汇编器将其右边对齐,并在前面补零。在前面补零。 T 例例5-6二进制整数示例二进制整数示例T 10001000B 136(十进制)或十进制)或88 (十六进制)(十六进制)T 0111100b 60 (十进制)或十进制)或3C(十六进制)十六进制)T 10b 2 (十进
24、制)或十进制)或2 (十六进制)(十六进制)T 10001111B 143(十进制)或十进制)或8F(十六进制)十六进制)第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计215.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串2、八进制整数、八进制整数 T 八进制整型常量最多由八进制整型常量最多由6位的八进制数字(位的八进制数字(0到到7) 组组成,后缀为成,后缀为Q(或或q)或前缀为或前缀为0(零)。(零)。T 例例5-7 八进制整数示例八进制整数示例T 100011Q 3277
25、7(十进制)或十进制)或8009(十六进制)(十六进制)T 124q 84 (十进制)或十进制)或54 (十六进制)(十六进制) T 八进制常数也可使用八进制常数也可使用C语言的记号,即加前缀语言的记号,即加前缀0。T 0100011 32777(十进制)或(十进制)或8009(十六进制)(十六进制) T 0124 84 (十进制)或(十进制)或54 (十六进制)(十六进制)第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计225.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串3、
26、十进制整数、十进制整数 十进制整型常量由十进制数字串组成,无后缀。取值范围十进制整型常量由十进制数字串组成,无后缀。取值范围为:为:32 76832 767或或065 535。 例例5-8十进制整数示例十进制整数示例 2118 2118 (十进制)或(十进制)或846 (十六进制)(十六进制) 65535 65535(十进制)或(十进制)或0FFFF(十六进制)十六进制) 32768 32768(十进制)或(十进制)或8000 (十六进制)(十六进制)第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语
27、言程序设计235.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串4、十六进制整数、十六进制整数 十六进制整型常量最多由十六进制整型常量最多由4位十六进制数字组成,带后缀位十六进制数字组成,带后缀H(或或h),必须以数字(必须以数字(09)、字母)、字母AF开始,也可加开始,也可加前缀前缀0 x。 例例5-9 十六进制整数示例十六进制整数示例 0DH 14 (十进制)或十进制)或000D (十六进制)十六进制) 12BCH 4796(十进制)或十进制)或12BC(十六进制)十六进制) 十六进制常数也可用十六进制常数也可用C语言记号,即加前缀语言记号,即加前缀0 x。 0 x0D 14
28、(十进制)或十进制)或000D (十六进制)十六进制) 0 x12BC 4796(十进制)或十进制)或12BC(十六进制)十六进制)第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计245.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串5、浮点数、浮点数 浮点整型常量由一串十进制数字组成,可以带小数点、分浮点整型常量由一串十进制数字组成,可以带小数点、分数和指数部分。数和指数部分。 浮点数的表示方法:浮点数的表示方法: nn E | e n n为一串十进制数,浮点数前可带加减号(或
29、),且为一串十进制数,浮点数前可带加减号(或),且小数点必须指定。小数点必须指定。 例例5-10 浮点数示例浮点数示例 99.e9 有效的数有效的数 99e9 非法非法 合法:合法:.314 ,3.14 , -.314e-19 。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计25第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计5.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符
30、串6、字符常数、字符常数 T 字符常数是包括在单引号内的字符。若单引号之间没有字符,字符常数是包括在单引号内的字符。若单引号之间没有字符,则值为则值为0。每个字符在内部表示为。每个字符在内部表示为8位位ASCII码。码。 T 例例5-11 字符常数示例字符常数示例T A 内部表示为内部表示为41 hT B 内部表示为内部表示为42 h265.2.3 汇编语言中的常数及字符串汇编语言中的常数及字符串7、字符串、字符串 字符串是由双引号括起来的一串字符,最大长度是可字符串是由双引号括起来的一串字符,最大长度是可以变化的,由要求字符串的伪指令来设置。字符在内以变化的,由要求字符串的伪指令来设置。字符
31、在内部用部用8位位ASCII码来表示。码来表示。 例例5-12 字符串示例字符串示例 “example” 定义了一个长度为定义了一个长度为7的字符串:的字符串:example。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计275.2.4 汇编语言中的表达式汇编语言中的表达式 表达式可以是常数、符号,或者是由算术运算符连接的表达式可以是常数、符号,或者是由算术运算符连接的一些常数和符号、并可直接计算得到一个常数结果值的一些常数和符号、并可直接计算得到一个常数结果值的运算式。表达式值的有效范
32、围从运算式。表达式值的有效范围从32 76832 767。 对于运算式形式的表达式,影响其计算结果值的主要因对于运算式形式的表达式,影响其计算结果值的主要因素有:素有: (1) 圆括号(圆括号( )。圆括号内的表达式最先计算。)。圆括号内的表达式最先计算。 (2) 优先级。优先级。TMS320C54x表达式中使用与表达式中使用与C语言相似的语言相似的优先级,优先级高的先计算。优先级,优先级高的先计算。 (3) 从左到右运算顺序。在具有相同的优先级的运算式中,从左到右运算顺序。在具有相同的优先级的运算式中,按从左到右的顺序计算。按从左到右的顺序计算。第第5章章 TMS320C54x的软件开发与设
33、计的软件开发与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计285.2.4 汇编语言中的表达式汇编语言中的表达式1、汇编源程序中的运算符、汇编源程序中的运算符 序号序号符符号号运算操作运算操作求值顺序求值顺序1+ - !取正、取负、按位求补、逻辑负从右至左2* / % 乘法、除法、求模从左至右3+ -加法、减法从左至右4指数从左到右5 左移、右移从左至右6 = 大于、大于等于从左至右8!= =不等于、等于从左至右9&按位与运算从左至右10按位异或运算从左至右11|按位或运算从左至右第第5章章 TMS320C54x的软件开发与设计的软件开发
34、与设计 5.2 5.2 TMS320C54xTMS320C54x汇编语言程序设计汇编语言程序设计295.2.4 汇编语言中的表达式汇编语言中的表达式2、条件表达式、条件表达式 TMS320C54x汇编器支持以下关系运算符,可以用于任何汇编器支持以下关系运算符,可以用于任何表达式。表达式。 = 等于等于 = = 等于等于 != 不等于不等于 = 大于或等于大于或等于 大于大于 ROM T .data : ROM T .bss : RAM T 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFF565.5.3 链接器对段
35、的处理链接器对段的处理3.链接命令文件链接命令文件T (2) MEMORY用法用法T MEMORY用于指定系统硬件存在的物理存储器所占用的空用于指定系统硬件存在的物理存储器所占用的空间,指令的句法:间,指令的句法: T MEMORYT T PAGE0:name 1(attr):origin=constant, length=constant;T PAGEn:name n(attr):origin=constant, length=constant;T T 说明以大写说明以大写MEMORY指令字开始;由大括号括起来的存储指令字开始;由大括号括起来的存储器区间说明。系统存储空间说明的格式如下:器区
36、间说明。系统存储空间说明的格式如下:T 存储区间:存储页面存储区间:存储页面 区间名称区间名称 区间属性区间属性 起始地址起始地址 区间长度区间长度第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFF57 T 58T 59T 60 61T MEMORY /*MEMORY 伪指令伪指令*/ T T PAGE 0: ROM:origin=1000h, length=0100hT PAGE 1: RAM:origin=0100h, length=0100h T T 程序存储器:程序存储器:256字字ROM,起始地址,起始地
37、址1000h,取名取名ROMT 数据存储器:数据存储器:256字字RAM,起始地址,起始地址0100h,取名取名RAM625.5.3 链接器对段的处理链接器对段的处理3.链接命令文件链接命令文件T (3) SECTIONS用法用法T SECTIONS用来控制段的构成与地址分配,主要是指明把程序用来控制段的构成与地址分配,主要是指明把程序编译的各种段分别存放到物理存储空间的什么位置。它在功能编译的各种段分别存放到物理存储空间的什么位置。它在功能上描述了如何将输入段组合成输出段;在可执行程序中定义输上描述了如何将输入段组合成输出段;在可执行程序中定义输出段;规定输出段在存储器中的存放位置;允许重新
38、命名输出出段;规定输出段在存储器中的存放位置;允许重新命名输出段。段。T SECTIONST T name:property, property, property, T name:property, property, property, T name:property, property, property, T 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFF63 T SECTIONS /*SECTIONS伪指令伪指令*/ T T .text : ROM T .data : ROM T .bss : RAM
39、 T 语句语句, .text 是是段名,段名,ROM 是是属性,指明链接属性,指明链接后生成的后生成的.text 被被存放在存放在MEMORY指定的物理存储指定的物理存储器器ROM空间。其余两条类似空间。其余两条类似64 65666768T 69707172T5.5.4 重新定位重新定位T 1.链接时重新定位链接时重新定位T 汇编器对每个段汇编时都是从本段内以汇编器对每个段汇编时都是从本段内以0地址开始存放的,地址开始存放的,而所有需要重新定位的符号(标号)在段内都是相对于它而所有需要重新定位的符号(标号)在段内都是相对于它的。但事实上,所有段都不可能从物理存储器的的。但事实上,所有段都不可能
40、从物理存储器的0地址单元地址单元开始,因此链接器必须对各个段进行重新定位。此过程会涉开始,因此链接器必须对各个段进行重新定位。此过程会涉及到以下几方面问题:及到以下几方面问题: (1) 将各个段配置到存储器中,使每个段都有一个合适的起将各个段配置到存储器中,使每个段都有一个合适的起始地址。始地址。 (2) 将符号变量调整到相对于新的段地址的位置。将符号变量调整到相对于新的段地址的位置。 (3) 将引用调整到重新定位后的符号,这些符号反映了调整将引用调整到重新定位后的符号,这些符号反映了调整后的新符号值。后的新符号值。 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5
41、.5 公共目标文件格式公共目标文件格式COFFCOFF73T5.5.4 重新定位重新定位T 2.运行时间重新定位运行时间重新定位T 在实际运行中,有时需要将代码装入存储器的一个地方,而在在实际运行中,有时需要将代码装入存储器的一个地方,而在另一个地方运行。如:一些关键的执行代码必须装在系统的另一个地方运行。如:一些关键的执行代码必须装在系统的ROM中,但运行时希望在较快的中,但运行时希望在较快的RAM中进行。则可利用中进行。则可利用SECTIONS伪指令选项可让链接器对其定位伪指令选项可让链接器对其定位2次,其方法为:次,其方法为: (1) 使用装入关键字设置装入地址。使用装入关键字设置装入地
42、址。 (2) 使用运行关键字设置它的运行地址。使用运行关键字设置它的运行地址。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFF74T5.5.5 程序装入程序装入T 链接器产生可执行的链接器产生可执行的COFF目标文件。可执行的目标文件模目标文件。可执行的目标文件模块与链接器输入的目标文件具有相同的块与链接器输入的目标文件具有相同的COFF格式。为了运格式。为了运行程序,在可执行模块中的数据必须传输或装入目标系统存行程序,在可执行模块中的数据必须传输或装入目标系统存储器中。储器中。T TMS320C54x调试工具(
43、调试工具(debugging tools),包括软件模),包括软件模拟器、拟器、XDS仿真器和集成开发系统仿真器和集成开发系统CCS。它们都具有内部的。它们都具有内部的装入器,这些工具都包含调用装入器的装入器,这些工具都包含调用装入器的LOAD命令。装入器命令。装入器读取可执行文件,将程序复制进目标系统的存储器中。读取可执行文件,将程序复制进目标系统的存储器中。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFF75T5.5.6 COFF文件中的符号文件中的符号T COFF文件中有一个符号表,主要用来存储程序中有关符
44、号的文件中有一个符号表,主要用来存储程序中有关符号的信息。链接器在执行程序定位时,要使用符号表提供的信息,信息。链接器在执行程序定位时,要使用符号表提供的信息,而调试工具也要使用该表来提供符号调试。而调试工具也要使用该表来提供符号调试。T 外部符号是指在一个模块中定义而在另一个模块中引用的符外部符号是指在一个模块中定义而在另一个模块中引用的符号。它可以用伪指令号。它可以用伪指令.def、.ref或或.global来定义。来定义。 (1) .def 在当前模块中定义,并可在别的模块中使用的符号。在当前模块中定义,并可在别的模块中使用的符号。 (2) .ref 在当前模块中使用,但在别的模块中定义
45、的符号。在当前模块中使用,但在别的模块中定义的符号。 (3) .global 可以是上面的任何一种情况。可以是上面的任何一种情况。 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.5 5.5 公共目标文件格式公共目标文件格式COFFCOFF765.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程T 使用使用C开发开发DSP应用软件程序比汇编开发具有诸多优点,它应用软件程序比汇编开发具有诸多优点,它的代码的可读性和可移植性都好,程序升级修改也极为方的代码的可读性和可移植性都好,程序升级修改也极为方便,可以明显加快开发速度,并得到了越来越广泛的使用
46、。便,可以明显加快开发速度,并得到了越来越广泛的使用。掌握掌握C开发,逐渐成为掌握开发,逐渐成为掌握TMS320C54x开发的一项基本技开发的一项基本技能。能。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 775.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程5.6.1 相关基础知识相关基础知识1.TMS320C54x的的C语言中的数据类型语言中的数据类型T TMS320C54x CPU是是16位的,位的,TMS320C54x提供的编提供的编译环境中的数据格式与标准译环境中的数据格式与标准ANSI C编程略有不同,如下编程略有不同,如下表所示。
47、表所示。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 78类型类型长度长度格式格式最小值最小值最大值最大值signed char16 bitsASCII-32 76832 767char, unsigned char16 bitsASCII065 535short, signed short16 bits2s complement-32 76832 767unsigned short16 bitsBinary065 535int, signed int16 bits2s complement-32 76832 767unsigned int16 bitsBinary065
48、535long, signed long32 bits2s complement-2 147 483 6482 147 483 647unsigned long32 bitsBinary04 294 967 295Enum16 bits2s complement-32 76832 767Float32 bitsIEEE 32-bit1.175 494e-383.40 282 346e+38Double32 bitsIEEE 32-bit1.175 494e-383.40 282 346e+38long double32 bitsIEEE 32-bit1.175 494e-383.40 282
49、346e+38pointers16 bitsBinary00 xFFFF第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程795.6.1 相关基础知识相关基础知识2.TMS320C54x C扩展的扩展的C语言关键字语言关键字 TMS320C54x C编译器支持标准的编译器支持标准的const(常数)和(常数)和volatile(可变的)关键字,此外(可变的)关键字,此外TMS320C54x C还扩展了标准还扩展了标准C,支,支持持interrupt(中断)、(中断)、ioport(I/O端口)、端口
50、)、near(近)、(近)、far(远)关键字。(远)关键字。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程80T5.6.1 相关基础知识相关基础知识T 2.TMS320C54x C扩展的扩展的C语言关键字语言关键字(1)const关键字关键字TMS320C54x C支持标准支持标准C的的const关键字。在标准关键字。在标准C中该中该关键字可以对变量或数组进行限定,保证他们的值在程序关键字可以对变量或数组进行限定,保证他们的值在程序执行过程中不被改变。在执行过程中不被改变。在TMS320C54
51、x C中还常用来定义中还常用来定义大的常数表并把它们分配到系统的大的常数表并把它们分配到系统的ROM。例如:。例如:const int Coefficient =0,1,2,3,4,5,6,7,8,9;(2)volatile关键字关键字一个定义为一个定义为volatile的变量是说这变量可能会被意想不到地的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去根据假设这个变量的值去优改变,这样,编译器就不会去根据假设这个变量的值去优化程序了。换句话说,化程序了。换句话说,C编译时的优化器在用到这个变量时编译时的优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保必须每次
52、都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。存在寄存器里的备份。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程81T5.6.1 相关基础知识相关基础知识T 2.TMS320C54x C扩展的扩展的C语言关键字语言关键字(3)near、far关键字关键字 TMS320C54x C拓展了标准拓展了标准C语言,增加了语言,增加了near、far关键字,用于指关键字,用于指定函数调用的方式。例如:定函数调用的方式。例如: far int SubFunction( ); near int
53、 sub_function( ); 当使用当使用near限定的函数,编译将使用限定的函数,编译将使用CALL指令产生调用;当使用指令产生调用;当使用far限定的函数,编译将使用限定的函数,编译将使用FCALL指令产生调用。注意,指令产生调用。注意,near、far关键关键字仅影响函数的调用,对函数指针没有任何影响。字仅影响函数的调用,对函数指针没有任何影响。 (4)interrupt关键字关键字 TMS320C54x C拓展了标准拓展了标准C语言,增加了语言,增加了interrupt关键字,用于指关键字,用于指定函数作为中断处理函数。中断处理函数与普通函数的区别在于采用定函数作为中断处理函数。
54、中断处理函数与普通函数的区别在于采用了特殊的寄存器保护规则和返回序列。当中断发生时,中断处理函数了特殊的寄存器保护规则和返回序列。当中断发生时,中断处理函数必须保护所有寄存器,在返回时要恢复所有保护的寄存器,使用语法必须保护所有寄存器,在返回时要恢复所有保护的寄存器,使用语法如下:如下: 例例5-20 中断服务程序定义示例中断服务程序定义示例 interrupt void int_handler( ) /中断程序体中断程序体 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程82T5.6.1 相关基
55、础知识相关基础知识T 2.TMS320C54x C扩展的扩展的C语言关键字语言关键字 (5)ioport关键字关键字 ioport关键字允许访问关键字允许访问TMS320C54x的的I/O存储空间,使用语法:存储空间,使用语法: ioport type port hex_num 其中,其中,ioport 是关键字;是关键字;type 必须是必须是char、short、int或或unsigned int 之一;之一;port hex_num指明了端口地址;指明了端口地址;hex_num必须是十六进制数的必须是十六进制数的描述。描述。 例例5-21ioport关键字使用示例关键字使用示例 / 把把
56、I/O空间空间0 x100地址的端口映射为地址的端口映射为C语言中语言中unsigned变量并命名为变量并命名为port100ioport unsigned port100;int fun( )port100=0 x10;/将将0 x10写入写入0 x100地址处的地址处的IO端口端口a= port100;/读入读入0 x100地址处的地址处的IO端口,数据存入端口,数据存入a变量变量 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程83T5.6.1 相关基础知识相关基础知识T 3.C语言开发需要
57、的支持语言开发需要的支持T TMS320C54x 在用在用C语言开发时,必须添加语言开发时,必须添加C开发运行库的支开发运行库的支持。在持。在C代码编译生成的目标代码执行代码编译生成的目标代码执行main函数代码之前,有函数代码之前,有许多工作要做,才能保证程序的正确运行,这都需要开发库提许多工作要做,才能保证程序的正确运行,这都需要开发库提供解决方案。供解决方案。第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程84T5.6.2 应用应用C语言编程的示例语言编程的示例T 例例5-22 I/O引脚引
58、脚XF控制输出控制输出C源代码示例(完整示例操作可源代码示例(完整示例操作可参考参考7.2节)节)T #include zx54x.hT volatile WORD *p;T int main(void)T WORD x;Tp=(volatile WORD *)0 x0;/close interruptionT *p=0 x0;T while(1)T T p=(volatile WORD *)0 x7;T *p&=0 x0dfff; /set XF to 0T for(x=0;x0 x0ffff;x+);/delayTp=(volatile WORD *)0 x7;T *p|=0 x0
59、2000; /set XF to 1Tfor(x=0;x0 x0ffff;x+);/delayT T return 0;T 第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程85T5.6.3 C程序目标文件的段程序目标文件的段存储结构存储结构段名段名使用对象使用对象存储器种类存储器种类.text:可执行代码可执行代码程序程序 ROM.cinit:全局全局 inits程序程序 ROM.bss:变量变量数据数据 RAM.stack:用于用于 SP数据数据 RAMVectors向量向量程序程序 ROM (
60、0 xFF80).switch为为.const语句建语句建立的表格立的表格数据数据 ROM.constconst int x=25;数据数据 ROM.sysmem堆,动态内存堆,动态内存数据数据 RAM第第5章章 TMS320C54x的软件开发与设计的软件开发与设计 5.6 TMS320C54x C5.6 TMS320C54x C语言编程语言编程865.7 5.7 用用C C语言和汇编混合编程语言和汇编混合编程T 虽然虽然C编译器的优化功能可以使编译器的优化功能可以使C代码的效率大大增加,但是代码的效率大大增加,但是在某些特定情况下,在某些特定情况下,C代码的效率还是无法与手工编写的汇编代码的效率还是无法与手
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【教师招聘】2025年九江经济技术开发区中心幼儿园公开招聘顶岗教师模拟试卷及答案详解(夺冠系列)
- 2025年东营港经济开发区卫生类事业单位急需紧缺人才引进(11人)模拟试卷及答案详解(新)
- 2025湖南长沙市望城区面向社会招聘教师183人模拟试卷及答案详解参考
- 2025湖南湘潭湘乡市教育局公开招聘公益性岗位人员2人模拟试卷附答案详解(完整版)
- 2025-2026学年度云南省昆明行知中学高二上学期9月月考历史试题(含答案)
- 2025广东清远市清城区招聘事业单位人才专项编制人员11人考前自测高频考点模拟试题及答案详解1套
- 2025年甘肃省张掖市市直医疗卫生单位招聘专业技术人员考前自测高频考点模拟试题附答案详解(突破训练)
- 2025福建厦门市集美区宁宝小学产假顶岗音乐教师招聘1人考前自测高频考点模拟试题附答案详解(完整版)
- 2025呼伦贝尔鄂温克族自治旗融媒体中心多元化岗位招聘工作人员考前自测高频考点模拟试题完整参考答案详解
- 2025黑龙江哈尔滨市工人文化宫人员招聘7人模拟试卷及1套完整答案详解
- 2025年全科医师转岗培训理论必刷试题库及答案
- 城市智能感知系统-洞察及研究
- 中储粮损耗管理办法
- 2025年《治安管理处罚法》新修订课件
- 【课件】有理数的加法(第1课时+有理数的加法法则)(课件)数学人教版2024七年级上册
- 透析患者血磷控制健康宣教
- 2025年江苏省苏州市中考数学模拟试卷(十三)(含答案)
- 项目制用工管理制度
- 2025年中国跨境电商SaaS市场行业报告
- 2025至2030年中国税务信息化行业市场研究分析及发展规模预测报告
- 2025叉车理论考试试题及答案
评论
0/150
提交评论