内容简介
本书以美国TI公司TMS320C6000系列DSP为平台,介绍CPU硬件结构、指令系统(包括伪指令)、C/C++程序开发基础、C/C++程序开发、线性汇编代码优化、汇编语言工具、软件集成开发、程序调试与实例分析、外部存储器接口、中断系统、直接存储器访问(DMA)、增强型直接存储器访问(EDMA)、多通道缓冲串口(McBSP)、主机并行接口(HPI)、扩展总线、外围设备互联(PCI)端口、定时器、通用输入/输出(I/O)等,是目前国内比较系统地介绍TMS320C6000系列DSP的学习、开发应用指南。
目录
目 录
第1章 TMS320C6000系列DSP概述 1
1.1 DSP产生、特点及其应用 1
1.1.1 DSP的产生 1
1.1.2 DSP的特点 2
1.1.3 DSP的应用 3
1.2 TMS320C6000系列DSP主要特点及其应用 4
第2章 TMS320C6000系列CPU、指令系统、伪指令 6
2.1 TMS320C6000系列CPU的结构 6
2.2 TMS320C6000系列CPU的数据通路和控制 8
2.2.1 通用寄存器组 10
2.2.2 数据通路的功能单元 12
2.2.3 寄存器组交叉通路 13
2.2.4 存储器存取通路 14
2.2.5 数据地址通路 14
2.2.6 TMS320C6000控制寄存器组 14
2.2.7 TMS320C67x控制寄存器扩展 18
2.2.8 TMS320C64x控制寄存器扩展 22
2.3 TMS320C6000系列DSP的存储器 24
2.3.1 程序存储器 24
2.3.2 内部数据存储器 30
2.3.3 二级内部存储器 33
2.4 TMS320C6000系列DSP指令系统 38
2.4.1 TMS320C6000系列DSP指令集 39
2.4.2 流水线 51
2.4.3 汇编伪指令 64
第3章 程序开发基础 81
3.1 软件开发工具概述 81
3.2 C/C++编译器概述 83
3.2.1 ISO标准 83
3.2.2 输出文件 83
3.2.3 编译器接口 84
3.2.4 编译器操作 84
3.2.5 编译器工具 84
3.3 使用C/C++编译器 85
3.3.1 编译器 85
3.3.2 调用C/C++编译器 85
3.3.3 设置选项改变编译器的行为 87
3.3.4 常用选项 91
3.3.5 指定文件名 93
3.3.6 设置目录 93
3.3.7 设置默认的编译选项 94
3.4 优化代码 95
3.4.1 执行优化 95
3.4.2 优化软件流水 97
3.4.3 冗余循环 100
3.4.4 调试和剖析优化代码 101
3.4.5 基于价值的寄存器分配 101
3.4.6 别名消除 102
3.4.7 优化跳转和简化控制流 102
3.4.8 数据流优化 102
3.4.9 简化表达式 102
3.4.10 内联函数扩展 103
3.4.11 寄存器跟踪与分配 104
3.5 使用汇编优化器 105
3.5.1 增强性能的代码开发流程 105
3.5.2 线性汇编知识 106
第4章 C/C++程序开发 112
4.1 TMS320C6000系列C/C++语言实现 112
4.1.1 TMS320C6000系列C语言特点 112
4.1.2 TMS320C6000系列C++语言特点 114
4.1.3 TMS320C6000系列C/C++语言关键字 114
4.1.4 pragma伪指令 119
4.1.5 初始化静态变量和全局变量 125
4.2 运行时环境 126
4.2.1 存储器模型 126
4.2.2 对象的表示 129
4.2.3 中断处理 134
4.2.4 系统初始化 135
4.3 运行时支持函数 139
4.3.1 编译器包括的库 139
4.3.2 C语言的I/O函数 140
4.3.3 运行时支持库函数和宏的描述 148
4.4 TMS320C6000系列C/C++代码优化 151
4.4.1 C/C++语言代码的编写 151
4.4.2 编译C/C++代码 152
4.4.3 优化C代码 153
4.5 C/C++语言和汇编的混合编程 157
4.5.1 在C/C++代码中调用汇编语言模块 157
4.5.2 用内嵌函数访问汇编语言 158
4.5.3 在C/C++语言中嵌入汇编语言 159
4.5.4 在C/C++语言中访问汇编语言变量 159
第5章 线性汇编优化代码 165
5.1 汇编优化器选项与伪指令 165
5.2 编写并行代码 169
5.2.1 点积的C代码 169
5.2.2 C代码转换为线性汇编 170
5.2.3 画相关性图 171
5.2.4 非并行汇编代码与并行汇编代码 172
5.2.5 使用字访问短型数据与使用双字访问 176
5.3 软件流水 183
5.3.1 模迭代间隔编排表 185
5.3.2 使用汇编优化器产生优化循环 189
5.3.3 汇编 190
5.4 多周期循环的模迭代 204
5.4.1 转换C代码为线性汇编 204
5.4.2 确定迭代间隔 20