TMS320C55x系列DSP指令系统、开发工具与编程指南

TMS320C55x系列DSP指令系统、开发工具与编程指南"

作者:李海森
ISBN:9787302158394
定价:¥59
字数:千字
页数:
出版时间:2007.12.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

TMS320C55x DSP是美国德州仪器(TI)公司C5000 16位定点DSP系列里最新的一代产品。其拥有的资源与性能较目前使用最为广泛的C54x系列DSP有成数倍的提升,并进一步弘扬了低功耗、低成本、高速度的特征,是当前数字信号处理领域和各种便携式应用场合最具潜力的可选高性能DSP之一。本书以C55x DSP为对象,介绍其指令系统、开发工具和编程指南。全书共分为5章,其中第1章介绍C55x DSP的基本结构和编程的基本过程;第2章详细介绍C55x的汇编语言指令系统;第3章介绍C55x的汇编语言开发工具; 第4章则对C55x的软件开发工具及C/C++语言进行详细阐述;第5章详细介绍C55x的C/C++代码和汇编语言代码的优化。全书涉及几乎所有在C5000的硬件平台上开发一个完整的软件程序所必需的知识,由于其中的实例全部取自C55x,因此对开发C55x的本科生、研究生和工程师具有更加重要的参考价值。

本书内容实践性强,适合于从事TI DSP研究、开发的电气工程和电子信息类学科与专业的高年级本科生或研究生作为参考书,也可供业界的工程师和其他相关专业技术人员参考。

前言

经过全体编译老师和编译委员会近一年的努力,《TI TMS320系列DSP中文手册》终于陆续和广大读者见面了。

数字信号处理器(Digital Signal Processor,DSP)是对信号和图像实现实时处理的一类高性能的CPU。所谓“实时(RealTime)实现”,是指一个实际的系统能在人们听觉、视觉或按任务要求所允许的时间范围内实现对输入信号进行处理并将其输出。目前,DSP已广泛应用于通信、家电、航空航天、工业测量、控制、生物医学工程及军事等许许多多需要实时实现的领域。

美国德州仪器(Texas Instruments,TI)公司是全球DSP研发和生产的领先者。自1982年推出第一块DSP芯片以来,到20世纪90年代中期,TI先后推出了C10、C20、C30、C40、C50及C80等6代TMS320系列的DSP产品。紧接着又推出了C2000系列、C5000系列和C6000系列三大主流产品,并推出了将DSP和ARM合为一体的OMAP系列。这些产品无论是在国外还是在国内都获得了广泛的应用。例如,“TI中国大学计划”在2003年举办的“TI DSP设计比赛”中,国内高校就有约90个队参加,足见DSP在我国已经得到普遍的重视。

凡是从事过含有CPU的系统(单片机或DSP)的设计人员都知道,为了顺利地实现设计任务,一本或几本好的手册是必不可少的,其中包括该CPU的结构手册、指令和汇编语言手册以及开发手册等。

由于TI的DSP发展迅速,产品更新快,因此其手册自然也非常多。由于手册需要更新和补充,因此,彼此之间难免会出现重复和种类繁多的现象。使用过TI DSP文档的用户都感觉到,其手册在使用上是有相当难度的。另外,TI DSP文档都是用英文写成,这也给部分工程技术人员带来一定的困难。

鉴于此,TI中国主管提出委托国内的高校老师对其文档进行编译,并授权清华大学出版社正式出版。在“TI中国大学计划”的建议下,2003年6月通过推荐和报名方式成立了编译委员会。

通过认真讨论,编译委员会首先确定了文档编译的原则,然后确定了编译的书目,最后确定了每一本书的编译者。

关于编译的原则,我们提出了如下两点: 

(1) 本文档的定位为“手册”。也就是说,每一位文档的编译者应全面了解和掌握所编译书目的所有英文文档,并了解各个文档之间的关系,在保证文档完整的基础上,选择最新的文档,并去除其中的重复内容和已经淘汰的内容。

(2) 要尽可能地按照TI英文文档的“本意”来形成中文,以保证手册的准确性。允许作者按自己的经验有所发挥,以便于难点的理解。

这次编译的书目包含三大部分,一是各个系列的共用部分,如CCS、DSP/BIOS、算法标准、C语言编译器及开发工具等各个手册; 二是按C2000、C5000和C6000三大系列分别编译它们的CPU结构及指令手册; 三是分别编译它们的应用。

编译计划在“TI中国大学计划”的相关会议上提出后,得到了国内高校许多老师的热情支持,很快便将要编译的书目一一落实。这些老师都有着从事DSP教学和科研的丰富经验,正是由于他们的大力支持,才使这一庞大的工作计划能够付诸实施。在此,谨向参加本系列手册编译工作的全体老师表示衷心的感谢!

“TI中国大学计划”在本系列手册的编译过程中给予了多方面的大力支持,在此向他们表示衷心的感谢!

由于本系列手册的编译工作量大、时间紧,因此,尽管编译的老师和编译委员会都尽了最大的努力,但也难免有不妥,甚至错误之处,编译委员会全体老师恳切地希望广大读者给予批评指正。清华大学生物医学工程系〖〗胡广书教授〖〗2004年3月

目录

第1章C55x编程基本指南

1.1引言

1.1.1TMS320C55x结构

1.1.2获得最佳性能的代码开发流程

1.2基本教程

1.2.1引言

1.2.2编写汇编代码

1.2.3理解链接过程

1.2.4建立程序

1.2.5测试代码

1.2.6代码计时

1.3定点算术运算

1.3.1定点运算指南

1.3.2扩展精度的加法和乘法

1.3.3扩展精度的乘法

1.3.4除法

1.3.5处理溢出的方法

1.4TI C55x DSPLIB

1.4.1特征和便利之处

1.4.2DSPLIB数据类型

1.4.3DSPLIB的参数

1.4.4在C中调用DSPLIB函数

1.4.5在汇编语言源代码中调用DSPLIB函数

1.4.6在哪里查看示例程序

1.4.7DSPLIB函数第2章C55x汇编语言指令系统

2.1术语、符号与缩写

2.1.1指令集术语、符号和缩写

2.1.2指令集条件字段

2.1.3状态位的影响

2.1.4指令集注释和规则

2.1.5不可重复指令

2.2并行特征和规则

2.2.1并行特征

2.2.2并行基础

2.2.3资源冲突

2.2.4软双重并行

2.2.5条件执行指令

2.2.6其他例外

2.3寻址方式

2.3.1寻址方式概述

2.3.2绝对寻址方式

2.3.3直接寻址方式

2.3.4间接寻址方式

2.3.5循环寻址

2.4指令集说明第3章C55x汇编语言开发工具

3.1引言

3.1.1软件开发工具描述

3.1.2工具简介

3.2公用目标文件格式(COFF)简介

3.2.1段

3.2.2汇编器如何处理段

3.2.3链接器如何处理段

3.2.4重定位

3.2.5运行时间重定位

3.2.6装载程序

3.2.7COFF文件中的符号

3.3汇编器描述

3.3.1汇编器概述

3.3.2汇编器的开发流程

3.3.3调用汇编器

3.3.4C55x汇编器的特点

3.3.5为汇编器输入的预备文件和命名

3.3.6源语句格式

3.3.7常数

3.3.8字符串

3.3.9符号

3.3.10表达式

3.3.11内建函数

3.3.12源程序列表

3.3.13交叉引用列表

3.4汇编伪指令

3.4.1伪指令概述

3.4.2定义段的伪指令

3.4.3初始化常数的伪指令

3.4.4对齐SPC的伪指令

3.4.5格式化输出列表的伪指令

3.4.6引用其他文件的伪指令

3.4.7条件汇编伪指令

3.4.8汇编时间符号伪指令

3.4.9其他伪指令

3.5宏语言

3.5.1使用宏

3.5.2宏定义

3.5.3宏参数/替代符

3.5.4宏库

3.5.5在宏中使用条件汇编

3.5.6在宏中使用标号

3.5.7在宏中产生消息

3.5.8格式化输出列表

3.5.9使用递归和嵌套宏

3.5.10宏伪指令总结

3.6链接器

3.6.1链接器概述

3.6.2链接器开发流程

3.6.3调用链接器

3.6.4链接选项

3.6.5字节/字寻址

3.6.6链接命令文件

3.6.7目标库

3.6.8MEMORY伪指令

3.6.9SECTIONS伪指令

3.6.10指定段的装载时间(loadtime)和运行时间(runtime)地址

3.6.11使用UNION和GROUP语句

3.6.12重叠页

3.6.13默认分配算法

3.6.14特殊段类型(DSECT、COPY和NOLOAD)

3.6.15链接时为符号赋值

3.6.16创建和填充空穴

3.6.17部分(追加)链接

3.6.18C/C++代码的链接

3.6.19链接举例

3.7归档器描述

3.7.1归档器概述

3.7.2归档器开发流程

3.7.3调用归档器

3.7.4归档器的例子

3.8绝对列表器描述

3.8.1产生绝对列表

3.8.2调用绝对列表器

3.8.3绝对列表举例

3.9交叉引用列表器

3.9.1产生一个交叉引用列表

3.9.2调用交叉引用列表器

3.9.3交叉引用列表举例

3.10反汇编器描述

3.10.1调用反汇编器

3.10.2反汇编举例

3.11命名工具描述

3.12十六进制转换工具

3.12.1十六进制转换工具开发流程

3.12.2调用十六进制转换工具

3.12.3命令文件

3.12.4理解存储器宽度

3.12.5ROMS伪指令

3.12.6SECTIONS伪指令

3.12.7输出文件名

3.12.8映像模式和fill选项

3.12.9为片内引导装载器建表

3.12.10控制ROM器件地址

3.12.11目标格式的描述

3.12.12十六进制转换工具错误消息第4章C55x C/C++语言与编译工具

4.1引言

4.1.1软件开发工具概述

4.1.2C/C++编译器概述

4.1.3编译器和CCS

4.2使用C/C++编译器

4.2.1关于编译器

4.2.2调用C/C++编译器

4.2.3通过选项改变编译器的行为

4.2.4使用环境变量

4.2.5控制预处理器

4.2.6理解诊断信息

4.2.7生成交叉引用列表信息(px选项)

4.2.8生成一个原始列表文件(pl选项)

4.2.9使用内嵌函数扩展

4.2.10使用内部列表

4.3优化用户的代码

4.3.1使用优化器

4.3.2执行文件级优化(O3选项)

4.3.3执行程序级优化(pm和O3选项)

4.3.4小心使用优化后的代码中的asm语句

4.3.5在优化后的代码中访问混叠变量

4.3.6自动内嵌扩展(oi选项)

4.3.7通过优化器使用内部列表

4.3.8调试优化后的代码

4.3.9将执行何种优化

4.4链接C/C++代码

4.4.1调用链接器(z选项)

4.4.2禁止链接器(c选项)

4.4.3链接选项

4.4.4控制链接处理

4.5TMS320C55x C/C++语言

4.5.1TMS320C55x C的特性

4.5.2TMS320C55x C++的特征

4.5.3数据类型

4.5.4关键字

4.5.5寄存器变量和参数

4.5.6asm语句

4.5.7pragma伪指令

4.5.8产生链接名

4.5.9初始化静态和全局变量

4.5.10改变ISO C语言模式(pk、pr或ps选项)

4.5.11编译器限制4.6运行时间环境

4.6.1存储器

4.6.2字符串常量

4.6.3寄存器规约

4.6.4函数结构和调用规约

4.6.5连接C/C++语言和汇编语言

4.6.6中断处理

4.6.7在P2保留模式下的数据扩展寻址

4.6.8扩展存储器中的.const段

4.6.9系统初始化

4.7运行时间支持函数

4.7.1库

4.7.2C的I/O函数

4.7.3头文件

4.7.4运行时间支持函数和宏的总结

4.7.5运行时间支持函数和宏的描述

4.8建库工具

4.8.1调用建库工具

4.8.2建库工具选项

4.8.3选项总结

4.9C++名称恢复器

4.9.1调用C++名称恢复器

4.9.2C++名称恢复器选项

4.9.3C++名称恢复器使用举例第5章C代码及汇编代码优化

5.1C代码优化

5.1.1编写C55x DSP的C/C++代码介绍

5.1.2编译C/C++代码

5.1.3剖析代码

5.1.4精炼C/C++代码

5.1.5内存管理问题

5.2汇编代码优化

5.2.1有效使用双MAC硬件

5.2.2使用并行执行特性

5.2.3实现高效循环

5.2.4最小化流水线和IBQ延迟

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个