西电dsp定点实验分解.docx
- 文档编号:2069086
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:12
- 大小:280.86KB
西电dsp定点实验分解.docx
《西电dsp定点实验分解.docx》由会员分享,可在线阅读,更多相关《西电dsp定点实验分解.docx(12页珍藏版)》请在冰豆网上搜索。
西电dsp定点实验分解
班级:
021131班组别:
A组
实验一——VISUALDSP++的使用入门
一、实验目的
实验一的主要目的是熟悉VISUALDSP++的开发环境。
针对ADSP-Blackfin533DSP,利用几个用C、C++和汇编语言写成的简单例子来描述VISUALDSP+十编程环境和调试器(debugger)的主要特征和功能。
对于运行在其它类型Blackfin处理器的程序只需对其链接描述文件(.LDF)做一些修改,就可用于其它芯片或者ADSP-Blackfin533的硬件仿真。
在目录…\Blackfin\ldf下有每种处理器类型的链接描述文件,可供参考。
二、实验设备
PC机
三、实验内容
实验一包括4个基本练习:
练习一:
启动VisualDSP++4.0,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;
练习二:
创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;
练习三:
利用调试器的绘图(plot)功能来图形显示一个卷积算法中的有关数据的波形;
练习四:
利用调试器的性能统计功能(Statisticalprofile)来检查练习三中卷积算法的效率。
利用所收集到的性能统计数据就能看出算法中最耗时的地方。
练习一——运行C程序
在练习一中,将创立和运行一个C程序,源文件在…\Blackfin讲义\参考实验程序\Tutorial\dot_product_c子目录。
1.实验步骤
l)进入VisualDSP+十并打开一个工程(Project)
进入VisualDSP++,显示VisualDSP++的集成开发和调试环境窗口(IntegratedDevelopmentandDebuggerEnvironment,简称IDDE)。
选择菜单File中Open打开文件…unit_1\dot_product_c\dotprodc.dpj。
VisualDSP++环境将装载dotprodc工程,并列出相应的源文件。
在输出窗口(OutputWindow)中显示简要信息。
Dotprodc工程中有3个文件,定义数组和计算数组点积和的两个C语言源文件dotprod_main.c(主程序)、dotprod.c(子程序)以及一个描述程序和数据存储位置的链接描述文件dotprodc.ldf。
2)编译dotprodc工程
在菜单Project中选择BuildProject来对工程进行编译。
此时,输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。
当编译检测到错误时,将在输出窗口出现相应的出错信息,用鼠标双击它,编译器将自行打开源文件。
这时可对源文件编辑、修改错误,再次进行编译。
当编译不再有错时,输出窗口将显示“Buildcompletedsuccessfully”。
在本例子中,编译器会检测到一个未定义的错误,显示为:
“.\dotprod_main.c”,line115:
error#20:
identifier“itn”isundefineditni;
在输出窗口中对该行文字用鼠标双击,环境会自动打开dotprod_main.c文件,并将光标定位在出错行。
你可以看见单词“int”被错写成“itn”。
将该错误改正后,保存并重新编译。
如果再没有错误出现,这时工程已被成功编译,就可以用VisualDSP++的debugger来调试程序。
3)运行VsualDSP++调试器
在编译完成后,环境将自动进入调试状态,对于初次进入debugger,将显示对象选择对话框,在其中指定对象和处理器信息。
域
选择值
DebugTarget
ADSP-BF5xxBlackfinFamilySimulators
Platform
ADSP-BF5xxSingleProcessorSimulator
SessionName
ADSP-BF533ADSP-BF5xxSingleProcessorSimulator
Processor
ADSP-BF533
若在调试过程中需定义不同的对象和处理器类型,选取菜单Sessions中NeWSession项来重新定义。
NeWSession对话框图7.2所示:
图7.2NeWSession对话框
用VisualDSP+十调试时,调试器会自动调入工程的可执行文件dotprodc.dxe。
在默认情况下,调试器会打开三个窗口:
输出窗口(下)、反汇编窗口(右)、包括工程主文件dotprod_main.c的源代码窗口(左)。
如图7.3所示,左窗的每一条C语句都对应右窗中的多条汇编指令:
图7.3调试器的输出窗口、反汇编窗口和源代码窗口
在图7.3中,箭头所指为当前执行指令,红圆圈代表设定的断点位置。
当调试器加载C程序时,会自动设置两个断点,分别在代码执行的开头和结尾。
测览程序中的断点可选择菜单Settings下的BreakPoints…,可在此对话框中增加或删除断点。
另外也可通过在每条代码行的开头处双击鼠标或快捷键F9来设置或取消断点。
4)运行dotprod.c
从Debug菜单中选择Run项,程序将被执行,其输出结果在Outputwindow中显示。
5)评估函数a_doc_c的性能(profile)
Profile用来分析程序的运行时间特性,通过Profile可以找到最耗时的程序段,这可能就是需要进一步优化性能的程序段。
通过下述步骤来设置Profile功能并显示其结果:
(1)选Tools\LinearProfiling\NewProfile命令
(2)出现一个Profile的子窗口,在该窗口上点击右键弹出快捷菜单
(3)点击菜单中的Properties….,选中第二个选项卡“filter”然后设置开始地址和结束VisualDSP++允许在整个程序空间中进行评估,当然也可以设置若干个Memoryranges或若干个C子程序的函数体进行评估,即可以重复指定多个ProfileRange。
在本例中要求对三个子函数a_dot_b()、a_dot_c()、a_dot_d()的运行效率作出评估,应在“Filter”选项卡中选择C/C++function
(4)重新编译加载程序,按F5继续运行程序,程序完全执行后,将在Console窗口显示结果,并在Profile窗口中显示程序运行过程中的各种数据。
点击右键菜单中ViewSampleCount
(5)将ProjectOptions中的编译器设置将代码优化功能选中,重新编译和链接程序后,对程序中的三个子函数的运行性能重新进行评估,如图7.7
(2)所示,对比优化前和优化后的区别,说明其原因。
2.实验结果截图
练习二——运行C和汇编混合程序
在练习一中的例子是C主程序调用C子程序。
在练习二中,要学会如何创建新工程,在此基础上我们将修改这个C主程序,让其调用一个汇编子程序,重新编译工程并评估汇编程序的性能。
1.实验步骤
l)创建一个新的工程(project)
从Project菜单中选取New项,在弹出的工程保存对话框中,将工程名定义为dot_product_asm.dpj,并保存在…unit_1\dot_product_asm目录下。
接着在弹出的工程选项对话框中定义其各项参数值,其各项参数值可如下表所示:
选项
设定值
Processor
ADSP-BF533
Type
DSPexecutablefile
Name
dot_product_asm
Settingsfor
Debug
这些参数都是针对ADSPBF533处理器而设置的。
在ProjectOptions对话框中,选中“Enableoptimization”和“Generatedebuginformation”两项,系统将自动生成针对ADSP-BF533的优化代码。
2)向dot_product工程中添加文件
选取菜单Project\AddtoProject\file(s)…项,按住Ctrl键来同时选中dotprod_main.c,dotprod.c,dotprod_func.asm和dotprodasm.ldf文件,点击“Add”将这几个文件加到工程中。
3)创建链接描述文件
在此步骤中,我们将给该工程创建一个连接描述文件。
首先,我们了解一下连接描述文件。
(1)首先来了解一下ldf结构文件:
dotprodasm.ldf文件的开头是ADSP-BF533物理地址的描述说明,都是注释。
接着是SEARCH_DIR,$LIBRARIES和$OBJECTS命令。
它们是链接器在搜索和解决输入文件中的参考量时所用到的路径名。
接下来是MEMORY命令,它定义系统的物理地址并定义许多物理段的地址范围和类型。
在MEMORY命令之后是SECTIONS命令。
在MEMORY命令中已声明的物理段通过SECTIONS命令来映射程序代码中说明的逻辑段,从而定义代码的各个段的物理存放地址。
链接器用来映射的对象文件在SECTIONS命令的INPUT_SECTIONS中描述。
(2)连接描述文件创建步骤如下:
1,在Tool菜单中,点击ExpertLinker中的CreatLDF
2.选择“Projecttype””为C型,点击“下一步”
3.选择“Systemtype”为“Singleprocess”
4.点击完成,就会出现该工程的链接描述文件图。
至此,该工程的链接描述文件就创建成功。
4)修改工程源文件
在此步骤中,我们将修改dotprod_main.c文件,让其调用一个汇编子程序a_dot_c_asm来取代a_doc。
打开dotprod_main.c文件,在源代码中找到下列相应的四条语句:
externinta_dot_c(int*,int*);
/*externinta_dot_c_asm(int*,int*);*/
……………
result[1]=a_dot_c(a,c);
/*result[1]=a_dot_c_asm(a,c);*/
将这四条语句修改为:
/*externinta_dot_c(int*,int*);*/
externinta_dot_c_asm(int*,int*);
…
/*result[1]=a_dot_c(a,c);*/
result[1]=a_dot_c_asm(a,c);
这样主程序将调用a_dor_c_asm汇编程序来取代练习一中的a_dot_c子程序。
5)修改链接描述文件
当工程源文件修改该完毕后,编译在工程,输出窗口如下图7.15所示:
图7.15
打开链接描述文件,如下图7.16:
图7.16
将左边方框中的带有红叉的“dotprod_func.doj”拖动到右边方框的MEM_L1_CODE中,红叉消失,这时我们就对链接描述文件进行了修改。
6)编译和运行dot_product
先选取菜单Project\BuildProject项来编译工程;
再选取菜单Debug\Run项来运行程序。
在输出窗口(OutputWindows)中就会得到运行结果:
Dotproduct[0]=13273595
Dotproduct[1]=-49956078
Dotproduct[2]=35872518
7)评估a_dot_asm的效率
要评估汇编代码的效率,要在
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dsp 定点 实验 分解