资源预览内容
第1页 / 共88页
第2页 / 共88页
第3页 / 共88页
第4页 / 共88页
第5页 / 共88页
第6页 / 共88页
第7页 / 共88页
第8页 / 共88页
第9页 / 共88页
第10页 / 共88页
亲,该文档总共88页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第5章 TMS320C54x的软件开发与设计,5.1 TMS320C54x应用软件开发过程 5.2 TMS320C54x汇编语言程序设计 5.3 汇编器的使用 5.4 链接器和命令文件 5.5 公共目标文件格式COFF 5.6 TMS320C54x C语言编程 5.7 用C语言和汇编混合编程 5.8 本章小结,第5章 TMS320C54x的软件开发与设计,2,5.1 TMS320C54x应用软件开发过程,1、TMS320C54x的应用软件开发的必备工作: (1) 选择编程语言编写源程序 汇编语言 C/C+语言 (2) 选择开发工具和环境 非集成开发环境 集成开发环境CCS。,第5章 TMS320C54x的软件开发与设计,3,2、 TMS320C54x应用软件开发流程 (1) 编写汇编或C的源文件 (2) 经C编译器、汇编器生成COFF格式的目标文件 (3) 再用链接器进行链接,生成在C54x上可执行的目标代码 (4) 然后利用调试工具对可执行的目标代码进行仿真和调试。 (5) 当调试完成后,通过Hex代码转换工具,将调试后的可执行目标代码转换成EPROM编程器能接受的代码,并将该代码固化到EPROM中或加载到用户的应用系统中,以便DSP目标系统脱离计算机单独运行。,第5章 TMS320C54x的软件开发与设计,5.1 TMS320C54x应用软件开发过程,4,图5-1 TMS320C54x的软件开发流程图,第5章 TMS320C54x的软件开发与设计,5.1 TMS320C54x应用软件开发过程,5,3、集成开发环境简介 CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。CCS集成开发环境(IDE)允许编辑、编译和调试DSP目标程序,支持设计开发全过程。有关CCS的具体介绍参见第6章。,第5章 TMS320C54x的软件开发与设计,5.1 TMS320C54x应用软件开发过程,6,5.2 TMS320C54x汇编语言程序设计,什么是汇编语言、汇编器、汇编过程 汇编语言是为特定CPU设计的一种面向机器的语言,是其机器语言便于记忆和理解的符号形式(又称为助记符),汇编语言的语句与机器语言(机器语言操作码)存在对应关系。 使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,也称汇编器。汇编器把汇编语言翻译成机器语言的过程称为汇编。 汇编语言程序的编写必须符合一定的格式,以便于汇编器将源文件翻译成目标文件,源文件可以包含汇编语言指令、汇编伪指令、宏伪指令和规定的字符与数字。,第5章 TMS320C54x的软件开发与设计,7,5.2.1 汇编语言的语法格式 助记符指令语法格式: 标号区: 助记符指令区 操作数区 ;注释区 例 Begin: LD SYM1, AR1 ;将立即数SYM1装入寄存器AR1中,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,8,标号区 所有汇编指令和大多数汇编伪指令前面都可以带有标号,使用它必须从语句第一列开始。标号最多可达32个字符,由AZ、az、09、_以及$符号组成,且第一个字符不能是数字,标号的大小写必须一致。 标号后可带冒号“:”,但冒号并不作为标号的一部分,如例子中的“Begin”。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,9,助记符指令区和操作数区 例子中的汇编指令语句“LD SYM1, AR1”。其中LD是助记符指令,SYM1, AR1是它的操作数,该语句的功能是将立即数SYM1装入寄存器AR1中。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,10,注释区 注释用来说明指令功能的文字,便于用户阅读。注释区可以从任何一列开始,可以包含ASCII字符和空格。注释可位于句首或句尾,位于句首时,以“*”或“;”开始,位于句尾时,以分号“;”开始。注释可单独一行或数行;注释是任选项。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,11,5.2.2 汇编语言中的伪指令 汇编伪指令为程序提供数据并控制汇编过程。伪指令格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。 汇编伪指令主要完成以下工作: (1) 将数据和代码汇编进指定的段。 (2) 控制产生清单文件。 (3) 初始化存储器。 (4) 汇编条件代码块。 (5) 声明全局变量。 (6) 在存储器中为未初始化的变量保存空间。 (7) 为汇编器指定库。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,12,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,表51 常用的汇编伪指令,13,5.2.2 汇编语言中的伪指令 1、段定义伪指令 段定义伪指令指定汇编程序的段,它们包括: .bss 为未初始化的段预留空间。 .data 指定后续代码为数据段,通常包含初始化的数据。 .sect 自命名的初始化段,可包含可执行代码和数据。 .text 指定后续的代码为文本段,通常包含可执行代码。 .usect 为未初始化的命名段预留空间。 例5-4段定义伪指令示例 .data ;表示从这里开始数据段,后续数据顺序存放在数据段中 coeff .word 044h,055h,066h ;3个word型数据连续放入.data段,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,14,5.2.2 汇编语言中的伪指令 2、初始化常数伪指令 .byte .ubyte .char 指定数值用8位表示。 .float和.xfloat 指定数值用单精度IEEE浮点表示。 .int .uint .half .short .ushort .word .uword 指定数值用16位表示。 .long .ulong .xlong 指定数值用32位表示。 .double和.ldouble 指定数值用双精度IEEE浮点表示。 .bes和.space 在当前段预留指定的存储空间。 例5-5 初始化常数伪指令示例 .byte 18 ;将一个值18放入当前段的连续字节中 .word 012Ch ;将一个16比特位值012Ch放入当前段的连续字中,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,15,5.2.2 汇编语言中的伪指令 3、段程序计数器(SPC)定位伪指令 有一些伪指令可以指定当前段在内存中地址对齐: .align 用于指定起始位置对准在1128字的边界。操作数为1表示对准到字边界;操作数为2表示对准到长字/偶字边界;操作数为128表示对准到页边界。 .even 用于指定起始位置对准到下一个字的边界。它等效于.align伪指令的操作数为1;使用.even操作数为2时,表示对齐到下一个长字的边界。 任何在当前字中没有使用的位都填充0。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,16,5.2.2 汇编语言中的伪指令 4、输出列表格式伪指令 输出列表格式伪指令可以指定格式化的清单列表文件输出: .length 用于控制清单列表文件页面的长度。 .page 用于控制清单列表文件中加入新页。 .tab 用于定义制表键(tab)的长度。 .title 用于控制在清单列表文件每页顶部打印标题。 .list和.nolist用于控制打开或关闭清单列表文件的输出。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,17,5.2.2 汇编语言中的伪指令 5、文件引用伪指令 文件引用伪指令可以引用其它文件中的信息: .copy和.include 指明从其它文件读取源代码程序语句。 .def 指明在当前文件中定义但可被其它文件中引用的符号。 .global 指明符号为全局符号。 .ref 指明在当前文件中引用,但在其它文件中定义的符号。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,18,5.2.2 汇编语言中的伪指令 6、条件汇编伪指令 条件汇编伪指令用于指示对某些代码按照表达式的计算结果,决定是否对其汇编。有两组伪指令用于条件汇编: .if .elseif .else .endif 这些语句用于通知汇编器按照表达式的计算结果,对某段代码块进行条件汇编。 .loop .break .endloop 这些语句用于通知汇编器按照表达式的计算结果重复汇编一个代码块。要求表达式和伪指令必须完全在同一行指定。,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,19,5.2.3 汇编语言中的常数及字符串 汇编器可支持7种类型的常数(常量): 二进制整数 八进制整数 十进制整数 十六进制整数 浮点数常量 字符常量 字符串,第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,20,5.2.3 汇编语言中的常数及字符串 1、二进制整数 二进制整型常量最多由16位二进制数字(0或1)组成,后缀为B(或b)。如果数字少于16位,汇编器将其右边对齐,并在前面补零。 例5-6二进制整数示例 10001000B 136(十进制)或88 (十六进制) 0111100b 60 (十进制)或3C(十六进制) 10b 2 (十进制)或2 (十六进制) 10001111B 143(十进制)或8F(十六进制),第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,21,5.2.3 汇编语言中的常数及字符串 2、八进制整数 八进制整型常量最多由6位的八进制数字(0到7) 组成,后缀为Q(或q)或前缀为0(零)。 例5-7 八进制整数示例 100011Q 32777(十进制)或8009(十六进制) 124q 84 (十进制)或54 (十六进制) 八进制常数也可使用C语言的记号,即加前缀0。 0100011 32777(十进制)或8009(十六进制) 0124 84 (十进制)或54 (十六进制),第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,22,5.2.3 汇编语言中的常数及字符串 3、十进制整数 十进制整型常量由十进制数字串组成,无后缀。取值范围为:32 76832 767或065 535。 例5-8十进制整数示例 2118 2118 (十进制)或846 (十六进制) 65535 65535(十进制)或0FFFF(十六进制) 32768 32768(十进制)或8000 (十六进制),第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇编语言程序设计,23,5.2.3 汇编语言中的常数及字符串 4、十六进制整数 十六进制整型常量最多由4位十六进制数字组成,带后缀H(或h),必须以数字(09)开始,也可加前缀0x。 例5-9 十六进制整数示例 0DH 14 (十进制)或000D (十六进制) 12BCH 4796(十进制)或12BC(十六进制) 十六进制常数也可用C语言记号,即加前缀0x。 0x0D 14 (十进制)或000D (十六进制) 0x12BC 4796(十进制)或12BC(十六进制),第5章 TMS320C54x的软件开发与设计,5.2 TMS320C54x汇
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号