(2) 下载程序:执行File?Load Program ,在随后打开的对话框中选择刚刚建立的C:\\DspProject\\01_volume\\\\Debug\\volume.out文件。
(3) 设置软件调试断点:在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()行上,单击鼠标右键选择Toggle Breakpoint或按F9设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。
(4) 利用断点调试程序:选择Debug?Run或按F5运行程序,程序会自动停在main()函数上。
①按F10执行到write_buffer()函数。
②再按F8,程序将转到write_buffer函数中运行。
③此时,为了返回主函数,按shift-F7完成write_buffer函数的执行。
④再次执行到write_buffer一行,按F10执行程序,对比与F8执行的不同。
提示:在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使
用Debug?Go main命令,上述实验中的使用的是较为繁琐的一种方法。
5.使用观察窗口
(1) 执行View?Watch Window打开观察窗口。
(2) 在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“Quick Watch”,CCS将打开Quick Watch窗口并显示选中的变量。
(3) 在volume.c中,选中变量num,单击鼠标右键,选择“Add to Watch Window”,CCS将把变量添加到观察窗口并显示选中的变量值。
(4) 在观察窗口中双击变量,则弹出修改变量窗口。此时,可以在这个窗口中改变变量的值。
(5) 把str变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。
(6) 把str变量加到观察窗口中;执行程序进入write_buffer函数,此时num变量超出了作用范围,可以利用Call Stack窗口察看在其他函数中的变量: ① 选择菜单View?Call Stack打开堆栈窗口。
② 双击堆栈窗口的main()选项,此时可以察看num变量的值。 6.文件输入/输出
下面介绍如何从PC 机上加载数据到DSP 上。用于利用已知的数据流测试算法。
5
在完成下面的操作以前,先介绍Code Composer Studio 的Probe(探针)断点,这种断点允许用户在指定位置提取/注入数据。Probe 断点可以设置在程序的任何位置,.当程序运行到Probe 断点时,与Probe 断点相关的事件将会被触发,当事件结束后,程序会继续执行。在这一节里,Probe 断点触发的事件是:从PC 机存储的数据文件中的一段数据加载到DSP 的缓冲区中。注:在CCS3.0 以上版本中Probe 断点被合并到break 断点中断了。
(1)在真实的系统中,read_signals 函数用于读取A/D 模块的数据并放到DSP 缓冲区中。在这里,代替A/D 模块完成这个工作的是Probe 断点。当执行到函数read_signals 时,Probe断点完成这个工作。
①在程序行read_signals(input);上单击鼠标右键选择“Toggle software breakpoint”,设置软件断点。
②再在同一行上单击鼠标右键,选择“software breakpoint”,“edit”来设置断点。此时打开了一个新的窗口。
7.图形功能简介
使用CCS的图形功能可检验上一节的结果。首先进行下面设置操作:
6
- 在弹出的图形窗口中单击鼠标右键,选择“CleAe Display”。
③修改 ① 选择 菜单 名称 ④输入数据起始地址 ⑤输入数据个数 ⑥修改数据②选择此菜单项 ⑦单击按钮完成设置 类型
- 按F12运行程序.观察input窗口的内容。 8.程序分析及更改程序。
(1) 查看源文件
* 双击工程管理窗中的“volume.c”文件,可以查看程序内容。可以看到,用标准C语言编制的程序,大致分成几个功能块:
- 头文件。描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。具体包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。比如:如果程序中使用了printf函数,它是个标准C提供的输入/输出库函数,选中“printf”关键字,按Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么在此部分程序中需要增加一条语句:#include
- 子程序调用规则。这部分描述用户编制的子程序的调用规则。也可以写到用户自己编制的.h文件中去。
- 主程序。即main()函数。它可分为两部分:变量定义和初始化部分、主循环部分。主循环部分完成程序的主要功能。
- 用户自定义函数。
这个程序是一个音频信号采集、处理输出的程序。
* 双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。 (2)修改write_buffer函数。 修改write_buffer函数,使输出波形为输入波形的两倍。 利用图形功能观察输入波形和输出波形。
10.退出CCS
五.实验结果分析
7
1)分析程序结构,画出程序流程图,指出该程序的功能
2)打开.CMD文件,说明本程序中存储器的配置情况。说明程序和数据在内存中的位置。
2)通过图形窗口,观察输入、输出波形,并记录之。
3)可采用哪几种方法调整增益的大小?观察输入、输出波形,并记录之
4)在观擦窗口记录四个变量inp_buffer、out_buffer、input、output四个变量的Value和Type 六、思考题:
1)举例说明断点和探针的异同点。 七、写实验报告
实验报告是对所做实验的全面总结,报告中应对实验的目的、原理、内容、数据、数据处理及分析、结论等各项有清楚的表述。表述条理清晰,文句精炼、结果明确。特别强调的是数据处理及分析,这是实验报告中比较重要的部分。
8
实验二、数据存取实验
一. 实验目的
1.了解DSP 5416的内部存储器、扩展存储器空间分配及寻址方式的应用 2.学习用CCS2.0修改、填充DSP内存单元的方法 3.学习用汇编语言操作DSP5416内存空间的指令
二. 实验设备
同实验一
三. 说明
汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C语言编制的程序也稍有不同。其区别为:
(1) 汇编语言程序在执行时直接从用户指定入口开始,常见的入口标号为“stAet”,而C语言程序在执行时,先要调用C标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序main()运行。
(2) 由于CCS的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。 四。实验内容
完成基于dsp的软件设计 (1)建立工程文件 (2)设置工程文件
⑥单击选择 ⑤单击此卡初始化模式 片设置连接 参数
⑦输入程序
入口地址
⑧单击完成
设置
9