TMS320C54x软件开发过程DSP原理与开发实例

上传人:宝路 文档编号:47790883 上传时间:2018-07-05 格式:PPT 页数:89 大小:2.78MB
返回 下载 相关 举报
TMS320C54x软件开发过程DSP原理与开发实例_第1页
第1页 / 共89页
TMS320C54x软件开发过程DSP原理与开发实例_第2页
第2页 / 共89页
TMS320C54x软件开发过程DSP原理与开发实例_第3页
第3页 / 共89页
TMS320C54x软件开发过程DSP原理与开发实例_第4页
第4页 / 共89页
TMS320C54x软件开发过程DSP原理与开发实例_第5页
第5页 / 共89页
点击查看更多>>
资源描述

《TMS320C54x软件开发过程DSP原理与开发实例》由会员分享,可在线阅读,更多相关《TMS320C54x软件开发过程DSP原理与开发实例(89页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 TMS320C54x TMS320C54x 软件开发过程软件开发过程3.1 TMS320C54x应用软件开发过程 3.2 汇编语言程序的编辑、汇编和链接过程 3.3 汇编伪指令 3.4 汇编宏指令 3.5 COFF的一般概念 3.6 C语言程序设计概述 3.7 混合编程 3.8 小结【重点难点重点难点】 段的定义和用法段的定义和用法 链接命令文件链接命令文件 C C 语言编程语言编程 混合编程混合编程TMS320C54x应用软件开发过程 3.1 TMS320C54x3.1 TMS320C54x应用软件开发过程应用软件开发过程软软 件件 开开 发发 流流 程程 图图将C语言源程序自

2、动地编 译为C54x 的汇编语言源 程序。即生成.asm文件。 将汇编语言源文件汇编成基于 公用目标文件格式的机器语言 目标文件。即生成.obj文件。 将汇编生成的、可重新 定位的COFF目标模块 组合成一个可执行的 COFF目标模块。 将一组文件(源文件或目标文 件)集中为一个文档文件库。 将包含助记符指令的汇编语言源 文件转换成包含代数指令的汇编 语言源文件。 建立用户自己用的、C语言编写 的支持运行的库函数。 建立用户的C语言运行支持 库。标准运行支持库在 rts.src 里提供源代码,在 rts.lib里提供目标代码。 将COFF目标文件转换TI、 Intel、Motorola或Tek

3、tronix公 司的目标文件格式。 生成abs输出文件。对 abs文件汇编产生包含绝对 地址(而不是相对地址) 的清单。 生成一个交叉引用清单,列出 所链接的源文件中的符号及其 定义和引用情况。 开发目的:产生一个可由C54x目标系统执行的模块。 调试工具: 软件仿真器(Simulator) 可扩展的开发系统硬件仿真器XDS510(Emulator) 评价模块(EVM) DSK开发套件 需要开发人员编写的文件: 源程序(.c或.asm) 链接命令文件(.cmd) 中断向量表TMS320C54x应用软件开发过程3.2 3.2 汇编语言程序的汇编语言程序的编辑、汇编和链接过程编辑、汇编和链接过程汇

4、编语言程序的编辑、汇编和链接过程汇编器汇编器调试程序调试程序链接器链接器文本编辑器文本编辑器.asm 源文件.obj 目标文件.out 输出文件. cmd 链接命 令文件. lst 列表文件. map 存储器 映像文件十六进制十六进制 转换程序转换程序 HEX500HEX500- o- m- l汇编伪指令 3.3 3.3 汇编伪指令汇编伪指令8种伪指令:1)段定义伪指令;2)常数初始化伪指令;3)段程序计数器定位伪指令;4)输出列表格式伪指令;5)引用其他文件的伪指令;6)条件汇编伪指令;7)汇编时符号定义伪指令;8)其他汇编伪指令。1)段定义伪指令 .bss symbol, size in

5、words ,blocking flag,alignment flag 为未初始化变量在.bss段内保留空间,可在RAM中分配变量。 必需参数,定义了指向伪指令所保留的第一个单元必需参数,定义了指向伪指令所保留的第一个单元 地址的符号,符号名对应于所要保留空间的变量。地址的符号,符号名对应于所要保留空间的变量。必需参数,应该是绝对表达式。汇编器在必需参数,应该是绝对表达式。汇编器在 .bss.bss段内分段内分 配配sizesize个字。个字。 可选参数。如果该参数大于可选参数。如果该参数大于0 0,汇编器分配连续的,汇编器分配连续的sizesize 个字。也就是说除非个字。也就是说除非siz

6、esize大于一页,否则被分配的空间大于一页,否则被分配的空间 不会跨越页边界。不会跨越页边界。 可选参数。如果该参数大于可选参数。如果该参数大于0 0,段对准到长字边界,段对准到长字边界 symbol .usect “段名”, 字数 ,blocking flag,alignment flag在一个未初始化的命名段中保留空间。必需参数,定义了指向伪指令所保留的第一个单元必需参数,定义了指向伪指令所保留的第一个单元 地址的符号,符号名对应于所要保留空间的变量。地址的符号,符号名对应于所要保留空间的变量。必需参数,应该是绝对表达式。定义了保留的字数。必需参数,应该是绝对表达式。定义了保留的字数。

7、可选参数。如果该参数大于可选参数。如果该参数大于0 0,汇编器分配连续的,汇编器分配连续的sizesize 个字。也就是说除非个字。也就是说除非sizesize大于一页,否则被分配的空间大于一页,否则被分配的空间 不会跨越页边界。不会跨越页边界。 可选参数。如果该参数大于可选参数。如果该参数大于0 0,段对准到长字边界,段对准到长字边界命名了未初始化段。注意必须包含在双引号内。命名了未初始化段。注意必须包含在双引号内。 .data 包含初始化数据。使汇编器开始把源代码中的初始化 数据汇编到.data段内,且.data变为当前段。 .sect “section name”:定义包含代码或数据的已

8、初始化命名 段,将紧随其后的代码或数据存入该段。 .text : 包含可执行的代码。如果还没有代码被汇编到.text段中,那么 段程序计数器被设置为0,否则段程序计数器恢复到它原先在 段内的值。.text是默认段,除非规定了另外的伪指令,否则在 汇编开始时,汇编器将把代码汇编到.text段。 段名,注意段名,注意section namesection name必须包含在双引内。必须包含在双引内。 汇编伪指令2)常数初始化伪指令 .bes size in bits.space size in bits 在当前段中保留size个数的位,汇编器对这些保留的位填0, 可用位数乘以16来实现保留字。 注

9、意:注意:.bes .bes 指向包含保留位的最后一个字,指向包含保留位的最后一个字,.space.space指向包含保留位的第一个字。指向包含保留位的第一个字。 .byte value1 ,,valuen:在当前段内初始化一个或多个连续的8位字。.field value ,size in bits:将单个值放进当前字的指定位域。此指令可将数值放入当前字中规定的位数,并从最高 有效位开始。在字被填满前,汇编器不增加段程序计数器 (SPC)的值。汇编伪指令 .float value1 ,valuen:计算以IEEE格式表示的单精度(32位)浮点数,并将它存储在当前段的两个连续的字中,先存最高有效

10、位。 .int value1 ,valuen.word value1 ,valuen 两指令等价,将一个或多个值放在当前段的连续的16位域中。 .long value1 ,valuen:将32位的值存储在当前段的两个连续字中,先存最高有效位。 .string “string1”,“stringn”.pstring “string1”,“stringn”将一个或多个字符串中的8位字符放进当前段。二者的区别在于:二者的区别在于:.string.string将将8 8位字符放入当前段的连续字中,位字符放入当前段的连续字中,.pstring.pstring将两个将两个8 8位的字符打包成一个字。位的字

11、符打包成一个字。汇编伪指令3)段程序计数器定位伪指令 .alignsize根据size 的值将段程序计数器(SPC)对准在1128字的边界,这保证了在伪指令后面的代码开始在某个字或页面的边界上。 (1)操作数为1,对准SPC到字的边界;(2)操作数为2,对准SPC到长字(偶数地址)的边界;(3)操作数为128,对准SPC到页面的边界;(4)没有操作数时,默认为页面边界。汇编伪指令4)输出列表格式伪指令 .drnolist 在列表文件中禁止打印下述伪指令,.drlist 允许下述伪指令在列表文件中出现。 .asg .fcnolist .ssnolist .break .mlist .var .e

12、msg .wmsg .mmsg .eval .mnolist .fclist .sslist .fclist 允许列出条件为假的代码块,缺省方式。.fcnolist 禁止列出条件为假的代码块。 .length 页面长度 控制文件列表的页面长度。 .nolist 在列表文件中不打印所选择的源语句。 .list 在列表文件中打印所选择的源语句。汇编伪指令 .mnolist 禁止宏扩展和循环块在列表文件中出现 .mlist 允许宏扩展和循环块在列表文件中出现,这是汇编的默认行为。 .page 在列表文件中产生新的一页。 .ssnolist 禁止替代符号扩展的列出。.sslist 允许替代符号扩展的列

13、出。 .tab size 定义制表符的大小。 .title “string” 提供了汇编器在每页顶部打印的标题。 .width page width 控制列表文件页面的宽度。汇编伪指令5)引用其他文件和符号伪指令 .include “filename” 告诉汇编器开始从其他文件读取源代码语句,源语句不出现在列表文件中。其内容可以是程序、数据、符号定义等。 .copy “filename” 告诉汇编器开始从其他文件读取源代码语句,源语句出现在列表文件中。其内容可以是程序、数据、符号定义等。 .def 符号名1,符号名n在当前文件中定义一个或多个符号,该符号可以被其他文件使用。 .ref 符号名1

14、,符号名n在其他文件中定义一个或多个符号,该符号可以在本文件中使用。汇编伪指令6)条件汇编伪指令 .if.elseif/else.endif 告诉汇编器按照表达式值的条件汇编一段代码。 .loop/.break/.endloop 告诉汇编器按照表达式的值循环汇编一段代码。汇编伪指令 .global符号名1,符号名n定义全局符号,在连接时可为其他文件使用。其作用相当于.def、.ref效果之和。 .mlib 向汇编器提供一个包含了宏定义的文档库的名称。 当汇编器见到一个在当前库中没有定义的宏,就在.mlib确认的宏库中查找。7)汇编时符号定义伪指令 .asg “ character string

15、 ” substitution symbol把字符串赋给替代符号。 .equ/.set把常数赋给符号,存放在符号表中,且不能够被清除。如 IMR .set 0000H。 .eval 计算一个表达式的值并把结果传送到一个与替代符号等同的字符串中。 .label 定义一个特殊的符号,表示段内装载时的地址。 .struct/.endstruct 建立一个类似C语言结构的定义。.tag 给类似于C的结构特性分配一个标号。汇编伪指令8)其他汇编伪指令 .algebraic 告诉汇编器输入文件是代数指令源代码。 .end 结束汇编。 .mmregs 定义存储器映射寄存器的替代符号,这样就可以用AR0、PMST等助记符替换实际的存储器地址。 .version 确定所用指令系统的DSP名。 .emsg 把用户定义的错误信息发送到标准输出设备中,并增加错误计数,阻止汇编器产生目标文件。 .mmsg 把汇编信息发送到标准输出设备中,不设置计

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号