《TMS 320C600系列DSP编程工具与指南》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:美国德州仪器公司著;田黎育,何佩琨,朱梦宇编译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2006
  • ISBN:7302136157
  • 页数:676 页
图书介绍:本书详细介绍C6000的软件开发过程、、编程工具使用和程序优化等内容。

第1篇 TMS320C6000优化编译器手册 1

第1章 介绍 1

1.1 软件开发工具概述 1

1.2 C/C++编译器概述 3

1.3 CCS(Code Composer Studio)和编译器 5

第2章 使用C/C++编译器 6

2.1 关于编译器 6

2.2 执行C/C++编译器 7

2.3 设置选项改变编译器的行为 7

2.4 设置默认的编译选项(C_OPTION和C_C6X_OPTION) 17

2.5 控制预处理器 18

2.6 理解诊断信息(diagnostic messages) 21

2.8 生成交叉引用(cross-reference)列表信息(-px选项) 24

2.7 其他信息 24

2.9 生成未加工的(raw)列表文件(-pl选项) 25

2.10 使用内联(inline)函数扩展 26

2.11 中断门限选项(Interrupt Flexibility Options)(-mi选项) 29

2.12 把C6400的代码和C6200/6700/日的C6400的目标代码一起连接 29

2.13 使用交叠工具(interlist feature) 30

第3章 优化代码 32

3.1 执行优化 32

3.2 优化软件流水(software pipelining) 33

3.3 冗余循环(Redundant Loops) 41

3.4 减小代码尺寸(-ms选项) 42

3.5 执行文件级(file-level)优化(-O3选项) 42

3.6 执行程序级(program-level)优化(-pm和-O3选项) 43

3.7 指明是否使用别名技术(aliasing techniques) 45

3.9 优化代码中谨慎使用asm语句 47

3.10 自动内联扩展(inline expasion)(-oi选项) 47

3.8 阻止相关浮点操作的重新排序(reodering of associative floating-point operation) 47

3.11 优化时使用交叠工具 48

3.12 调试和剖析(profiling)优化代码 49

3.13 正在执行哪种优化 50

第4章 使用汇编优化器 58

4.1 增强性能的代码开发流程 58

4.2 关于汇编优化器 59

4.3 写线性汇编需要知道什么 59

4.4 汇编优化器伪指令 64

4.5 使用汇编优化器避免存储体(bank)冲突 78

4.6 存储器别名模糊消除(memory alias disambiguation) 83

第5章 连接C/C++代码 87

5.1 通过编译器执行连接器(-z选项) 87

5.2 连接器选项 88

5.3 控制连接过程 90

第6章 使用独(stand-alone)软件仿真器 95

6.1 运行独立软件仿真器 95

6.2 独立软件仿真器的选项 96

6.3 通过加载器把参数传递给程序 97

6.4 使用独立软件仿真器的剖析功能 98

6.5 选择仿真的硅版本(silicon revision)(-rev选项) 98

6.6 独立软件仿真器的例子 99

第7章 TMS320C6000 C/C++语言实现 101

7.1 TMS320C6000 C语言的特征 101

7.2 TMS320C6000 C+4语言的特点 103

7.3 数据类型 104

7.4 关键字 104

7.5 寄存器变量和参数 109

7.6 asm语句 110

7.7 pragma伪指令 110

7.8 连接名(linkname)的生成 120

7.9 静态变量和全局变量的初始化 121

7.10 改变ISO C语言的模式 122

第8章 运行时(run-time)环境 125

8.1 存储器模型(memory model) 125

8.2 对象的表示 128

8.3 寄存器使用规范(register conventions) 134

8.4 函数结构和调用约定 135

8.5 C/C++与汇编语言的接口 137

8.6 中断处理 151

8.7 运行时支持的算术程序(run-time-support arithmetic routines) 153

8.8 系统初始化 155

第9章 运行时支持函数 160

9.1 库 160

9.2 C的I/O函数 161

9.3 头文件 168

9.4 运行时支持函数和宏总结 177

9.5 运行时支持函数和宏的描述 184

第10章 建库工具和C++名还原工具 228

10.1 建库工具(library-build utility) 228

10.2 C++名还原工具(Name Demangler) 231

第2篇 TMS320C6000程序员手册 235

第11章 简介 235

11.1 TMS320C6000体系结构 235

11.2 TMS320C6000流水线 235

11.3 提高性能的代码开发流程 236

第12章 C/C++代码优化 240

12.1 编写C/C++代码 240

12.2 编译C/C++代码 241

12.3 代码剖析 245

12.4 优化C/C++代码 247

第13章 编译器优化指南 273

13.1 引言:简单的C代码调整 273

13.2 第1课:从存储器指针得到循环传递路径 275

13.3 第2课:利用双数据通道平衡资源 280

13.4 第3课:存储器带宽的打包数据优化 283

13.5 第4课:程序级优化 287

13.6 第5课:写线性汇编 288

第14章 反馈解决方案 293

14.1 理解反馈 293

14.2 循环的错误信息 297

14.3 流水失败信息 298

14.4 研究反馈信息 302

第15章 通过线性汇编优化汇编代码 304

15.1 线性汇编代码 304

15.2 汇编优化器选项和伪指令 305

15.3 写并行代码 308

15.4 对短字长的数据使用字访问,对于浮点数据采用双字访问 314

15.5 软件流水 320

15.6 多周期循环的模迭代 339

15.7 循环传递路径 350

15.8 循环中的If-Then-Else语句 356

15.9 循环展开 360

15.10 生命太长问题(Live-Too-Long) 364

15.11 消除冗余取数 369

15.12 存储体 374

15.13 软件流水外环 383

15.14 同内环一起条件地执行外环 386

第16章 C64系列编程注意事项 396

16.1 C64x增强型结构简介 396

16.2 在C64x中使用打包数据处理 397

16.3 线性汇编的考虑 422

第17章 汇编代码结构 429

17.1 标号 429

17.2 并行符号 429

17.3 条件 429

17.4 指令 430

17.5 功能单元 431

17.6 操作数 433

17.7 注释 433

第18章 中断 434

18.1 中断概述 434

18.2 单分配和多分配 434

18.3 中断循环 435

18.4 可中断的代码产生 435

18.5 中断子程序 438

第19章 连接问题 441

19.1 怎样使用连接错误信息 441

19.2 如何通过放RTS在片外来节省片内存储器 443

第3篇 TMS320C6000汇编语言工具用户手册 449

第20章 软件开发工具简介 449

20.1 软件开发工具概述 449

20.2 工具介绍 449

20.3 Code Composer Studio和代码产生工具 451

第21章 通用目标文件格式(COFF)简介 452

21.1 段(sections) 452

21.2 汇编器怎样处理段 453

21.3 连接器怎样处理段 457

21.4 重定位 459

21.6 程序加载 460

21.7 在COFF文件里的符号 460

21.5 运行时重定位 460

第22章 汇编器描述 462

22.1 汇编器概述 462

22.2 汇编器在软件开发流程中的作用 462

22.3 调用汇编器 462

22.4 指定备用的汇编器输入目录 464

22.5 源语句格式 466

22.6 常量 469

22.7 字符串 471

22.8 符号 471

22.9 表达式 477

22.10 源文件列表 480

22.11 调试汇编源程序 481

22.12 交叉引用列表 482

23.1 伪指令综述 484

第23章 汇编器伪指令 484

23.2 段定义伪指令 487

23.3 初始化常量的伪指令 489

23.4 使段程序计数器对齐的伪指令 491

23.5 指定输出列表格式的伪指令 491

23.6 引用其他文件的伪指令 492

23.7 激活条件汇编的伪指令 493

23.8 定义汇编时刻的符号的伪指令 493

23.9 其他伪指令 494

23.10 伪指令参考 495

第24章 宏语言 534

24.1 宏的使用 534

24.2 定义宏 534

24.3 宏参数/替代符号 535

24.4 宏库 540

24.5 在宏内使用条件汇编 541

24.6 在宏内使用标号 542

24.7 在宏内生成信息 543

24.8 使用伪指令指定输出列表的格式 544

24.9 使用递归和嵌套的宏 545

24.10 宏伪指令综述 546

第25章 文档管理器说明 548

25.1 文档管理器概述 548

25.2 在软件开发流程中文档管理器的作用 548

25.3 调用文档管理器 548

25.4 文档管理器举例 550

第26章 连接器描述 552

26.1 连接器概述 552

26.2 连接器在软件开发流程中的作用 552

26.3 调用连接器 552

26.4 连接器选项 554

26.5 连接器命令文件 565

26.6 目标库 567

26.7 MEMORY伪指令 568

26.8 SECTIONS伪指令 570

26.9 指定段的运行地址 578

26.10 使用GROUP和UNION语句 580

26.11 特殊的段类型(DSECT、COPY和NOLOAD) 584

26.12 默认的定位算法 584

26.13 连接时给符号赋值 586

26.14 创建与填充空穴 591

26.15 连接器产生的复制表 594

26.16 部分(增量)连接 602

26.17 连接C/C++代码 603

26.18 连接器实例 606

27.2 调用绝对地址列表工具 609

第27章 绝对地址列表工具说明 609

27.1 产生一个绝对地址列表 609

27.3 绝对地址列表工具举例 610

第28章 交叉引用列表工具说明 614

28.1 生成交叉引用列表 614

28.2 调用交叉引用列表工具 614

28.3 交叉引用列表举例 615

第29章 目标文件工具说明 617

29.1 调用目标文件显示工具 617

29.2 XML标志索引 617

29.3 XML用户例子 621

29.4 调用名称列表工具程序 627

29.5 调用剥离工具程序 627

30.1 十六进制转换工具在软件开发流程中的作用 629

30.2 调用十六进制转换工具 629

第30章 十六进制转换工具说明 629

30.3 理解存储器宽度 632

30.4 ROMS伪指令 636

30.5 SECTIONS伪指令 639

30.6 排除一个指定段 640

30.7 给输出文件赋名 641

30.8 图像模式和-fill选项 642

30.9 为片上导引加载器构建一张表 643

30.10 控制ROM器件地址 646

30.11 目标格式描述 647

30.12 十六进制转换工具程序的错误提示信息 650

附录A 通用目标文件格式 652

附录B 符号调试伪指令 662

附录C XML连接信息文件说明 664

附录D 术语表 671