西电dsp定点实验分解Word下载.docx

上传人:b****2 文档编号:14987827 上传时间:2022-10-26 格式:DOCX 页数:12 大小:280.86KB
下载 相关 举报
西电dsp定点实验分解Word下载.docx_第1页
第1页 / 共12页
西电dsp定点实验分解Word下载.docx_第2页
第2页 / 共12页
西电dsp定点实验分解Word下载.docx_第3页
第3页 / 共12页
西电dsp定点实验分解Word下载.docx_第4页
第4页 / 共12页
西电dsp定点实验分解Word下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

西电dsp定点实验分解Word下载.docx

《西电dsp定点实验分解Word下载.docx》由会员分享,可在线阅读,更多相关《西电dsp定点实验分解Word下载.docx(12页珍藏版)》请在冰豆网上搜索。

西电dsp定点实验分解Word下载.docx

启动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目录下。

接着在弹出的工程选项对话框中定义其各项参数值,其各项参数值可如下表所示:

选项

设定值

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的效率

要评估汇编代码的效率,要在

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1