。
sine.h 这是 sine.c 包含的头文件, 用来定义主程序中使用的结构体和常数。
sinewave.cmd 是本工程的命令连接文件。
vectors.asm 这是定义中断向量的表文件。
2)在 CCS 中添加源文件、连接命令文件和运行支持库文件到该工程中。
3.2 查看源代码,分析程序流程和函数的调用关系。
打开 sine.c 文件,注意以下几点: 1) 在显示一条消息以后,主函数进入了一个无限循环。
在这个循环中,调用了 dataIO 和 processing 两个函数。
2) processing 函数把每一个输入值扩大 gain 倍后送至输出缓冲区。
3) dataIO 函数除了返回并没有做任何事情,可以在该函数中增加代码实现从外设端口读入数据或向外设端口输出数据。
在本实验中,将使用探点(ProbePoint)将主机上文件中的数据读取到 currentBuffer.input 数组中。
3.3 为文件的 I/O 添加探点 探点是在算法开发中十分有用的工具。
使用探点可以实现如下的功能: 把主机电脑文件中的数据传输到目标板上的缓冲区。
把目标板上缓冲区内的数据传输到主机上的文件中。
更新窗口,比如一个图表等。
探点和断点有些相似,都是通过中止目标板来完成它们的功能。
但是,它们也有所不同。
探点停止目标板的运行,完成一个设定的行为,然后将继续目标板的执行过程。
而断点停止 CPU 的工作后,直到被手动继续后才重新开始它的执行过程。
另外,探点允许输入输出文件自动的被执行,而断点不行。
本节显示了如何使用探点向目标板传送数据。
并且使用了一个断点在运行到探点的时候来更新所有打开的窗口。
窗口中包括输入和输出的窗口。
1) 选择 Project→Rebuild All 或者单击 。
2) 选择 File→Load Program,将 sinewave.out 加载到 DSP 中。
3) 在 sine.c 中 dataIO 这一行设置一个断点。
4) 单击 ,在 dataIO这一行前面出现一个蓝色菱形标志,表示在这一行插入探点。
5) 选择 File→FileI/O。
出现了文件 I/O 对话框,这样你就可以选择输入输出的文件。
选择 AddFile,选择 sine.dat 文件,添加到 FileI/O 的对话框中。
这时出现了一个 sine.dat 的窗口,当你运行程序时,你可以用这个窗口开始,停止,回放数据文件。
在 File I/O 对话框中,把 Address 改为“currentBuffer.input”,把Length 改为“100”,在 WrapAround 选项前打钩。
如下图所示: 其中,Address 栏指出了文件中的数据将置于何处。
Length 栏指每一次程序运行到探点时从数据文件中读取数据的长度。
Wrap Around 选项使 CCS 循环从文件中读取数据。
这就使数据文件被视为连续的数据流。
6) 单击 Add Probe Point,,出现 Break/Probe/Profile 对话框。
选中在上面步骤中建立的探点,在 Connect 列表中选取 sine.dat 文件。
单击 Replace,这时探点和 sine.dat 文件就建立了连接。
如下图所示。
7) 单击确认完成设置。
3. 4 显示图表选择 View→Graph→Time/Frequency。
在弹出对话框中进行下列修改: Display Type 中选择 Dual Time,因为需要同时显示输入和输出波形; Graph Title 改为 Input Output Buffers; Start Address-upper display 改为 currentBuffer.input; Start Address-lower display 改为 currentBuffer.output; Acquisition Buffer Size 改为 100; Display Data Size 改为 100; DSP Data Type 改为 16-bit signed integer。
这样就为输入和输出缓冲区建立了一个波形观察窗口。
3. 5 采用 Animate 方式运行程序和观察图表 1) 单击 Animating 运行程序。
Animate 和 Run 命令有些类似,它使目标板一直运行直到遇到一个断点,这时目标板被停止, 和 所有的窗口被更新。
run 命令不同的是,Animate 继续运行程序直到下一个断点,这样的过程直到手动停止目标板的工作。
2) 观察上节建立的图形中显示的输入输出波形,注意它们之间的差别。
每次 遇 到 探 点 , CCS 将 从 sine.dat 文 件 中 得 到 100 个 值 , 并 将 其 写 入currentBuffer.input 的地址中。
3.6 更改 gain 的值 在 sine.c 文件 中, processing 函数将输入缓冲区的每一个值与 gain 相乘,并且把结果保存在输出缓冲区。
gain 初始被赋值为 INITIALGAIN,其中常数INITIALGAIN 在 sine.h 中定义。
可以使用观察窗口在程序调试和运行中修改gain 的值。
1) 选择 View→Watch Window。
在 watch 窗口中添加 gain 变量,观察其值,如下: 2) 如果你已经停止了目标板,单击重新运行程序 3) 在 Watch 窗口中改变 gain 的值,并观察输出波形的变化。
实验报告要求通过实验学习,请在实验报告中回答下列问题(1)简述 CCS 环境下 DSP 软件的开发流程。
(2)简述编译器compiler、汇编器assembler和连接器linker等软件开发工具的功能。
(3)简述在 DotProd 实验中,当定义了 ASM_FUNC 符号后,出现了什么样的错误,如何进行错误的定位和修正。
(4)简述在 SineWave 实验中,如何利用 Memory Window 调试工具查看currentBuffer.input 和 currentBuffer.output 数组的内容。
(5)观察连接命令文件 dotprod.cmd,简述该文件定义 DSP 系统的存储器配置和在连接时各个段section在存储器中的分布。
(6)简述本次实验的收获和建议。
上一篇:
ServiceMix_一个开源ESB的剖析与应用
下一篇:
试论APP广告在手机中的应用