资源描述
福计算机与信息学院
信息工程类
实验报告
课程名称:
DSP技术
姓 名:
系:
电子信息工程
专 业:
电子信息工程
年 级:
学 号:
指导教师:
职 称:
讲师
2011年 11月21日
实验项目列表
序号
实验项目名称
成绩
指导教师
1
实验1 汇编语言、体系结构和CCS
2
实验2 C6000流水线和C运行时环境
3
实验3 C6000代码优化
4
实验4 利用BIOS创建工程及性能分析
5
实验5 利用BIOS调试程序
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
福建农林大学计算机与信息学院信息工程类实验报告
系: 电子信息工程 专业: 电子信息工程 年级: 2010级
姓名: 学号: 实验课程:
实验室号:___田C513 实验设备号: 实验时间: 2013.10.18
指导教师签字: 成绩:
实验1 汇编语言、体系结构和CCS
1.实验目的和要求
1.熟悉DSP软件开发环境CCS的使用。
2.熟悉CCS中的C语言编程。
3.了解C6000DSP的汇编语言。
2.主要仪器设备(实验用的软硬件环境)
安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg
3.操作方法与实验步骤
1、配置CCS
打开桌面程序“Setup CCS 2 ('C6000)”,采用simulator配置文件sim6201_simulator.cfg,配置完成后保存。
2、实验内容1操作步骤:
(2)打开CCS:
①打双击桌面程序:Setup CCS 2 ('C6000),配置CCS,选C6xxx;
②配置好后,打开桌面程序:CCS 2 ('C6000);
(3)打开工程文件:
①把文件夹tutorial\sim62xx\hello1拷贝到myproject下;
②单击菜单Project->Open,打开hello.pjt,选择支持库rts6200.lib
(4)编译程序:菜单Project->build或rebuild
(5)加载程序:菜单File->Load Program,选择Debug下的.out文件装入目标板
(6)go main:菜单Debug->go main,执行到main()处暂停
(7)执行程序:Debug->Run
(8)设置断点:Toggle breakpoint
(9)单步执行:Step(两种:C和汇编)
(10)观察变量:菜单Edit->Variable
(11)观察存储器:菜单Edit->Memory
(12)测试函数执行的CLK:Profiler->View Clock
(13)混合代码显示:View->Mixed Source/ASM
3、自行完成实验内容2的操作。
4、自行完成实验内容3的编程及编译、目标程序的加载和执行,观察c = a*b对应的汇编代码,并解释该汇编代码。
4.实验内容及实验数据记录
1.新建一个project,把tutorial\sim62xx\hello1的文件添加进去,完成其功能。练习CCS的基本操作:加载程序、go main、执行程序、设置断点、单步执行、观察变量、观察存储器、测试函数执行的CLK、混合代码显示。
2.打开tutorial\sim62xx\volume1的项目文件,完成图形方式观察变量、设置探点、GEL控制变量、FILE IO、动画显示输入输出的功能。然后单步执行load.asm,观察C代码调用、寄存器的变化、测试函数执行时间、如何循环和返回C代码。
3.解释如何在C6201上实现32bit int乘32bit int, 结果是32 bit int的过程:在刚才的hello1中设置3个全局变量int a = 0x10008; int b = 56; int c;在main函数中执行语句 c = a * b; build后加载执行程序, 混合代码显示 c = a*b对应的汇编代码,解释之。
5.实验程序或实验数据处理与分析
1.配置CCS
2.打开CCS
(1)打开工程文件:
①把文件夹tutorial\sim62xx\hello1拷贝到myproject下;
②单击菜单Project->Open,打开hello.pjt,选择支持库rts6200.lib
(2)编译程序:菜单Project->build或rebuild
(3)加载程序:菜单File->Load Program,选择Debug下的.out文件装入目标板
(4)go main:菜单Debug->go main,执行到main()处暂停
(5)执行程序:Debug->Run
(6)设置断点:Toggle breakpoint
(7)单步执行:Step(两种:C和汇编)
(8)观察变量:菜单Edit->Variable
(9)观察存储器:菜单Edit->Memory
(10)测试函数执行的CLK:Profiler->View Clock
(11)混合代码显示:View->Mixed Source/ASM
3. 自行完成实验内容3的编程及编译、目标程序的加载和执行,观察c = a*b对应的汇编代码,并解释该汇编代码。
6.质疑、建议、问题讨论
通过此次实验,使我熟悉了DSP软件开发环境CCS的使用,熟悉CCS中的C语言编程,并且初步了解C6000DSP的汇编语言。
福建农林大学计算机与信息学院信息工程类实验报告
系: 电子信息工程 专业: 电子信息工程 年级:
姓名: 学号: 1 实验课程:
实验室号:____ __ 实验设备号: 实验时间:
指导教师签字: 成绩:
实验2 C6000流水线和C运行时环境
1.实验目的和要求
1.熟悉DSP软件开发环境CCS的使用。
2.熟悉C6000中的C运行时环境。
2.主要仪器设备(实验用的软硬件环境)
安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg
3.操作方法与实验步骤
1)打开ccs6000的C运行时的环境;
2)双击桌面程序Setup CCS2(6000),配置CCS,选择C6xxx;
3)配置好后,打开桌面程序CCS2(6000);
4)把文件夹tutorial\sim62xx\hello1拷贝到myproject下;
5)单击菜单project->open,打开open.pjt,选择文件库rts6200.lib;
6)将汇编代码段加到hello.asm,再在hello.c中加入汇编子函数的C语言程序,进行编译、加载生成.out文件,执行产生结果。
4.实验内容及实验数据记录
采用simulator配置文件sim6201_simulator.cfg
1. Hello1中添加1个C文件sop_c.c ,该文件是一个乘法累加的子函数sop_c (short * a, short * x, int * y, int n),然后在main函数中调用。不选择任何优化选项。用混合代码显示,在汇编层次执行sop_c子函数,观察调用、执行和返回的过程。
2.用汇编语言实现两个数组a(n)和x(n)的乘法累加功能。汇编文件名为:sop_asm.asm,主函数C中调用格式:int sop_asm(short * a, short * x, int n)。
5.实验程序或实验数据处理与分析
1)在Hello1中添加文件sop_c.c
在mian函数中调用:
2)在Hello1中添加文件sop_asm.asm
在main函数中调用
3)实验处理:
6.质疑、建议、问题讨论
由于对c6000的使用还不是太熟悉,所以操作中还是不太熟练,而且在编写代码时也有些不必要的错误,但进过细心的观察,最终找到错误并改正,今后应该注意,此次实验使我熟悉DSP软件开发环境CCS的使用,熟悉C6000中的C运行时环境。
福建农林大学计算机与信息学院信息工程类实验报告
系: 电子信息工程 专业: 电子信息工程 年级:
姓名: 学号: 实验课程:
实验室号:__ __ 实验设备号: 实验时间:
指导教师签字: 成绩:
实验3 C6000代码优化
1.实验目的和要求
1.熟悉DSP软件开发环境CCS的使用。
2.掌握CCS中的C语言编程。
3.熟悉C6000DSP的代码优化过程。
2.主要仪器设备(实验用的软硬件环境)
安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg
3.操作方法与实验步骤
1)打开ccs6000的C运行时的环境;
2)双击桌面程序Setup CCS2(6000),配置CCS,选择C6xxx;
3)配置好后,打开桌面程序CCS2(6000);
4)把文件夹tutorial\sim62xx\hello1拷贝到myproject下;
5)单击菜单project->open,打开open.pjt,选择文件库rts6200.lib;
6)将汇编代码段加到hello.asm,再在hello.c中加入汇编子函数的C语言程序,进行编译、加载生成.out文件,执行产生结果。
4.实验内容及实验数据记录
1.采用simulator配置文件sim6201_simulator.cfg,写手工优化的sop_asm.asm程序:在实验二的基础上实现16bit数组的乘法累加的函数,并手工优化和采用软件流水优化。要求:
(1)使用LDW和MPY,MPYH指令;对于C64可以使用扩展乘法指令。
(2)画出相关图和模迭代间隔表。
5.实验程序或实验数据处理与分析
1. 实现16位数组乘法函数
1)在hello.c中添加文件sop_c.c
2)在main函数中的调用
3)编译运行结果
2.优化
1)线性汇编优化sop_sa.sa
2)在main函数中的调用
3)编译运行结果
4)汇编优化sop_asm.asm
5)在main函数中的调用
6)编译运行结果
6.质疑、建议、问题讨论
通过此次实验,进一步熟悉DSP软件开发环境CCS的使用,也知道并且熟悉C6000DSP的代码优化过程,但还是发现自己在编写改进程序上能力不足,今后一定加强这方面的练习。
福建农林大学计算机与信息学院信息工程类实验报告
系: 电子信息工程 专业: 电子信息工程 年级:
姓名: 学号: 实验课程:
实验室号:__ _ 实验设备号: 实验时间:
指导教师签字: 成绩:
实验4 利用BIOS创建工程及性能分析
1.实验目的和要求
1.通过创建基于DSP/BIOS的Hello World工程实例,熟悉CCS环境下DSP/BIOS软件的创建和使用方法。
2.熟悉在CCS环境下对代码的运行效率和性能作出评估的工具和方法。
3.实验要求
完成实验内容,运行成功,得到输出结果,填写以下表格,并作出对比分析。
运行一次所需要的指令周期数(单位:个)
put()函数
1700
LOG_prinrt()函数
36
printf()函数
2530
2.主要仪器设备(实验用的软硬件环境)
安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg
3.操作方法与实验步骤
第一步:打开已有工程并运行
1、 在C:\ti\myprojects目录里面创建hellobios目录。
2、 把C:\ti\tutorial\sim64xx\hello1里的全部文件拷贝到这个新的目录下面。
3、 如果CCS还没有启动,启动CCS环境,Setup里面设置为C64xx Device Simulator。
4、 选择Project->Open,打开这个工程,工程的项目文件目录为:C:\ti\myprojects\hellobios,项目名称是hello.pjt。
5、 若提示以下错误,选择Browse,选择目录:C:\ti\C6000\cgtools\lib\rts6400.lib,打开工程。
6、 编译,运行工程,查看结果,应该是输出hello world字符。
第二步:评测stdio.h中输出函数put()的执行时间(周期数)
1、 新建一个Profiler,选择Profiler->Start New Session,名称为MySession,确定。
2、 出现Session窗口,选择Range栏。如下所示,出现hello.out。
3、 用鼠标拖曳,高亮put()函数,如下所示:
4、 按住鼠标,拖曳到Range窗口里面,出现:
5、 重新Load程序,运行,得到运行结果如下:
6、 结论:采用put()函数输出一次的指令周期数是:1700。
7、 采用同样方法,测试printf()函数的指令周期数目:
8、 记录put()函数和printf()函数需要的指令周期数到表格,用来和下面实验的结果对比。
第三步:编辑源代码
1、 在CCS里,关闭hello.c窗口。
2、 用Windows Explorer把C:\ti\tutorial\sim64xx\hello2目录里的hello.c文件拷贝到C:\ti\myprojects\hellobios目录。按Yes覆盖原来已经存在的hello.c文件。hello2例中采用DSP/BIOS函数来替代hello1例中的标准C函数的put()输出函数。
3、 双击hello.c文件,在Project View窗口打开源文件。
4、 注意新代码的几点问题:
#include <std.h>
#include <log.h>
#include "hellocfg.h"
Void main()
{ LOG_printf(&trace, "hello world!");
/* fall into DSP/BIOS idle loop */
return;
}
5、 hello.c文件首先包含了std.h和log.h两个头文件。程序如果想使用DSP/BIOS API那它必须包含std.h文件以及程序中用到的模块的对应头文件。log.h头文件中定义了LOG_Obj结构以及LOG模块用的API函数的声明。std.h文件必须在其它的DSP/BIOS模块头文件之前声明。其它模块的头文件声明顺序不重要。
6、 代码接下来要包含hellocfg.h头文件,这个文件在创建并保存DSP/BIOS配置的时候创建的。下一个步骤我们就来创建这个文件。这个文件包含了配置文件夹里面的DSP/BIOS objects的外部声明。
7、 hellocfg.h文件也包含了配置文件里定义的DSP/BIOS模块的头文件。既然std.h和log.h文件都会被hellocfg.h文件引用,那么hello.c文件的头两行时间上是冗余的。但是这样也不会有任何问题。
8、 调用LOG_printf的代码实际上是传递LOG object对象(&trace)和 hello world消息的地址。
9、 最后main()函数返回,这个函数导致程序进入DSP/BIOS的Idle循环。在这个循环中,DSP/BIOS等待线程,例如软件中断和硬件中断发生。在该例中,没有其它线程发生,所以会一直处于IDLE状态。
第四步:创建DSP/BIOS的配置文件
1、 选择File->New->DSP/BIOS Config。
2、 选择一个目标模板,根据芯片选择,我们选c64xx.cdb,然后按OK。观察configuration窗口,左边窗口是模块的列表,可以通过点击模块的“+”号打开下级目录,也可以按右键新建一个对象或查看一个建立好的对象的属性。
3、 点击Instrumentation目录左侧的+号,显示模块的列表。
4、 邮局选择LOG—Event Log Mannger然后右击选择Insert LOG。这个步骤是创建一个LOG对象,名称为LOG0。
5、 右键选中LOG0对象,然后右击选择Rename。把LOG对象改名为trace.
6、 如果你在使用软件仿真器,需要设置RTDX模式为Simulator。
选择RTDX—Real-Time Data Exchange Settings,右键,选择属性,打开对话框:
将RTDX Mode设定为Simulator即可。如果有目标板,可以选择JTAG。
7、 选择File->Save。保存到当前目录(通常是C:\ti\myprojects\hellobios)命名为hello.cdb,保存这个配置后,会生成以下6个文件:
Hello.cdb 保存配置的内容
Hellocfg.cmd 链接command文件
Hellocfg.h 包括DSP/BIOS模块头文件和配置文件中用到的外部对象、变量的声明
Hellocfg.s62 DSP/BIOS设置的汇编语言源文件
Hellocfg.h62 Hellocfg.s62引用到的汇编语言源文件
Hellocfg_c.c Chip Support Library(CSL)代码结构和设置
第五步:添加DSP/BIOS文件到工程项目
1、 选择Project->Add Files to Project,在Files of type栏目里选择Configuration File(*.cdb),选中hello.cdb文件后,点Open。注意添加后,hello.cdb出现在Porject View窗格下目录DSP/BIOS Config里。此外,CCS自动添加Hellocfg.s62和Hellocfg_c.c文件到生成的目录下。
2、 输出文件名必须和.cdb文件一致。可以通过Project->Build Options打开Linker标签查看,确认Output Filename内容是.\Debug\hello.out,按OK确定。
3、 再次选择Project->Add Files to Project,选对Linker Command File(*.cmd)在Files of type下拉菜单,选择hellocfg.cmd文件,然后按Open。
4、 如果看到警告,按Yes。Hello.cmd文件被hellocfg.cmd文件替代,hellocfg.cmd文件是保存DSP/BIOS时生成的。
5、 若没有警告,直接将hello.cmd文件从项目中删除。
6、 你可以自己创建独立的cmd文件,但文件中必须引用DSP/BIOS的生成的配置cmd文件。如:
-1 hellocfg.cmd
Your Code ......
7、 从项目中删除vectors.asm源文件。因为硬件中断可以通过DSP/BIOS设置,不需要单独的处理。
8、 从项目中删除rts6400.lib文件。这个库已经被hellocfg.cmd自动引用了。
9、 选择Project->Save保存对项目的更改。建议在编译和运行项目前,先保存修改。
10、 选择Project->Rebuild All。
11、 经过以上修改,项目变化为:
第六步:在CCS的Simulator环境下测试工程
1、 选择File->Load Program,选中hello.out,确定。
2、 选择DSP/BIOS->Message Log,出现窗口:
3、 在Log窗口按右键,选择属性,把输出文件指定到hello.txt,用来保存结果,便于以后查看。
4、 选择Debug->Go Main,然后F10,单步运行。观察Log窗口的输出。
5、 在Log窗口,按右键选择close,关闭窗口。
6、 重新Load程序,按F4。
7、 运行程序,等待一会儿,再按结束,中止程序运行。
8、 File->Open,然后在Debug目录中选择hello.txt,打开查看,内容和窗口的输出是一样的,都是hello world!
第七步:评估DSP/BIOS输出函数LOG_printf()的执行时间(周期数)
在这个步骤中,我们利用CCS的Profiling工具来评估LOG_printf()函数需要的指令周期数目,并且和printf()和put()函数对比。
1、 选择File->Reload Program。
2、 选择Profiler->Start New Session,弹出Proliler session窗口,接受默认的名称MySession,确认。如果出现错误,可以禁用RTDX功能。
3、 在MySession的窗口中,选择Ranges选项。
4、 双击hello.c文件,在Project View中打开源文件。
5、 高亮调用LOG_printf函数的语句。
6、 用鼠标拖曳到MySession Profile窗口中。
7、 MySession Profile窗口得到如下设置。时间的行号(line 28)可能会有所不同。
8、 按下“Run”按钮,或按F5运行程序。
9、 在MySession Profile窗口,观察Incl. Total column.(由于这个函数只执行一次,所以Total、Maximum和Minimum是相同的)
The Incl.Total的含义:这个参数是用来表示从汇编指令执行到这一行的开始到执行结束所需要的指令周期数目。
比较LOG_printf()函数和puts()函数的指令周期数目。
结论:经过对比发现,LOG_printf()函数比puts()函数的效率高很多。实际的指令周期数目和DSP芯片的型号有关。
调用LOG_printf()函数效率高的原因是字符串的格式化工作在主机(PC)完成,而不是目标板(DSP)上完成,所以说,LOG_printf()函数效率非常高。
4.实验内容及实验数据记录
1、打开已有的Hello World工程,评估stdio.h的运行效率,即put()函数的性能;
2、在Hello World基础上,创建一个基于DSP/BIOS的Hello World工程;
3、评估DSP/BIOS的输出函数性能,即LOG_printf()函数运行的指令周期。
5.实验程序或实验数据处理与分析
1)打开已有工程并运行
对hello.pjt编译并运行:
2)评测stdio.h中输出函数put()的执行时间
MySession窗口
将put()函数拉人ranges中:
重新Load程序,运行,得到运行结果如下:
结论:采用put()函数输出一次的指令周期数是:1700。
采用以上方法,测试printf()函数的指令周期:
将put()语句改成printf()语句,然后拉人ranges中重新Load,得到结果如下:
结论:采用printf()函数输出一次的指令周期数是:2530。
3)编辑源代码
4)创建DSP/BIOS的配置文件
选择目标版:c64xx.cdb
创建一个LOG对象,名称为LOG0,右键选中LOG0对象,然后右击选择Rename。把LOG对象改名为trace.
选择RTDX—Real-Time Data Exchange Settings,右键,选择属性,打开对话框:设置RTDX模式为Simulator。
选择File->Save。保存到当前目录(通常是C:\ti\myprojects\hellobios)命名为hello.cdb,保存这个配置后,会生成以下6个文件:
5)添加DSP/BIOS文件到工程项目
(1)添加hello.cdb
(2)输出文件名必须和.cdb文件一致:确认Output Filename内容是.\Debug\hello.out,按OK确定。
(3)添加hellocfg.cmd文件:并移除hello.cmd文件、vectors.asm源文件、rts6400.lib文件
(5)Rebuild All
6)在CCS的simulator环境下测试工程
(1) 选择DSP/BIOS->Message Log,出现窗口:
在Log窗口按右键,选择属性,把输出文件指定到hello.txt,用来保存结果:
(2)选择Debug->Go Main,然后F10,单步运行。观察Log窗口的输出:
(3) File->Open,然后在Debug目录中选择hello.txt,打开查看,内容和窗口的输出是一样的,都是hello world!
7)评估DSP/BIOS输出函数LOG_printf()的执行时间
(1)选择Profiler->Start New Session,弹出Proliler session窗口,接受默认的名称MySession,确认。如果出现错误,可以禁用RTDX功能。
(2)将LOG_printf函数的语句拖曳到MySession Profile窗口中:并运行程序
结论:采用LOG_printf ()函数输出一次的指令周期数是:36。
结论:经过对比发现,LOG_printf()函数比puts()函数的效率高很多。实际的指令周期数目和DSP芯片的型号有关。
调用LOG_printf()函数效率高的原因是字符串的格式化工作在主机(PC)完成,而不是目标板(DSP)上完成,所以说,LOG_printf()函数效率非常高。
6.质疑、建议、问题讨论
本次实验,主要是熟悉CCS环境下DSP/BIOS软件的创建和使用方法、熟悉在CCS环境下对代码的运行效率和性能作出评估的工具和方法。在要注意的是本次配置CCS时要用的是rts6400.lib库而不在是rts6200.lib库。通过实验使我对代码有了新的理解。
福建农林大学计算机与信息学院信息工程类实验报告
系: 电子信息工程 专业: 电子信息工程 年级:
姓名: 学号: 实验课程:
实验室号:__ __ 实验设备号: 实验时间: 5
指导教师签字: 成绩:
实验5 利用BIOS调试程序
1.实验目的和要求
通过对一个工程的调试,了解多线程的调度方法;学会查看程序性能的方法;学习更多的BIOS调试工具,如Execution Graph,the real-time analysis controlpanel (RTA Control Panel),the Statistics View,and the CLK(clock),SWI(software interrupt),STS(statistics),and TRC(trace)等模块。
注意:
1、 如果使用的是C6416 target,DSP/BIOS的实时分析工具只能在停止模式下才能更新数据。因此,分析数据只有当到达断点或者挂起的时刻才能送往主机PC显示分析。
2、 DSP/BIOS的一些功能,如CPU Load Graph,需要有硬件的CPU才能运行。
3.实验要求
1)完成实验内容,运行成功,得到输出结果。
2)修改Load数值(分别为1,100,100),在线程执行图中查看SWI进程执行时间。
3)修改Load数值(分别为1,100,100),在线程统计数据表中查看SWI进程执行时间(ms),指令周期数据。
2.主要仪器设备(实验用的软硬件环境)
安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg
3.操作方法与实验步骤
第一步:打开一个已有的工程
1、 在C:\ti\myprojects目录创建volume2文件夹。
2、 把C:\ti\tutorial\sim64xx\volume2文件夹的所有文件拷贝到这个新建的目录中。
3、 启动CCS。
4、 选择Project->Open,选择volume.pjt文件,按Open。
5、 展开项目,观察文件的内容,有:volume.pjt、DSP/BIOS Config、and Source。volumecfg.cmd文件是创建的一个配置文件,包含了大量的DSP / BIOS的头文件。
这个工程文件包含的文件有:
(1) volume.cdb:配置工具生成的配置文件。
(2) volume.c:包含main()的C语言程序源文件。
(3) volume.h:C语言程序源文件所需要的头文件夹。
(4) load.asm:汇编文件。
(5) volumecfg.cmd:配置工具生成的连接命令文件。
(6) volumecfg.h:配置工具生成的包含对象声明的头文件。
(7) volumecfg.s62:配置工具生成的汇编源文件。
(8) volumecfg.h62:配置工具生成的C语言头文件。
(9) volumecfg_c.c:包含芯片支持库的程序文件。
第二步:查看源代码
#include <std.h>
#include <log.h>
#include <swi.h>
#include "volumecfg.h"
#include "volume.h"
/* Global declarations */
Int inp_buffer[BUFSIZE]; /* processing data buffers */
Int out_buffer[BUFSIZE];
Int gain = MINGAIN; /* volume control variable */
Uns processingLoad = BASELOAD; /* processing routine load value */
/* Functions */
extern Void load(Uns loadValue);
Int processing(Int *input, Int *output);
Void dataIO(Void);
Void main()
{ LOG_printf(&trace,"volume example started\n");
/* fall into DSP/BIOS idle loop */
return;
}
Int processing(Int *input, Int *output)
{ Int size = BUFSIZE;
while(size--){
*output++ = *input++ * gain;
}
/* additional processing load */
load(processingLoad);
return(TRUE);
}
Void dataIO()
{ /* do data I/O */
SWI_dec(&processing_SWI); /* post processing_SWI software interrupt */
}
第三步:修改配置文件
1、 File->Open,在窗口的文件件类型选.cdb,打开volume.cdb文件,修改LOG下trace的buffer,buffer长度改为256。
2、 右击CLK-Clock Manager,查看CLK函数的属性。Timer的中断是固定的。
3、 查看硬中断和软中断函数。点击HWI_INT14,窗口右边的显示即是。Timer0的中断固定为HWI_INT14,对应的函数CLK_F_isr。
4、 查看软中断(SWI)函数。Mailbox:为0的时候执行processing函数。
第四步:查看线程执行图
1、 选择File->load Program,下载程序;
2、 选择DSP/BIOS->RTA Control Panel,出现RTA控制窗口。
确认Enable SWI logging和Enable CLK olgging被选中,向下滚动,确认Global host enable被选中。按右键,选择Property page选项。
确认Message Log/Execution Graph的刷新率是1 Second,然后按OK。
3、 选择DSP/BIOS->Execution Graph,出现Execution Graph窗口。
4、 运行程序,得到输出结果。
第五步:分析线程的统计数据
1、 选择DSP/BIOS->Statistics View,出现Statistics View窗口。
2、 运行程序,Run。
3、 更改时间单位。在Statistics View窗口中右击,选择Property page选项,点击Units选项卡。
4、 再次运行程序。
4.实验内容及实验数据记录
1、学习观察线程执行图的方法;
2、学断送HWI和SWI联合完成中断处理的方法;
3、分析线程的统计数据。
5.实验程序或实验数据处理与分析
1)打开一个已有的工程
2)查看源代码
3)修改配置文件
(1) File->Open,在窗口的文件件类型选.cdb,打开volume.cdb文件,修改LOG下trace的buffer,buffer长度改为256。
(2)右击CLK-Clock Manager,查看CLK函数的属性。Timer的中断是固定的。
(3)查看硬中断和软中断函数。点击HWI_INT14,窗口右边的显示即是。Timer
展开阅读全文