1、启动Visual DSP+ 4.0,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;练习二:创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;练习三:利用调试器的绘图(plot)功能来图形显示一个卷积算法中的有关数据的波形;练习四:利用调试器的性能统计功能(Statistical profile)来检查练习三中卷积算法的效率。利用所收集到的性能统计数据就能看出算法中最耗时的地方。练习一运行C程序在练习一中,将创立和运行一个C程序,源文件在Blackfin讲义参考实验程序Tutorialdot_p
2、roduct_c子目录。1. 实验步骤l) 进入Visual DSP十并打开一个工程(Project)进入 Visual DSP,显示Visual DSP+的集成开发和调试环境窗口(Integrated Development and Debugger Environment,简称IDDE)。选择菜单File 中Open 打开文件unit_1dot_product_c dotprodcdpj。VisualDSP+环境将装载dotprodc工程,并列出相应的源文件。在输出窗口(Output Window)中显示简要信息。Dotprodc工程中有3个文件,定义数组和计算数组点积和的两个C语言源文件
3、 dotprod_main.(主程序)、dotprod.c(子程序)以及一个描述程序和数据存储位置的链接描述文件dotprodcldf。2) 编译 dotprodc工程在菜单 Project中选择 Build Project来对工程进行编译。此时,输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。当编译检测到错误时,将在输出窗口出现相应的出错信息,用鼠标双击它,编译器将自行打开源文件。这时可对源文件编辑、修改错误,再次进行编译。当编译不再有错时,输出窗口将显示“Build completed successfully”。在本例子中,编译器会检测到一个未定义的错误,显示为:“dot
4、prod_main.c”,line 115:error 20:identifier“itn”is undefined itn i;在输出窗口中对该行文字用鼠标双击,环境会自动打开 dotprod_main.c文件,并将光标定位在出错行。你可以看见单词“int”被错写成“itn”。将该错误改正后,保存并重新编译。如果再没有错误出现,这时工程已被成功编译,就可以用VisualDSP+的debugger来调试程序。3) 运行VsualDSP+调试器在编译完成后,环境将自动进入调试状态,对于初次进入debugger,将显示对象选择对话框,在其中指定对象和处理器信息。 域选择值Debug TargetA
5、DSP-BF5xx Blackfin Family SimulatorsPlatformADSP- BF5xx Single Processor SimulatorSession NameADSP-BF533 ADSP- BF5xx Single Processor SimulatorProcessorADSP-BF533 若在调试过程中需定义不同的对象和处理器类型,选取菜单Sessions中NeW Session项来重新定义。NeW Session 对话框图7.2所示:图7.2 NeW Session 对话框用VisualDSP十调试时,调试器会自动调入工程的可执行文件dotprodcdxe
6、。在默认情况下,调试器会打开三个窗口:输出窗口(下)、反汇编窗口(右)、包括工程主文件dotprod_main.c的源代码窗口(左)。如图7.3所示,左窗的每一条C语句都对应右窗中的多条汇编指令:图7.3 调试器的输出窗口、反汇编窗口和源代码窗口在图7.3中,箭头所指为当前执行指令,红圆圈代表设定的断点位置。当调试器加载C程序时,会自动设置两个断点,分别在代码执行的开头和结尾。测览程序中的断点可选择菜单Settings下的BreakPoints,可在此对话框中增加或删除断点。另外也可通过在每条代码行的开头处双击鼠标或快捷键F9来设置或取消断点。4) 运行dotprod.c从 Debug菜单中选
7、择 Run项,程序将被执行,其输出结果在 Output window中显示。5) 评估函数 a_doc_c 的性能(profile)Profile用来分析程序的运行时间特性,通过Profile可以找到最耗时的程序段,这可能就是需要进一步优化性能的程序段。通过下述步骤来设置Profile功能并显示其结果:(1) 选 ToolsLinear ProfilingNew Profile命令(2) 出现一个Profile的子窗口,在该窗口上点击右键弹出快捷菜单(3) 点击菜单中的Properties.,选中第二个选项卡“filter”然后设置开始地址和结束VisualDSP+允许在整个程序空间中进行评估
8、,当然也可以设置若干个Memory ranges或若干个C子程序的函数体进行评估,即可以重复指定多个 Profile Range。在本例中要求对三个子函数a_dot_b() 、a_dot_c()、a_dot_d()的运行效率作出评估,应在 “Filter”选项卡中选择C/C+ function(4) 重新编译加载程序,按F5继续运行程序,程序完全执行后,将在Console窗口显示结果,并在Profile窗口中显示程序运行过程中的各种数据。点击右键菜单中View Sample Count(5) 将Project Options中的编译器设置将代码优化功能选中,重新编译和链接程序后,对程序中的三个
9、子函数的运行性能重新进行评估,如图7.7(2)所示,对比优化前和优化后的区别,说明其原因。2.实验结果截图练习二运行C和汇编混合程序在练习一中的例子是C主程序调用C子程序。在练习二中,要学会如何创建新工程,在此基础上我们将修改这个C主程序,让其调用一个汇编子程序,重新编译工程并评估汇编程序的性能。1实验步骤l)创建一个新的工程(project)从 Project菜单中选取New项,在弹出的工程保存对话框中,将工程名定义为dot_product_asm.dpj,并保存在unit_1dot_product_asm目录下。接着在弹出的工程选项对话框中定义其各项参数值,其各项参数值可如下表所示:选项设
10、定值TypeDSP executable fileNamedot_product_asmSettings forDebug这些参数都是针对ADSPBF533处理器而设置的。在Project Options对话框中,选中“Enable optimization”和“Generate debug information”两项,系统将自动生成针对ADSPBF533的优化代码。2) 向dot_product工程中添加文件选取菜单ProjectAdd to Projectfile(s)项,按住Ctrl键来同时选中dotprod_mainc,dotprodc,dotprod_funcasm和dotprod
11、asm.ldf文件,点击“Add”将这几个文件加到工程中。3)创建链接描述文件在此步骤中,我们将给该工程创建一个连接描述文件。首先,我们了解一下连接描述文件。(1)首先来了解一下ldf结构文件:dotprodasmldf文件的开头是 ADSP-BF533物理地址的描述说明,都是注释。接着是SEARCH_DIR,$LIBRARIES和$OBJECTS命令。它们是链接器在搜索和解决输入文件中的参考量时所用到的路径名。接下来是MEMORY命令,它定义系统的物理地址并定义许多物理段的地址范围和类型。在MEMORY命令之后是SECTIONS命令。在MEMORY命令中已声明的物理段通过SECTIONS命令
12、来映射程序代码中说明的逻辑段,从而定义代码的各个段的物理存放地址。链接器用来映射的对象文件在SECTIONS命令的INPUT_SECTIONS中描述。(2)连接描述文件创建步骤如下:1,在Tool菜单中,点击Expert Linker中的Creat LDF2选择“Project type”为C型,点击“下一步”3选择“System type”为“Single process”4点击完成,就会出现该工程的链接描述文件图。至此,该工程的链接描述文件就创建成功。4) 修改工程源文件在此步骤中,我们将修改dotprod_main.c文件,让其调用一个汇编子程序 a_dot_c_asm来取代a_doc。
13、打开dotprod_main.c文件,在源代码中找到下列相应的四条语句:extern int a_dot_c( int *, int * );/*extern int a_dot_c_asm( int *, int * );*/ result1 = a_dot_c( a, c );/* result1 = a_dot_c_asm( a, c );将这四条语句修改为:/*extern int a_dot_c( int *, int * );extern int a_dot_c_asm( int *, int * ); /* result1 = a_dot_c( a, c ); result1 =
14、 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先选取菜单 ProjectBuild Project项来编译工程;再选取菜单 DebugRun项来运行程序。在输出窗口(Output Windows)中就会得到运行结果: Dot product 0 = 13273595 Dot product 1 = -49956078 Dot product 2 = 358725187) 评估a_dot_asm的效率要评估汇编代码的效率,要在
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1