第1篇 TMS320LF240x CPU和汇编程序设计 1
第1章 TMS320LF240x DSP简介 3
1.1 DSP芯片基本结构 3
1.2 TMS320LF240x DSP控制器简介 5
1.2.1 基于控制领域的应用 5
1.2.2 TMS320LF240x特点和资源 5
1.2.3 TMS320LF240x的功能结构 6
1.3 TMS320LF240xDSP存储映射 7
1.3.1 TMS320LF240x DSP存储器映射 7
1.3.2 TMS320LF240xDSP外设存储器映射图 9
1.4 TMS320LF240x的CPU内部总线结构 10
2.1.3 FLASH程序存储器 11
2.1.2 单端口RAM(SARAM) 11
2.1.1 双端口RAM(DARAM) 11
2.1 片内存储器 11
第2章 存储器和I/O空间 11
2.2 程序存储器 12
2.3 数据存储器 13
2.4 I/O空间 16
第3章 中央处理单元(CPU) 18
3.1 TMS320LF240xDSP的CPU功能模块 18
3.2 输入定标部分 21
3.3 乘法部分 23
3.3.1 乘法器 23
3.3.2 乘积定标移位器 24
3.4 中央算术逻辑部分 25
3.4.1 中央算术逻辑单元 26
3.4.3 输出定标移位器 27
3.4.2 累加器(ACC) 27
3.5 辅助寄存器算术单元(ARAU) 28
3.5.1 辅助寄存器算术单元(ARAU)简述 28
3.5.2 辅助寄存器 29
3.6 状态寄存器ST0和ST1 30
3.7 外部存储器接口操作 31
第4章 程序控制 35
4.1 程序地址的产生 35
4.1.1 程序计数器(PC) 36
4.1.2 堆栈 37
4.1.3 微堆栈(MSTACK) 38
4.2 指令流水线操作 38
4.3.1 无条件转移 39
4.3.2 无条件调用 39
4.3 转移、调用和返回 39
4.3.3 无条件返回 40
4.4 条件转移、调用和返回 40
4.4.1 使用多个条件 40
4.4.2 条件的稳定 41
4.4.3 条件转移 41
4.4.4 条件调用 41
4.4.5 条件返回 42
4.5 重复单条指令 42
4.6 中断 42
4.7 CPU中断寄存器 47
4.7.1 CPU中断标志寄存器 47
4.7.2 CPU中断屏蔽寄存器 49
第5章 寻址方式 50
5.1 立即寻址方式 50
5.2 直接寻址方式 51
5.2.2 直接寻址举例 52
5.2.1 使用直接寻址方式 52
5.3 间接寻址方式 54
5.3.1 当前辅助寄存器 54
5.3.2 间接寻址的选择 54
5.3.3 下一次的辅助寄存器 55
5.3.4 间接寻址操作码的格式 56
5.3.5 间接寻址举例 57
5.3.6 修改辅助寄存器的内容 58
第6章 汇编程序设计及开发环境 60
6.1 TMS320LF240x DSP的应用软件开发流程和工具 60
6.2.1 COFF文件的基本单元——段 62
6.2.2 汇编器对段的处理 62
6.2 COFF文件概述 62
6.2.3 链接器对段的处理 67
6.2.4 重新定位 69
6.2.5 运行时重新定位 70
6.2.6 加载程序 70
6.2.7 COFF文件中的符号 71
6.3 汇编语言程序格式 71
6.4 程序汇编 74
6.4.1 运行汇编程序 74
6.4.2 条件汇编 75
6.4.3 列表文件 76
6.4.4 交叉引用清单 77
6.5 程序链接 78
6.5.1 链接器的调用 79
6.5.2 链接器的选项 79
6.5.3 链接器命令文件(.cmd文件) 81
6.6 编写链接器命令文件(.cmd文件) 82
6.6.1 MEMoRY指令 82
6.6.2 SECTIONS指令 84
6.6.3 MEMORY和SECTIONS指令的默认算法 88
6.6.4 基于CCS环境下命令文件编写实例 88
6.7 宏定义和宏调用 89
6.7.1 宏定义 89
6.7.2 宏调用 90
6.8 集成开发环境(CCS) 91
6.8.1 CCS的系统配置 91
6.8.2 运行CCS 93
6.8.3 建立工程文件 93
6.8.4 设置工程项目选项 94
6.8.7 查看存储器信息 98
6.8.6 仿真运行输出目标文件 98
6.8.5 编译和创建输出目标文件 98
6.8.8 查看寄存器信息 100
6.8.9 修改存储器和寄存器内容 100
6.8.10 设置断点和探测点 101
6.8.11 FLASH烧录 102
6.9 TMS320LF240xDSP汇编程序开发实例 104
6.9.1 寄存器定义文件240xA.h 104
6.9.2 中断向量表定义文件 112
6.9.3 闭环PID控制汇编程序 113
第7章 汇编语言指令 121
7.1 指令集概述 121
7.2 如何使用指令描述 127
7.2.1 语法 128
7.2.4 执行 129
7.2.2 操作数 129
7.2.3 操作码 129
7.2.5 状态位 130
7.2.6 说明 130
7.2.7 字数 130
7.2.8 周期数 130
7.2.9 举例 132
7.3 指令描述 132
第2篇 TMS320LF240x C语言编程 257
第8章 C编译器概述 259
8.1 C编译器特性 259
8.2 命令解释程序 260
8.3 调用编译器命令解释程序 261
8.4 改变编译器的选项 262
8.4.1 常用的选项 262
8.4.3 修改Shell对文件名的解释 263
8.4.2 指定文件名 263
8.4.4 修改Shell对文件名扩展的解释和命名 264
8.4.5 指定目录 264
8.4.6 忽略ANSI C类型检查的选项 264
8.4.7 运行时模块选项 265
8.4.8 控制汇编器的选项 265
8.5 使用环境变量改变编译器特性 266
8.5.1 设置默认Shell选项(COPTION) 266
8.5.2 指定临时文件目录(TMP) 267
8.6 控制预处理器 267
8.6.1 预定义的宏名 267
8.6.2 #include文件的搜索路径 268
8.6.3 用-i选项改变#include文件的搜索路径 268
8.7.1 直接插入内部操作数 269
8.6.4 产生预处理的列表文件(-pl选项] 269
8.7 使用直接插入函数展开 269
8.7.2 控制直接插入函数展开(-x选项) 270
8.7.3 _INLINE预处理器符号 270
8.8 使用交互列表工具 271
8.9 编译错误简介 272
8.10 使用CCS汇编工具 274
第9章 优化C代码 278
9.1 使用C编译优化器 278
9.2 使用-o3选项 279
9.2.1 控制文件级优化(-oln选项] 279
9.2.2 创建优化信息文件(-onn选项) 280
9.3 执行程序优化级 280
9.3.1 控制程序级优化(-opn选项) 280
9.4 自动内嵌扩展(-oi选项) 281
9.3.2 当混合C语言和汇编的优化考虑因素 281
9.3.3 命名程序编译输出文件(-px选项) 281
9.5 使用交互列表工具 282
9.6 调试优化的代码和优化类型 282
9.6.1 调试优化的代码 282
9.6.2 可执行的优化类型 282
第10章 链接C代码 290
10.1 单步调用链接器 290
10.2 使用编译器的Shell程序调用链接器(-z选项) 291
10.3 禁用链接器(-c Shell选项) 291
10.4 控制链接过程 291
10.4.1 链接运行时支持库 292
10.4.2 指定初始化类型 292
10.4.3 指定段在存储器中的分配 293
10.4.4 链接器命令文件实例 294
第11章 TMS320LF240x的C语言 296
11.1 TMS320LF240x C语言的特点 296
11.2 数据类型 297
11.3 寄存器变量和全局寄存器变量 298
11.3.1 寄存器变量 298
11.3.2 创建全局寄存器变量 298
11.4 Pragma伪指令 299
11.5 初始化静态和全局变量 301
11.6 C语言和汇编语言混合编程 302
11.6.1 用C代码调用汇编语言模块 303
11.6.2 在C语言中插入汇编语句 304
11.6.3 在程序中访问汇编语言变量 305
11.6.4 修改编译器输出 306
第12章 运行时环境和支持库 307
12.1 存储器模式 307
12.1.1 段 307
12.1.2 C系统堆栈 308
12.1.3 分配.const到程序存储器 308
12.1.4 动态存储器分配 309
12.1.5 变量初始化 310
12.1.6 为静态和全局变量分配存储器 310
12.1.7 字符串常数 310
12.2 寄存器规定 311
12.2.1 状态寄存器的位 311
12.2.2 堆栈指针、帧指针和局部变量指针 312
12.3 函数结构和调用规定 312
12.3.1 函数如何进行调用 312
12.3.2 被调用函数如何响应 313
12.4.1 C语言中断的基本知识 314
12.4 中断处理 314
12.4.2 使用C中断程序 315
12.4.3 使用汇编语言中断程序 315
12.5 系统初始化 316
12.5.1 运行时堆栈 316
12.5.2 变量自动初始化 316
12.5.3 初始化表 316
12.5.4 运行时变量的自动初始化 317
12.5.5 在加载时变量的初始化 318
12.6 运行时支持库函数 319
12.6.1 库 319
12.6.2 头文件 320
13.1.1 主程序Exam2407.c 326
第13章 应用实例 326
13.1 对称PWM波形产生实例 326
13.1.2 中断向量表定义文件cvectors.asm 329
13.1.3 外设寄存器定义文件f2407C.h 330
13.1.4 链接器命令文件Exam2407C.cmd 335
13.2 产生锯齿波波形 336
13.2.1 主程序 336
13.2.2 包含程序DAC.h 340
13.2.3 包含程序ioreg.h 341
13.2.4 中断向量表定义vectors.asm 344
13.2.5 引导程序Boot2407.asm 345
13.2.6 链接器命令文件Saw_wave.cmd 349
附录 汇编指令索引 351
参考文献 353