第5章TMS320c54x软件开发 51软件开发过程及开发工具 5,2公共目标文件格式 53常用汇编伪指令 54链接器命令文件的编写与使用 5.5汇编语言程序编写方法 56TMS320c54Xc语言编程 57用c语言和汇编语言混合编程
第5章 TMS320C54x软件开发 ◼ 5.1 软件开发过程及开发工具 ◼ 5.2 公共目标文件格式 ◼ 5.3 常用汇编伪指令 ◼ 5.4 链接器命令文件的编写与使用 ◼ 5.5 汇编语言程序编写方法 ◼ 5.6 TMS320C54x C语言编程 ◼ 5.7 用C语言和汇编语言混合编程
51软件开发过程及开发工具 1.建立源程序 2.Cc编译器( C Compiler) 3.汇编器( Assembler) 4.连接器( Linker) 5.调试工具 6.十六进制转换公用程序( Hex Conversion Utility) 返回首页
5.1 软件开发过程及开发工具 1.建立源程序 2.C编译器(C Compiler) 3.汇编器(Assembler) 4.连接器(Linker) 5.调试工具 6.十六进制转换公用程序(Hex Conversion Utility) 返回首页
source I: Macro source C compiler Archiver Assembler source assistant Macro 1 Assembler Source Assembles Archiver bject . Runtime- support library nles tools Hex conversion utlity EPROM programmer Absolute lister lister C54x 图5-1TMS320C54xDSP软件开发流程
图5-1 TMS320C54x DSP软件开发流程
表5-1TMS320C54XV3.50版代码 生成工具程序 程序名 作用 程序名 作用 CLs00ee编译汇编链接程序,将C程序转‖ARs00exe文档管理程序,对目标文件库进行 换成out文件 增加、删除、提取、替代等操作 AC5008c文法分析程序,对c文件进行AM500 exeCOFF汇编应用程序,将汇编语言 文法分析,生成中间文件 程序转换为COFF目标文件obj OPT508忧化程序,对文件进行忧化,HEx500e代码格式转换程序,将ot文件转 生成ort文件 换为指定格式的文件 CG500exe代码生成程序,将或opt文件LN500ee链接程序,将目标文件链接成ot 生成asm文件 文件 CLIST exe交叉列表程序,对cG00生成MK0e库生成应用程序 的asm文件进行交叉列表,生 成cl文件 回本节
表5-1 TMS320C54xV3.50版代码 生成工具程序 返回本节
52公共目标文件格式 521cOFF文件的基本单元—段 522汇编器对段的处理 5,23链接器对段的处理 524重新定位 525程序装入 5,26COFF文件中的符号 返回首页
5.2 公共目标文件格式 ◼ 5.2.1 COFF文件的基本单元——段 ◼ 5.2.2 汇编器对段的处理 ◼ 5.2.3 链接器对段的处理 ◼ 5.2.4 重新定位 ◼ 5.2.5 程序装入 ◼ 5.2.6 COFF文件中的符号 返回首页
521cOFF文件的基本单元段 段( sections)是cOFF文件中最重要的概念。 个段就是最终在存储器映象中占据连续空间的 个数据或代码块。目标文件中的每一个段都是 相互独立的。一般地,COFF目标文件包含3个缺 省的段:text段、data段、bss段 段可以分为两大类,即已初始化段和未初始化段。 如图5-2所示为目标文件中的段与目标系统中存储 器的关系
5.2.1 COFF文件的基本单元——段 ◼ 段(sections)是COFF文件中最重要的概念。 一个段就是最终在存储器映象中占据连续空间的 一个数据或代码块。目标文件中的每一个段都是 相互独立的。一般地,COFF目标文件包含3个缺 省的段:text段、data段、bss段。 ◼ 段可以分为两大类,即已初始化段和未初始化段。 如图5-2所示为目标文件中的段与目标系统中存储 器的关系
Object File Target Memory bss RAM data EEPROM ROM 图5-2目标文件中的段与目标存储器的关系 回本
图5-2 目标文件中的段与目标存储器的关系 返回本节
522汇编器对段的处理 1.未初始化段 未初始化段主要用来在存储器中保留空间,通常将它们定 位到RAM中。这些段在目标文件中没有实际内容,只是 保留空间而已。程序可以在运行时利用这些空间建立和存 储变量。未初始化段是通过使用bss和 sect汇编伪指令 建立的,两条伪指令的句法分别为: bss 符号,字数 符号 sect“段名”,字数
5.2.2 汇编器对段的处理 1.未初始化段 ◼ 未初始化段主要用来在存储器中保留空间,通常将它们定 位到RAM中。这些段在目标文件中没有实际内容,只是 保留空间而已。程序可以在运行时利用这些空间建立和存 储变量。未初始化段是通过使用.bss和.usect汇编伪指令 建立的,两条伪指令的句法分别为: .bss 符号,字数 符号 .usect“段名” ,字数
2.已初始化段 已初始化段包含可执行代码或已初始化数据。这 些段的内容存储在目标文件中,加载程序时再放 到TMs320c54X存储器中。三个用于建立初始化 段的伪指令句法分别为: text[段起点] data[段起点] sect“段名”[,段起点]
2.已初始化段 ◼ 已初始化段包含可执行代码或已初始化数据。这 些段的内容存储在目标文件中,加载程序时再放 到TMS320C54X存储器中。三个用于建立初始化 段的伪指令句法分别为: .text [段起点] .data [段起点] .sect “段名”[,段起点]
3.命名段 命名段就是程序员自己定义的段,它与缺省 的text、data和bss段一样使用,但与缺省段分 开汇编。data段不同的存储器中,将未初始化的 变量汇编到与.bss段不同的存储器中。产生命 名段的伪指令为: 符号 sect“段名”,字数 sect“段名”[,段起点]
3.命名段 ◼ 命名段就是程序员自己定义的段,它与缺省 的.text、.data和.bss段一样使用,但与缺省段分 开汇编。 data段不同的存储器中,将未初始化的 变量汇编到与.bss段不同的存储器中。产生命 名段的伪指令为: 符号 .usect “段名” ,字数 .sect “段名”[,段起点]