第5章TMS320C54x的软件开发与设计
发布时间:2021-06-07
发布时间:2021-06-07
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计 5.1 TMS320C54x应用软件开发过程 5.2 TMS320C54x汇编语言程序设计
5.3 汇编器的使用 5.4 链接器和命令文件 5.5 公共目标文件格式-COFF 5.6 TMS320C54x C语言编程 5.7 用C语言和汇编混合编程
5.8 本章小结1
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.1 TMS320C54x应用软件开发过程1、TMS320C54x的应用软件开发的必备工作:(1) 选择编程语言编写源程序 汇编语言 C/C++语言 (2) 选择开发工具和环境
非集成开发环境集成开发环境CCS。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.1 TMS320C54x应用软件开发过程2、 TMS320C54x应用软件开发流程 (1) 编写汇编或C的源文件 (2) 经C编译器、汇编器生成COFF格式的目标文件 (3) 再用链接器进行链接,生成在’C54x上可执行的目标代 码 (4) 然后利用调试工具对可执行的目标代码进行仿真和调试。 (5) 当调试完成后,通过Hex代码转换工具,将调试后的可执 行目标代码转换成EPROM编程器能接受的代码,并将该代 码固化到EPROM中或加载到用户的应用系统中,以便DSP 目标系统脱离计算机单独运行。3
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.1 TMS320C54x应用软件开发过程
图5-1 TMS320C54x的软件开发流程图
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.1 TMS320C54x应用软件开发过程3、集成开发环境简介 CCS提供了配臵、建立、调试、跟踪和分析程序的工具, 它便于实时、嵌入式信号处理程序的编制和测试,它能够加 速开发进程,提高工作效率。CCS集成开发环境(IDE)允 许编辑、编译和调试DSP目标程序,支持设计开发全过 程。有关CCS的具体介绍参见第6章。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计 什么是汇编语言、汇编器、汇编过程 汇编语言是为特定CPU设计的一种面向机器的语言,是其机 器语言便于记忆和理解的符号形式(又称为助记符),汇编 语言的语句与机器语言(机器语言操作码)存在对应关系。 使用汇编语言编写的程序,机器不能直接识别,要由一种程 序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇 编程序,也称汇编器。汇编器把汇编语言翻译成机器语言的 过程称为汇编。
汇编语言程序的编写必须符合一定的格式,以便于汇编器将 源文件翻译成目标文件,源文件可以包含汇编语言指令、汇 编伪指令、宏伪指令和规定的字符与数字。6
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.1 汇编语言的语法格式 助记符指令语法格式:[标号区][:] 助记符指令区 [操作数区] [;注释区]
[例] Begi
n: LD SYM1, AR1 ;将立即数SYM1装入寄存器AR1中
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计 标号区 所有汇编指令和大多数汇编伪指令前面都可以带有标号,使 用它必须从语句第一列开始。标号最多可达32个字符,由 A~Z、a~z、0~9、_以及$符号组成,且第一个字符不能是数 字,标号的大小写必须一致。 标号后可带冒号 : ,但冒 号并不作为标号的一部分,如例子中的 Begin”。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计 助记符指令区和操作数区 例子中的汇编指令语句 LD SYM1, AR1”。其中LD是 助记符指令,SYM1, AR1是它的操作数,该语句的功 能是将立即数SYM1装入寄存器AR1中。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计 注释区 注释用来说明指令功能的文字,便于用户阅读。注释区 可以从任何一列开始,可以包含ASCII字符和空格。注 释可位于句首或句尾,位于句首时,以 * 或 ; 开 始,位于句尾时,以分号 ; 开始。注释可单独一行或 数行;注释是任选项。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.2 汇编语言中的伪指令 汇编伪指令为程序提供数据并控制汇编过程。伪指令格式与 通常的操作指令一样,并可加在汇编程序的任何地方,但它 们并不产生机器指令。 汇编伪指令主要完成以下工作: (1) 将数据和代码汇编进指定的段。 (2) 控制产生清单文件。 (3) 初始化存储器。 (4) 汇编条件代码块。 (5) 声明全局变量。 (6) 在存储器中为未初始化的变量保存空间。 (7) 为汇编器指定库。11
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计表5-1 常用的汇编伪指令汇编伪 指令 .title 作 用 说明及示例 紧跟其后的是用双引号括起的源 程序名 .title "example.asm" 结束汇编命令,汇编程序将忽略 此后的任何源语句,所以它应是 程序的最后语句 放在汇编语言源程序的最后 .text段是源程序正文。经汇编后,紧随.text 紧跟其后的是汇编语言程序正文 后的是可执行程序代码 紧跟其后的是已初始化数据,通 常含有数据表或预先初始化的数 值 有两种数据形式:.int和.word .int用来设置一个或多个16位无符 table: .word 1,2,3,4 号整型数常数 .word 8,6,4,2 表示在程序存储器标号为table开始的8个单 .word 用来设置一 个或 多个16 位 元中存放初始化数据1、2、3、4、8、6、4 带符号整型数常数 和2 .bss x , 4 .bss为未初始化变量保留的存储 表示在数据存储器中空出4个存储单元存放 空间 变量x1,x2,x3和x4 .sect " vectors " 定义向量表,紧
随其后的是复位向量和中断 建立包含代码和数据的自定义段 向量,名为vectors STACK .usect "STACK",10h 为未初始化变量保留存储空间的 在数据存储器中留出16个单元作为堆栈区, 12 自定义段 名为STACK
.end .text
.data .int
.word
.bss
.sect
.usect
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.2 汇编语言中的伪指令1、段定义伪指令 段定义伪指令指定汇编程序的段,它们包括: .bss 为未初始化的段预留空间。 .data 指定后续代码为数据段,通常包含初始化的数据。 .sect 自命名的初始化段,可包含可执行代码和数据。 .text 指定后续的代码为文本段,通常包含可执行代码。 .usect 为未初始化的命名段预留空间。 [例5-4]段定义伪指令示例 .data ;表示从这里开始数据段,后续数据顺序存放在数 据段中 coeff .word 044h,055h,066h ;3个word型数据连续放13 入.data段
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计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放入当前段的连续 14 字中
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.2 汇编语言中的伪指令3、段程序计数器(SPC)定位伪指令 有一些伪指令可以指定当前段在内存中地址对齐: .align 用于指定起始位臵对准在1~128字的边界。操作数 为1表示对准到字边界;操作数为2表示对准到长字/偶字 边界;操作数为128表示对准到页边界。 .even 用于指定起始位臵对准到下一个字的边界。它等效 于.align伪指令的操作数为1;使用.even操作数为2时,表 示对齐到下一个长字的边界。 任何在当前字中没有使用的位都填充0。15
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.2 汇编语言中的伪指令4、输出列表格式伪指令 输出列表格式伪指令可以指定格式化的清单列表文件输出: .length 用于控制清单列表文件页面的长度。 .page 用于控制清单列表文件中加入新页。 .tab 用于定义制表键(tab)的长度。 .title 用于控制在清单列表文件每页顶部打印标题。 .list和.nolist用于控制打开或关闭清单列表文件的输出。
第5章TMS320C54x的软件开发与设计
第5
章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.2 汇编语言中的伪指令5、文件引用伪指令 文件引用伪指令可以引用其它文件中的信息: .copy和.include 指明从其它文件读取源代码程序语句。 .def 指明在当前文件中定义但可被其它文件中引用的符号。 .global 指明符号为全局符号。 .ref 指明在当前文件中引用,但在其它文件中定义的符号。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.2 汇编语言中的伪指令6、条件汇编伪指令 条件汇编伪指令用于指示对某些代码按照表达式的计算结 果,决定是否对其汇编。有两组伪指令用于条件汇编: .if .elseif .else .endif 这些语句用于通知汇编器按照表 达式的计算结果,对某段代码块进行条件汇编。 .loop .break .endloop 这些语句用于通知汇编器按照 表达式的计算结果重复汇编一个代码块。要求表达式和伪 指令必须完全在同一行指定。
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.3 汇编语言中的常数及字符串 汇编器可支持7种类型的常数(常量): 二进制整数 八进制整数 十进制整数 十六进制整数 浮点数常量 字符常量 字符串
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计5.2.3 汇编语言中的常数及字符串1、二进制整数 二进制整型常量最多由16位二进制数字(0或1)组成,后缀 为B(或b)。如果数字少于16位,汇编器将其右边对齐,并 在前面补零。 [例5-6]二进制整数示例 10001000B 136(十进制)或88 (十六进制) 0111100b 60 (十进制)或3C(十六进制) 10b 2 (十进制)或2 (十六进制) 10001111B 143(十进制)或8F(十六进制)20
第5章TMS320C54x的软件开发与设计
第5章 TMS320C54x的软件开发与设计
5.2 TMS320C54x汇编语言程序设计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 (十六进制)21