




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 4 2DSP集成开发环境 CCS及DSP BIOS的原理与应用CCS codecomposerstudio 2 3 1CCS的功能特点与安装3 2基于CCS开发DSP软件3 3利用CCS调试应用程序3 4CCS高级工具的使用3 5DSP BIOS的功能3 6DSP BIOS的高级应用3 7基于CCS的DSP片级支持库 3 概述 TMS320C6000DSP有一套完整的开发系统C C compiler c asm将ANSIC或C 语言编写的程序转换为面向DSP的汇编代码直接利用高级语言实现DSP软件的初步设计 缩短开发周期Assemblycompiler sa asm允许开发者编写线性汇编代码而无需考虑流水线结构和寄存器分配 它可以自动分配寄存器以及利用循环优化将线性汇编转化为利用软件流水线的高度并行汇编代码Assembler asm obj将汇编代码翻译成DSP可以执行的机器语言Linker obj out将目标文件组合成一个单独的可执行目标模块 当它创建可执行模块时 分配段到目标系统所配置的内存 重新分配符号和段到最终地址 并且解决未定义符号的外部引用的问题 4 Cdebugger是一种先进的编程接口协助编程者开发 测试C6x的C程序以及汇编程序 也是C6xsimulator和emulator的接口 调试器通过图形界面直观地将代码 数据和命令分开显示 动态的性能分析工具提供了对代码执行进行统计的手段 可以直接反馈程序的性能进而确定和解决代码瓶颈 Simulator通过模拟DSP硬件对代码的执行 方便用户进行软件的开发和调试 用户可以在没有目标板的情况下编写软件 有限的模拟一些硬件功能 Emulator基于边界扫描协议的系统仿真工具 用于系统集成阶段的软件和硬件联调 通过JTAG接口 可以访问DSP器件的全部内存和寄存器 方便有效的硬件对软件执行的调试工作 DSK入门开发套件 DSK 代码开发工具 包括基于TMS320C6000DSPs的板卡 软硬件仿真环境可以与PC通信 很适合初步接触DSP的学习者入门和进一步熟悉提高 5 CCS CodeComposerStudio 功能简介 CCS是一个基于Windows的DSP集成开发环境 加速和提高程序员创建与测试实时嵌入式信号处理系统的开发过程 CCS是一个完整的DSP集成开发环境 也是目前最优秀 最流行的DSP开发软件之一 CCS为TIDSP家族的C2000 版本2 2以上 C5000和C6000系列DSP提供DSP BIOS功能 而在C3x中是没有DSP BIOS功能的 CCS具有实时 多任务 可视化的软件开发特点 已经成为TIDSP家族的程序设计 制作 调试 优化的利器 6 1 集成可视化代码编辑界面 可直接编写C 汇编 h文件 cmd文件 2 集成代码生成工具 包括编辑器 优化C编译器 连接器等 3 基本调试工具 如装入执行代码 out文件 查看寄存器 存储器 反汇编 变量窗口等 支持C源代码级调试 4 支持多DSP调试 5 断点工具 包括硬件断点 数据空间读 写断点 条件断点等 6 探针 Probe 工具 可用于算法仿真 数据监视等 7 剖析 Profile 工具 可用于评估代码执行的时钟数 CCS主要包含了以下功能 7 数据的图形显示工具 可绘制时域 频域波形 眼图 星座图 图象等 并可自动刷新提供GEL工具 用户可以编写自己的控制面板 菜单 方便直观地修改变量 配置参数等支持RTDX技术 可在不中断目标系统运行的情况下 实现DSP与其他应用程序的数据交换开放式的Plug in技术 支持其他第三方的ActiveX插件 支持包括软仿真在内的各种仿真器 只需安装相应的驱动程序 提供DSP BIOS工具 增强对代码的实时分析能力 如分析代码执行的效率 调度程序执行的优先级 方便管理或使用系统资源 代码 数据占用空间 中断服务程序的调用 定时器使用等 从而减少开发人员对硬件资源熟悉程度的依赖性 8 CCS是运行在一系列仿真设备 软仿真器Simulator 硬仿真器Emulator DSP入门套件DSK DSP评估板EVM 上的一个集成的开发环境 任一种仿真设备可形象地将其看做计算机主板上的扩展设备 在它们正常工作之前都需要在操作系统中为其安装驱动程序 2 为CCS安装设备驱动程序 彭启琮管庆等编著DSP集成开发环境 CCS及DSP BIOS的原理与应用电子工业出版社2005年 9 10 11 3 2基于CCS开发DSP软件 基于CCS开发DSP软件是一个软件工程 需要先建立一个工程文件 pjt 所有有关该项目的信息都会存储在这个工程文件中 即包含源代码文件 C C ASM 头文件 支持库 用户库 内存定位文件 cmd 以及DSP BIOS配置文件 cdb 若用C开发 需将C的标准支持库rts6700 lib 用于64KB以内的程序调用 或rts6700e lib 用于大于64KB 使用FCALL指令的函数调用 内存定位文件 cmd 定义了各代码段或数据段在存储器中的位置 将内存定位文件 cmd 添加到工程文件 Buildall 完成编译和连接 Load 将生成的 out文件装入DSP的片内或片外扩展存储器 进行调试 分析和统计工作 12 实例 1 CCS的基本操作 开发一个简单的程序 1 准备工作 2 先建立一个工程文件 pjt 以volume为例 3 向工程添加各类型文件 源文件 cmd文件和库文件 4 查阅代码 5 建造 build 和运行 run 程序 6 改变建造选项和修改语法错误 7 使用断点和观察窗 13 1 准备工作 8个需要复制的文件 提示 在使用CCS进行DSP软件项目开发时 都要养成为每个项目建立一个目录的习惯 此例 项目volume在目录C ti myprojects volume1下 14 2 先建立一个工程文件 Project New Projectcreation 15 3 1 添加源文件 c asmProject AddFilestoProject 选择文件类型在 volume pjt 上单击鼠标右键 AddFiles 3 2 添加内存定位文件 cmd该文件定义了各代码段或数据段在存储器中的位置添加方法同 添加源文件 在添加文件对话框的 文件类型 下拉列表中要选择 LinkerCommandFile cmd 3 3 若源文件是基于C语言编写的 需向工程里添加运行支持库文件 rts6700 lib 该文件存放在CCS的安装目录 c6000 cgtools lib 下在添加文件对话框的 文件类型 下拉列表中要选择 ObjectandLibraryFiles o l 3 4 添加头文件在工程名上单击鼠标右键 选择 ScanAllDependencies 这样 c文件包含的头文件 volume h 将出现在 Include 文件夹中 3 向工程添加各类型文件 16 17 展开工程文件列表 Vectors asm是中断向量表 包含了汇编指令代码 用于在系统产生 RESET 中断时 跳转到C程序的入口点 c int00 在编写更为复杂的用户程序时 可以在Vectors asm文件里自行定义合适的中断向量表 或者使用DSP BIOS自动产生中断向量表 头文件实际上不用人工添加 在建造 Build 工程时 CCS本身可以自动完成相关扫描 18 4 查阅代码 在文件名上双击鼠标 即可在CCS编辑窗内看到源代码 19 主函数进入一个无限循环 在循环内部调用了2个函数dataIO 与processing 函数processing 对输入缓冲区的每个采样值乘以一个增益值 gain 并将结果存放到缓冲区中 该函数同时调用汇编程序load 该函数会根据processing 传递过来的参数processingLoad来消耗指令周期 模拟复杂信号处理算法在时间上的消耗 函数dataIO 不做任何实际操作而直接返回 20 5 建造 build 和运行 run 程序 Building compiling assembling linking三个独立步骤按顺序联合运行 在CCS中 1 主菜单 Project rebuildall 2 工具条图标 rebuildall 建造完毕 CCS生成一个 out 文件 该文件默认存放在所建工程目录下的 debug 目录内装载该 out 文件 File loadprogram 所建的工程目录 debug volume out 打开CCS装载完毕该 out文件后 会自动弹出disassembly窗口 显示构成源代码的反汇编指令 21 建造完毕的CCS窗口及 out文件的装载 22 装载完毕后自动弹出的反汇编窗口 显示构成源代码的反汇编指令 显示程序在运行时的输出信息 23 运行 run 程序 1 Debug gomain 程序从主函数开始 停留在main 处 并会有一个黄色的箭头标记在当前要执行的C语言代码 2 View Mixedsource ASM 同时看到C语言代码和对应编译生成的汇编代码 并且有一个绿色的箭头标记在当前要执行的汇编代码 Page20 3 Debug run 或 工具条图标 run 让程序全速执行 底部的 Stdout 标准输出窗口给出程序运行的输出信息 volumeexamplestarted 证明程序能够正常运行 24 黄色的箭头标记在当前要执行的C语言代码 绿色的箭头标记在当前要执行的汇编代码 混合观察源文件与反汇编时 CCS禁止编辑 单击鼠标后 按F1键可以得到指令的帮助信息 预处理命令 ifdef 和 endif 包含的代码段并没被执行 因为没有定义符号 FILEIO 25 CCS设置预处理符号Project Buildoption Compiler Processor DefineSymbols DEBUG FILEIO Tab键 编译命令中会新增一个 d FILEIO RebuildAll 之后 改变的选项才会生效 26 使用断点与观察窗 检查某个变量在程序运行中的取值变化情况 或F9 出现红点来标记 View WatchWindow CCS弹出一个独立的区域 用于显示运行时所观察的变量值 27 显示当前执行的函数的所有局部变量 Watch1 Name列的表达式图标 输入要观察的变量名 回车 观察窗口 观察dataIO的值 观察结构变量 str 28 利用CCS调试应用程序 程序的调试过程和优化过程一般会占用整个开发周期60 以上的时间 调试有非常多的技巧和手段 但都必须要有良好的工具才能实现 CCS除了提供大多数通用开发环境都具备的基本调试工具 存储器与寄存器的查看与修改 断点 性能分析 外 还提供在嵌入式开发中非常游泳的事件检测 探针等工具 以及在信号处理类应用能够中非常实用的图形化工具 为了调试应用程序 首先必须将程序加载到目标系统中 29 程序调试的基本操作 使用反汇编窗口 View disassembly使用存储器窗口 View memory观察CPU寄存器 View registor加载COFF文件单步执行运行复位处理器 Debug resetCPU内存操作变量操作编辑命令行观察调用堆栈 View callstack保存和恢复工作空间 30 存储器 变量的查看与修改 调试工具的最基本功能之一查看和修改寄存器 程序存储器 数据存储器 I O存储器1 CPU寄存器的查看与修改 debug halt 停止程序运行 view register coreregisters 工作区底部打开一个CPU寄存器窗口 其中列出了CPU所有寄存器的值 debug run 程序继续运行CPU寄存器的值肯定会发生改变 只有再用halt指令停止程序运行后才会看到发生变化的寄存器以红色显示 修改寄存器的值 方法1 双击想要修改的寄存器方法2 右击 快捷菜单 editregister 命令 31 各种显示都是在程序运行停止或碰到断点 探针点等地方才会刷新 32 2 外设寄存器的查看与修改 在DSP芯片内部有各种外设 如定时器 SDRAM McBSP等 对外设的控制和运行都是以读写外设控制寄存器的方式完成的 view register Peripheralregisters 33 3 存储器的查看与修改 debug halt 停止程序运行 view memory 打开 memorywindowoption 对话框 修改存储器的值 方法1 双击想要修改的存储器单元方法2 edit memory edit 给出一个与此段存储器内容相关的名字 输入需要显示的存储区的起始地址 输入显示数据的Q值 选择显示数据的格式 以IEEE格式显示浮点数 希望使用参考缓冲区 位于主机上CCS的内部缓冲区 用做DSP中一段存储器块的镜像 34 4 变量的查看与修改 变量具有特定的数据结构 而不仅仅是一串二进制数 快速查看变量值 将鼠标移到源文件的某一变量处停留 会出现一个小小的工具提示窗口 快速查看和修改变量值 右击 快捷菜单 quickwatch 命令 view watchwindow 打开变量查看和修改窗口底部有2个标签 watchlocals 和 watch1 watch1 的操作 添加变量 修改标签名字 35 断点工具的使用 使用断点是程序调试的基本手段CCS的断点工具包括软件断点 硬件断点程序运行过程中如果碰到断点 就会暂时停止运行 回到调试状态 用户可以通过查看变量 图形等方法 发现程序中的错误1 软件断点 最常用1 在已经被加载到程序存储器中的程序的某一行上设置断点 2 断点的设置 将光标移到源程序文件的某一行右击 快捷菜单的 togglebreakpoint 工具栏的 断点 按钮debug breakpoint 本行左边会出现红色的断点标记 36 3 重新启动程序运行 debug run程序停在断点处 此行左边显示一个黄色小箭头自动刷新寄存器 存储器 变量查看窗口和图形显示窗口4 注意 软件断点实际上通过修改断点处的指令来达到中断运行的目的 断点必须位于程序存储器 而且必须是在可由CCS修改的存储器如RAM中为了不破坏处理器流水线 不要将断点设置在属于跳转语句的指令上 不要将断点设置在块重复语句的倒数第1条和第2条指令上 37 2 硬件断点 1 不改变目标程序 适合于在ROM存储器中设置断点或设置存储器存取断点2 将硬件仿真器通过JTAG接口与主机相连 探针点 Probepoint 工具的使用 38 以sinwave pjt为例 ti tutorial target sinewave sinwave pjt 39 1 Project Build 完成编译连接 得到 out文件 注意在Build输出窗口中应显示没有错误和警告 2 File Loadprogram 加载程序 然后在合适的目录下选择打开sinewave out文件 程序加载后会自动打开一个反汇编窗口 绿色箭头指向 c int00 c int00不是用户代码的一部分 而是C语言引导代码的入口 C语言程序都会在连接时自动加上引导代码 这些引导代码一般来说不需要调试 需要调试的是用户代码 对C语言程序来说 就是从main 函数开始的地方 40 3 Debug gomain 自动打开sine c源文件窗口 并有黄色箭头停在main 函数入口处 从这里开始就可以调试用户程序 4 Debug run 程序开始自由运行 由于没有连接I O和图形显示 此时程序虽然在运行 但是看不到任何处理结果 这是因为在mian 函数中有一个无限循环 程序会一直在此循环中运行 5 Debug Halt 中断程序的运行 但是底部会打开一个stdout标准输出窗口 并在其中输出 SineWaveexamplestarted 这是由main 函数中的puts SineWaveexamplestarted n 语句运行的结果 41 探针点 Probepoint 工具的使用 程序运行到探针点处会执行特定的操作 刷新图形 文件I O 文件I O可以完成目标系统的DSP存储器 程序 数据或I O存储器 与主机上的文件之间的数据交换1 重新开始调试程序 debug restart2 切换到源程序窗口 将光标移到某一行 设置探针点右击 快捷菜单的 toggleProbepoint 工具栏的 探针点 按钮debug Probepoint3 File fileI O fileI O针对DSP而言1 文件输入从一个数据文件读取波形到DSP内部的缓冲区 currentBuffer input 长度为100字 本行左边会出现兰色的菱形探针点标记 42 43 设置主机上的什么文件与DSP的什么存储器交换数据 在程序中的什么地方交换数据 输入和输出是针对DSP而言的 2 在Fileinput选项卡下 Addfile ti tutorial target sinwave sine dat 在Address中填入DSP中缓冲区的地址 currentBuffer input 在length中填入长度 100 Addprobepoint probepoint Connect下拉列表框中选择sine dat 按 确定 后发现probe中显示 connected Wraparound 读到文件结尾时继续从文件头读取 44 3 运行程序 debug run 检查变量currentBuffer 可以发现input数组中的值已经发生变化 currentBuffer input中的数据也可以以波形显示 45 在程序的调试过程中 可以用这样的方法给DSP程序一个特定的输入数据 来测试程序的功能 这样的数据一般是主机上变成产生的 具有特定的格式 View watchwindow watch1 46 4 CCS的FileI O可以使用两类数据文件 1 文本格式 dat sine dat 2 二进制格式 out 与DSP上的可执行程序的格式一样 为COFF commonObjectFileFormat 格式的目标文件 文件中的内容以段的形式保存 可执行程序中有代码段 数据段 文本格式的数据文件中只有一个数据段 47 图形工具的使用 在CCS中可以将数据按图形化方式显示出来 比较直观CCS提供了丰富的图形可视化工具 用于完成时域波形 频谱 图象 星座图 眼图等的显示数据准备好后选择View Graph 设置相应的显示类型和显示参数 即可按希望的图形类型显示数据 View Graph 48 l显示类型 DisplayType 单击下拉菜单 点击所需的显示类型 则Time Frequency对话框 参数设置 相应随之变化 l视图标题 GrphTitle 定义图形视图标题 l起始地址 StartAddress 定义采样缓冲区的起始地址 当图形被更新时 采样缓冲区内容亦更新显示缓冲区内容 此对话栏允许输入符号和C表达式 当显示类型为 DualTime 时 需要输入两个采样缓冲区首地址 采集缓冲区尺寸 AcquisitionBufferSize 用户可以根据所需定义采样缓冲区的尺寸 例如当一次显示一帧数据时 则缓冲区尺寸为帧的大小 若希望观察串行数据 则定义缓冲区尺寸为1 同时允许左移数据显示 l索引递增 IndexIncrement 定义在显示缓冲区中每隔几个数据取一个采样点 49 l显示数据尺寸 DisplayDataSize 定义显示缓冲区大小 取决于 显示类型 选项 对时域图形 显示缓冲区尺寸等于要显示的采样点数目 并且大于等于采样缓冲区尺寸 若显示缓冲区尺寸大于采样缓冲区尺寸 则采样数据可以左移到显示缓存显示 对频域图形 显示缓冲区尺寸等于FF帧尺寸 取整为2的幂次 lQ值 Q Value 采样缓冲区中的数始终为16进制数 但是它表示的实际数取值范围由Q值确定 Q值为定点数定标值 指明小数点所在的位置 Q值取值范围为0 15 假定Q值为xx 则小数点所在的位置为从最低有效位向左数的xx位 l采样频率 SamplingRate Hz 对时域图形 此参数指明在每个采样时刻定义对同一数据的采样数 假定采样频率为xx 则一个采样数据对应xx个显示缓冲区单元 由于显示缓冲区尺寸固定 因此时间轴取值范围为0 显示缓冲区尺寸 采样频率 对时域图形 此参数定义频率分析的样点数 频率范围为0 采样率 2 50 l数据绘出顺序 PlotDataFrom 此参数定义从采样缓冲区取数的顺序为从左到右 采样缓冲区的第一个数被认为是最新或最近到来数据 从右到左 采样缓冲区的第一个数被认为是最旧数据 l左移数据显示 Left ShiftedDataDisplay 此选项确定采样缓冲区与显示缓冲区的哪一边对齐 可以选择此特性允许或禁止 若允许 则采样数据从右端填入显示缓冲区 每更新一次图形 则显示缓存数据左移 留出空间填入新的采样数据 注意显示缓冲区初始化为0 若此特性被禁止 则采样数据简单覆盖显示缓存 l自动定标 Autoscale 此选项允许Y轴最大值自动调整 若此选项设置为允许 则视图被显示缓冲区数据最大值归一化显示 若此选项设置为禁止 则对话框中出现一新的设置项 MaximumY Value 设置Y轴显示最大值 51 l直流量 DCValue 此参数设置Y轴中点的值 即零点对应的数值 对FFT幅值显示 此区域不显示 l坐标显示 AxesDisplay 此选项设置X Y坐标轴是否显示 l时间显示单位 TimeDisplayUnit 定义时间轴单位 可以为秒 s 毫秒 ms 微秒 s 或采样点 l状态条显示 StatusBarDisplay 此选项设置图形窗口的状态条是否显示 l幅度显示比例 MagnitudeDisplayScale 有两类幅度显示类型 线性或对数显示 公式为20log X l数据标绘风格 DataPlotStyle 此选项设置数据如何显示在图形窗口中 Line是数据点之间用直线相连 Bar是每个数据点用竖直线显示 52 l栅格类型 GridStyle 此选项设置水平或垂直方向底线显示 有三个选项 NoGrid 无栅格 ZeroLine 仅显示0轴 FullGrid 显示水平和垂直栅格 l光标模式 CursorMode 此选项设置光标显示类型 有3个选项 NoCursor 无光标 DataCursor 在视图状态栏显示数据和光标坐标 ZoomCursor 允许放大显示图形 方法 按住鼠标左键 拖动 则定义的矩形框被放大 53 程序剖析工具 Profiler CCS提供了代码剖析工具Profiler 1 统计某个函数或者某一块代码使用了多少个时钟周期 从而对关键函数进行优化 2 统计程序运行中的中断 子程序调用 程序分支 返回 指令预取等信息 要进行代码优化 首先必须找到程序中的瓶颈所在 即占用了大部分CPU时间的代码 代码优化是程序开发过程中非常重要的步骤 Profiler的使用打开工程 Build通过 装载 out文件 CCS自动打开反汇编窗口 并停在c int00处 54 一 剖析时钟及其设置 剖析时钟是程序在剖析状态下 程序连续或者单步运行时的时钟周期的计数 随着程序的运行相应增加 剖析时钟可以被开启也可以被关闭 Profiler EnableClock 在剖析过程中 剖析时钟的查看 修改 Profiler ViewClock 剖析时钟窗口 窗口中显示了时钟的计数值 双击时钟的计数值 复位置0 55 剖析时钟的设置 Profiler ClockSetup 选择需要剖析的事件 填入执行单周期指令的时间 ns 输入流水线校正值 在整个剖析过程中 剖析时钟的值不停累加 除非主动手工复位置0 每次运行时遇到断点或单步停下 剖析时钟自动置0 所以在自动复位方式下得到的剖析时钟数据并不正确 一般使用手工复位 56 二 剖析代码的设置 代码的剖析过程是以剖析会话 session 的形式组织的 Profiler StartNewSession 输入剖析会话的名字 为每个剖析会话取易于辨别的名字 Files 以源文件列出统计数据 Functions 用于剖析程序中的函数 Ranges 用于剖析一段连续的代码 Setup 用于设置开始点和结束点 用于剖析不连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园应急知识培训心得
- 学前语音考试试题及答案
- 农业植物试题及答案
- 校园安全知识培训课件体会
- 治安防暴笔试题及答案
- 济南市中考试题及答案
- 瑞安地产面试题及答案
- 煤矿通风考试题及答案
- 重庆保安员资格考试试题及答案
- 新华书店考试试题及答案
- 2025-2030中国浮动生产存储和卸载(FPSO)行业市场现状供需分析及投资评估规划分析研究报告
- 2025年安徽省住房和城乡建设系统职业技能大赛(排水管道工)备考题库(含答案)
- 教师选聘笔试题目及答案
- 反渗透超滤计算表
- 2023中国铁建投资集团有限公司公开招聘笔试参考题库附带答案详解
- 2025年乡村全科医师考试模拟试题及答案
- 监理文件档案资料整编及管理细则
- 公司违规经营责任追究制度与实施
- 异位肾患者护理查房
- 小学二年级家庭教育指导
- 2025-2030年中国波斯地毯行业深度研究分析报告
评论
0/150
提交评论