数字信号处理方法与实现
贺知明 副教授
电子科技大学
四川 ?成都
SHARC系列 DSP开发工具与软件设计
? 开发工具
? VisualDSP介绍
? DSP汇编语言程序设计
? DSP高级语言程序设计
? 汇编与高级语言的接口
? 链接描述文件
? 集成开发调试环境( IDDE)
开发工具
? 硬件开发工具,
EZ-ICE( In-Circuit Emulator,硬件仿真器)
通过 JTAG仿真测试口连接,管理目标处理器
EZ-kit lite(工具包)
主要包括评估板(通过串口或 USB与 PC连接)
? 软件开发工具, VisualDSP
使用开发工具的流程 ( 1)
? 系统框架描述,任务分析及确定,定义目
标系统,编写系统结构文件(,ldf,链接描
述文件)
? 产生程序代码
C源文件(,C)
汇编源文件(,ASM)
库文件
标准
编译
器或
汇编
器
工程文件
(,dpj)
链接器
链接描述文
件(,ldf)
可执行文件
(,dxe)
使用开发工具的流程( 2)
? 调试程序(软件模拟)
在评估板或实验板上,利用软件模拟器进行;
? 目标系统仿真(硬件仿真)
硬件仿真器与目标处理器连接,进行硬件仿真;
? 完成最终系统(软件 +硬件)
脱机装载固化程序( EPROM,E2PROM或 FLASH
等),完成系统测试。
VisualDSP介绍
? VisualDSP是一个集成的开发、调试环境
( Integrated Development and Debugging
Environment,简称 IDDE),具有图形交互
的窗口形式,为 DSP应用程序的开发提供了
全面灵活的 工程式 管理。
? VisualDSP专门针对 ADI公司的系列 DSP(浮
点和定点)所使用的通用开发平台,可以
支持共享存储器的多处理器系统开发。
VisualDSP的组成
? 集成开发环境( Integrated Development Environment)
? 集成调试环境( Integrated Debugging Environment)
? VDK核( VisualDSP Kernel)及分析工具
? VCSE( VisualDSP Component Software Engineering)
专家链接器
? 高速缓存和指令流水查看器
? TCL Scripts
VisualDSP的主要特点
? 强大的编辑器和灵活的工程管理功能。
? 对各种 SHARC工具的操作非常容易。
? 调试与多处理器支持。
? 支持高级语言编程和调试。
? 强大的统计性能分析。
? 专家链接器与 VCSE。
DSP汇编语言程序设计
汇编语言能够与硬件紧密结合,其执行
效率最高,指令代码最短,占用内存最小。
在对运算速度要求很高的场合,使用汇编
语言编程具有独特的优势。
汇编编程时应注意
? 充分利用 DMA块操作、条件执行、循环寻
指、位反序、延迟跳转、并行操作等专门
为 DSP运算而设计的指令,多数操作都有专
门的硬件支持,执行效率高。
? 充分利用寄存器,Cache、片内 RAM等高速
运行的片上资源,以提高程序运行速度。
? 合理安排指令,避免指令的流水冲突。
? 充分精简指令,合理优化程序。
程序设计优化
? 程序设计优化的目的
? 程序设计优化的途径
? SHARC DSP程序设计优化的基础
? 程序优化举例
程序设计优化的目的
? 易维护性
? 可靠性
? 效率
? 易理解性
程序设计优化的途径
? 程序结构的优化
? 数据结构的优化
? 指令优化
SHARC DSP程序设计优化的基础
? 多总线结构
? 多运算器结构
? 指令缓存与程序流水结构
? 长指令结构
? 独立的 I/O结构
? 分块的双口 RAM结构
? SIMD结构
汇编程序内容与结构
? 汇编指令
? 汇编器命令
? 预处理器命令
汇编表达式、操作符与数据格式
? 汇编表达式
常量表达式、地址表达式
? 操作符
? 数据格式
二进制、八进制、十进制、十六进制
汇编关键字与符号
? 位段名
? 汇编指令
? 汇编器命令
DSP高级语言程序设计
高级语言基本脱离硬件,可读性强,
程序的可移植性也很好。利用高级语言开
发 DSP程序,极大地缩短了 DSP软件的开
发周期。 VisualDSP集成开发环境支持高
级语言编程。
? C/C++运行时模式
? C/C++实时运行库
C/C++运行时模式
? 存储器使用
? 编译器寄存器
? 用户寄存器
? 使用预保留的寄存器
? 高速暂存寄存器、堆栈寄存器与备用寄存
器
? 堆栈管理
C/C++实时运行库
函数、宏和类模块的集合。
? 调用库函数
? 链接库函数
? 库头文件
汇编语言与高级语言的接口
混合编程
? C/C++实时运行库调用汇编函数
? 汇编程序调用 C/C++函数
? C++调用汇编类成员函数
链接描述文件 LDF
链接描述文件定义系统的配置、存储器分
配、链接器链接的所有目标文件和目标库,
以及指定链接器如何处理链接的过程。
集成开发调试环境
? 程序开发步骤
? Debugger调试工具
程序开发步骤
? 创建一个新的工程文件
? 设置工程选项
? 添加或编辑工程源文件
? 编译链接 Debug版的工程,生成可执行文件
? 建立 Debug Session和加载可执行文件
? 运行和调试程序
? 编译链接加载( Release)版本的工程
创建一个新的工程文件
? 在 VisualDSP下 DSP的所有应用开发都是基于
工程的,所以创建一个工程文件是整个软件
开发的第一步。
? 工程文件(,dpj)中存放程序的编译链接信
息:源文件列表、文件相关信息和开发工具
的选项设置等。
? 选择 Project\New,会弹出相应对话框,键入
新工程文件名,即可保存这个工程文件。
设置工程选项
? 在给新建立的工程加入文件之前,必须先设
置工程选项,选择 Project\Project Options,
会弹出相应对话框,对 8个选项栏分别予以
设置,可完成指定处理器类型及设置工程编
译链接等操作。
? 配置完成后,确定并退出 Project Options对
话框。
添加或编辑工程源文件
? 一个工程文件一般包括一个或多个 C/C++、汇编源
文件。当创建了一个工程文件,并在工程选项中指
定了所用的处理器类型及设置工程编译链接选项后
即可把新的或已存在的源文件加入该工程中。
? 可以把各种类型的文件添加到工程中去,编译链接
时,IDDE能自动选择可识别的文件并对其进行编译
链接。
? Dependencies描述工程中源文件之间的相关信息,
它决定编译链接的顺序。
编译链接 Debug版的工程,生成可执行文件
? 创建了一个工程,完成工程选项设置并加入了源文
件后,即可创建可执行文件。
? 确定工程设置中选项正确(设置为 Debug)。
? 通过 Project\Build Project来编译链接该工程。
? 在编译链接过程中,输出窗中会显示状态信息。如
出错,会显示出错信息。
? 注意:此时,Project\Project Options中选择的输出
文件类型必须指定为 DSP executable file类型
(,dxe),才能产生可进行 Debug调试的输出文件。
建立 Debug Session和加载可执行文件
? Debug Session可以是软件仿真或硬件模拟
两个版本,在 Session中指定目标和处理器
类型。
? 可以通过 File/Load Program选单加载可执
行文件。
运行和调试程序
? 为工程文件指定 Debug Session后,即可利
用 Debugger工具来运行和调试该工程。
? 该阶段操作在 Debug菜单中进行。
编译链接加载 Release版本的工程
? 当 DSP应用程序完成 Debug调试后,即可编译链接
一个 Release版本(正式版)的工程。
? 注意:应将工程选项中的原设置( Debug)改为
Release类型后,再编译链接这个工程(由
Project\Build Project 完成)。
? 这样得到的代码删去了调试用的多种信息,不再用
于调试,但性能优化了。
? 注意:在生成可执行文件时,可生成一个加载文件
(,ldr,在 Project\Project Options中选择生成文件
的类型为 Loader File)。
Debugger调试工具
? Debugging Sessions
? 程序执行操作
? 程序性能分析操作
? 设置断点和观察点
? 仿真硬件环境
? 寄存器窗口操作
? 存储器窗口操作
? 其他窗口操作
? Plot
Debugging Sessions
? Debug target(选择系列,并选择 simulation
或 emulation)
? Platform(在 Debug target中选择具体平台)
? Processor(选择处理器类型)
? 一次可运行一个或几个调试会话窗口(单处
理器或多处理器)
程序执行操作
从 Debug选单运行程序,执行命令。
? Run
? Halt
? Run to Cursor
? Step over
? Step into
? Step out of
? Reset
? Restart
程序性能分析操作
VisualDSP中提供了 3个命令来分析程序的执
行情况(位于 Tools 菜单中),
? Traces(跟踪,对程序指令的跟踪,结果显
示程序如何执行到某一步)
? Profile(评估,用来分析程序的运行时间特
性)
? Statistical Profiling(统计评估,可统计指
令执行时占用的时间)
设置断点
? 断点( Break Point)和观察点( Watch
Point )功能相似,程序执行到断点将停止,
而观察点可以设置观察条件来停止程序的
执行,如寄存器的读写、存储器的读写、
硬件堆栈的使用等。
? 它们均在 Settings中设置。
仿真硬件环境
VisualDSP中提供了 3个命令来仿真硬件
环境( Settings中设置),
? Interrupts(仿真程序执行过程中产生随
机外部中断)
? Streams(仿真数据流通过 DSP的 I/O管
脚进行传送)
? Load Sim Loader(仿真 DSP通过 PROM或
主机模式进行加载)
寄存器窗口操作
在寄存器窗口中,可以改变寄存器内容显
示的数据格式和修改寄存器内容。
存储器窗口操作
存储器窗口不仅可以象寄存窗口一样提供数据格式和编
辑操作,还可提供以下功能,
? Go To(跳至某一地址)
? Fill(填充)
? Dump(导出)
? New Tracking(在某一存储器窗口中输入一个表达式来
进行跟踪)
? Plot(对存储器内容作图,View\Debug Windows\Plot
中设置)
其他窗口操作
? 反汇编窗口操作
? 源文件窗口操作
? Locals窗口操作( View\Debug Windows\
Locals,Locals 窗口中会显示程序中的所有
局部 变量和它的值)
? Expressions窗口操作( View\Debug
Windows\Expressions,在 Expressions窗口
中允许写入一个 表达式 并显示其值)
Plot
? 利用 Plot功能可以将存储区中某一段内容以
图形方式画出来,可直观地观察存储区中
的数据,也可用相应处理算法进行处理
(可转换为分贝、并作 FFT等),并具有多
种画图类型( View\Debug Windows\Plot中
设置)。
贺知明 副教授
电子科技大学
四川 ?成都
SHARC系列 DSP开发工具与软件设计
? 开发工具
? VisualDSP介绍
? DSP汇编语言程序设计
? DSP高级语言程序设计
? 汇编与高级语言的接口
? 链接描述文件
? 集成开发调试环境( IDDE)
开发工具
? 硬件开发工具,
EZ-ICE( In-Circuit Emulator,硬件仿真器)
通过 JTAG仿真测试口连接,管理目标处理器
EZ-kit lite(工具包)
主要包括评估板(通过串口或 USB与 PC连接)
? 软件开发工具, VisualDSP
使用开发工具的流程 ( 1)
? 系统框架描述,任务分析及确定,定义目
标系统,编写系统结构文件(,ldf,链接描
述文件)
? 产生程序代码
C源文件(,C)
汇编源文件(,ASM)
库文件
标准
编译
器或
汇编
器
工程文件
(,dpj)
链接器
链接描述文
件(,ldf)
可执行文件
(,dxe)
使用开发工具的流程( 2)
? 调试程序(软件模拟)
在评估板或实验板上,利用软件模拟器进行;
? 目标系统仿真(硬件仿真)
硬件仿真器与目标处理器连接,进行硬件仿真;
? 完成最终系统(软件 +硬件)
脱机装载固化程序( EPROM,E2PROM或 FLASH
等),完成系统测试。
VisualDSP介绍
? VisualDSP是一个集成的开发、调试环境
( Integrated Development and Debugging
Environment,简称 IDDE),具有图形交互
的窗口形式,为 DSP应用程序的开发提供了
全面灵活的 工程式 管理。
? VisualDSP专门针对 ADI公司的系列 DSP(浮
点和定点)所使用的通用开发平台,可以
支持共享存储器的多处理器系统开发。
VisualDSP的组成
? 集成开发环境( Integrated Development Environment)
? 集成调试环境( Integrated Debugging Environment)
? VDK核( VisualDSP Kernel)及分析工具
? VCSE( VisualDSP Component Software Engineering)
专家链接器
? 高速缓存和指令流水查看器
? TCL Scripts
VisualDSP的主要特点
? 强大的编辑器和灵活的工程管理功能。
? 对各种 SHARC工具的操作非常容易。
? 调试与多处理器支持。
? 支持高级语言编程和调试。
? 强大的统计性能分析。
? 专家链接器与 VCSE。
DSP汇编语言程序设计
汇编语言能够与硬件紧密结合,其执行
效率最高,指令代码最短,占用内存最小。
在对运算速度要求很高的场合,使用汇编
语言编程具有独特的优势。
汇编编程时应注意
? 充分利用 DMA块操作、条件执行、循环寻
指、位反序、延迟跳转、并行操作等专门
为 DSP运算而设计的指令,多数操作都有专
门的硬件支持,执行效率高。
? 充分利用寄存器,Cache、片内 RAM等高速
运行的片上资源,以提高程序运行速度。
? 合理安排指令,避免指令的流水冲突。
? 充分精简指令,合理优化程序。
程序设计优化
? 程序设计优化的目的
? 程序设计优化的途径
? SHARC DSP程序设计优化的基础
? 程序优化举例
程序设计优化的目的
? 易维护性
? 可靠性
? 效率
? 易理解性
程序设计优化的途径
? 程序结构的优化
? 数据结构的优化
? 指令优化
SHARC DSP程序设计优化的基础
? 多总线结构
? 多运算器结构
? 指令缓存与程序流水结构
? 长指令结构
? 独立的 I/O结构
? 分块的双口 RAM结构
? SIMD结构
汇编程序内容与结构
? 汇编指令
? 汇编器命令
? 预处理器命令
汇编表达式、操作符与数据格式
? 汇编表达式
常量表达式、地址表达式
? 操作符
? 数据格式
二进制、八进制、十进制、十六进制
汇编关键字与符号
? 位段名
? 汇编指令
? 汇编器命令
DSP高级语言程序设计
高级语言基本脱离硬件,可读性强,
程序的可移植性也很好。利用高级语言开
发 DSP程序,极大地缩短了 DSP软件的开
发周期。 VisualDSP集成开发环境支持高
级语言编程。
? C/C++运行时模式
? C/C++实时运行库
C/C++运行时模式
? 存储器使用
? 编译器寄存器
? 用户寄存器
? 使用预保留的寄存器
? 高速暂存寄存器、堆栈寄存器与备用寄存
器
? 堆栈管理
C/C++实时运行库
函数、宏和类模块的集合。
? 调用库函数
? 链接库函数
? 库头文件
汇编语言与高级语言的接口
混合编程
? C/C++实时运行库调用汇编函数
? 汇编程序调用 C/C++函数
? C++调用汇编类成员函数
链接描述文件 LDF
链接描述文件定义系统的配置、存储器分
配、链接器链接的所有目标文件和目标库,
以及指定链接器如何处理链接的过程。
集成开发调试环境
? 程序开发步骤
? Debugger调试工具
程序开发步骤
? 创建一个新的工程文件
? 设置工程选项
? 添加或编辑工程源文件
? 编译链接 Debug版的工程,生成可执行文件
? 建立 Debug Session和加载可执行文件
? 运行和调试程序
? 编译链接加载( Release)版本的工程
创建一个新的工程文件
? 在 VisualDSP下 DSP的所有应用开发都是基于
工程的,所以创建一个工程文件是整个软件
开发的第一步。
? 工程文件(,dpj)中存放程序的编译链接信
息:源文件列表、文件相关信息和开发工具
的选项设置等。
? 选择 Project\New,会弹出相应对话框,键入
新工程文件名,即可保存这个工程文件。
设置工程选项
? 在给新建立的工程加入文件之前,必须先设
置工程选项,选择 Project\Project Options,
会弹出相应对话框,对 8个选项栏分别予以
设置,可完成指定处理器类型及设置工程编
译链接等操作。
? 配置完成后,确定并退出 Project Options对
话框。
添加或编辑工程源文件
? 一个工程文件一般包括一个或多个 C/C++、汇编源
文件。当创建了一个工程文件,并在工程选项中指
定了所用的处理器类型及设置工程编译链接选项后
即可把新的或已存在的源文件加入该工程中。
? 可以把各种类型的文件添加到工程中去,编译链接
时,IDDE能自动选择可识别的文件并对其进行编译
链接。
? Dependencies描述工程中源文件之间的相关信息,
它决定编译链接的顺序。
编译链接 Debug版的工程,生成可执行文件
? 创建了一个工程,完成工程选项设置并加入了源文
件后,即可创建可执行文件。
? 确定工程设置中选项正确(设置为 Debug)。
? 通过 Project\Build Project来编译链接该工程。
? 在编译链接过程中,输出窗中会显示状态信息。如
出错,会显示出错信息。
? 注意:此时,Project\Project Options中选择的输出
文件类型必须指定为 DSP executable file类型
(,dxe),才能产生可进行 Debug调试的输出文件。
建立 Debug Session和加载可执行文件
? Debug Session可以是软件仿真或硬件模拟
两个版本,在 Session中指定目标和处理器
类型。
? 可以通过 File/Load Program选单加载可执
行文件。
运行和调试程序
? 为工程文件指定 Debug Session后,即可利
用 Debugger工具来运行和调试该工程。
? 该阶段操作在 Debug菜单中进行。
编译链接加载 Release版本的工程
? 当 DSP应用程序完成 Debug调试后,即可编译链接
一个 Release版本(正式版)的工程。
? 注意:应将工程选项中的原设置( Debug)改为
Release类型后,再编译链接这个工程(由
Project\Build Project 完成)。
? 这样得到的代码删去了调试用的多种信息,不再用
于调试,但性能优化了。
? 注意:在生成可执行文件时,可生成一个加载文件
(,ldr,在 Project\Project Options中选择生成文件
的类型为 Loader File)。
Debugger调试工具
? Debugging Sessions
? 程序执行操作
? 程序性能分析操作
? 设置断点和观察点
? 仿真硬件环境
? 寄存器窗口操作
? 存储器窗口操作
? 其他窗口操作
? Plot
Debugging Sessions
? Debug target(选择系列,并选择 simulation
或 emulation)
? Platform(在 Debug target中选择具体平台)
? Processor(选择处理器类型)
? 一次可运行一个或几个调试会话窗口(单处
理器或多处理器)
程序执行操作
从 Debug选单运行程序,执行命令。
? Run
? Halt
? Run to Cursor
? Step over
? Step into
? Step out of
? Reset
? Restart
程序性能分析操作
VisualDSP中提供了 3个命令来分析程序的执
行情况(位于 Tools 菜单中),
? Traces(跟踪,对程序指令的跟踪,结果显
示程序如何执行到某一步)
? Profile(评估,用来分析程序的运行时间特
性)
? Statistical Profiling(统计评估,可统计指
令执行时占用的时间)
设置断点
? 断点( Break Point)和观察点( Watch
Point )功能相似,程序执行到断点将停止,
而观察点可以设置观察条件来停止程序的
执行,如寄存器的读写、存储器的读写、
硬件堆栈的使用等。
? 它们均在 Settings中设置。
仿真硬件环境
VisualDSP中提供了 3个命令来仿真硬件
环境( Settings中设置),
? Interrupts(仿真程序执行过程中产生随
机外部中断)
? Streams(仿真数据流通过 DSP的 I/O管
脚进行传送)
? Load Sim Loader(仿真 DSP通过 PROM或
主机模式进行加载)
寄存器窗口操作
在寄存器窗口中,可以改变寄存器内容显
示的数据格式和修改寄存器内容。
存储器窗口操作
存储器窗口不仅可以象寄存窗口一样提供数据格式和编
辑操作,还可提供以下功能,
? Go To(跳至某一地址)
? Fill(填充)
? Dump(导出)
? New Tracking(在某一存储器窗口中输入一个表达式来
进行跟踪)
? Plot(对存储器内容作图,View\Debug Windows\Plot
中设置)
其他窗口操作
? 反汇编窗口操作
? 源文件窗口操作
? Locals窗口操作( View\Debug Windows\
Locals,Locals 窗口中会显示程序中的所有
局部 变量和它的值)
? Expressions窗口操作( View\Debug
Windows\Expressions,在 Expressions窗口
中允许写入一个 表达式 并显示其值)
Plot
? 利用 Plot功能可以将存储区中某一段内容以
图形方式画出来,可直观地观察存储区中
的数据,也可用相应处理算法进行处理
(可转换为分贝、并作 FFT等),并具有多
种画图类型( View\Debug Windows\Plot中
设置)。