嵌入式系统实验指示书(大实验:AVS解码器优化)
ver2.0
清华大学计算机科学与技术系
2008年11月(第二稿)
目录
目录2大实验:AVS解码器优化1
1.实验目的1
2.实验要求1
3.实验提示1
3.1.实验环境1
3.2.开展本实验的大致步骤2
3.3.OpenAVS简介2
3.4.关于如何进行程序移植3
3.5.Profile工具的使用说明4
大实验:AVS解码器优化
1.实验目的
1)深入了解V ortex86处理器架构。
2)学习如何把PC上的应用程序移植到WinCE平台上。
3)体会嵌入式系统中优化技术对系统整体性能的影响。
4)培养自学能力、小组合作能力。
2.实验要求
1)只在语言级进行优化,不得进行算法级的优化(因为那不是本课程要掌握的知识)。
即优化前后的程序只有性能上的差异,在编码结果上要求保持完全相同。
2)解码器解码性能获得提高。
3)本实验要求提交一份实验报告,报告的格式要求正规一些,但也不要长篇大论、言
之无物,希望言简意赅、抓住重点。
4)此外,助教会对做该组实验的同学进行中期检查和实验完成后的检查,检查时由同
学向助教演示实验结果,说明本组同学的分工,并回答助教的问题。检查时要求本组的所有同学必须同时到场,不到场将被扣分。
5)实验报告文件命名规则:姓名1_姓名2_姓名3_实验报告题目.doc(姓名1、姓名2、
姓名3分别为该组同学的姓名),实验报告请于2009年1月12日之前提交报告,迟交报告将被扣分
3.实验提示
3.1.实验环境
本实验要求在eBox实验板上来进行,为完成本实验,需要同学们使用Windows XP 操作系统,并按顺序安装如下软件:
l Windows XP Professional workstation with Service Pack2补丁(sp3可能会导致PC与eBox板连接不成功);
l Visual C++6.0;
l Visual Studio2005;
l Visual studio2005sp1;
l Windows embedded ce6.0(安装要求参加验证性实验指导书);
l BSP(ICOP_V ortex86_60CS_BSP.msi,该组件包含了对eBox-II硬件平台的板
级支持);
l VS2005_CoreCon_x86_WINCE600(VS2005_CoreCon_x86_WINCE600.msi);
l Active sync4.5(该软件用于在开发板与eBox之间进行数据传输);
同时,我们为同学们提供如下代码和参考文档:
l A VS解码器程序源代码:OpenA VS.rar
l测试视频:共6个视频序列(Carphone、Mobile、Mother-daughter、News、Suzie、Walk);
l文档:《实验指导书(大实验:A VS解码器优化)》
l文档:《针对嵌入式SoC应用的C编程优化》
l文档:《C代码优化方案》
l工具软件:
3.2.开展本实验的大致步骤
首先,我们需要一个A VS解码器的源代码,本实验已经提供了这样一个源代码:OpenA VS.rar,里面包含一个名为OpenA VS的VS2005解决方案。
其次,我们可以先在PC机上熟悉一下OpenA VS这个解码器的使用方法,并使用Profile工具分析整个程序的性能瓶颈在哪里。
自学linux买什么书好然后,我们再将OpenA VS的代码移植到实验板上,使其也可以在实验板上正常工作。我们目前提供的程序是Win32程序,可以在PC机上运行,需要同学们用VS2005建立一个基于WinCE的项目,并参照我们提供的项目的配置属性,完成项目属性的配置,最后编译生成可以在WinCE上运行的程序。
最后,根据Profile的结果,有针对性的对C代码进行优化,以提高A VS解码器性能。优化时要注意,不能改变解码算法和功能,优化前后的程序只有性能上的差异,在解码结果上要求保持完全相同。
3.3.OpenAVS简介
OpenA VS是对A VS(先进音视频编码Advanced Coding of Audio and Video)的开源实现。A VS是我国具备自主知识产权的第二代信源编码标准,它正与MPEG-4和H.264展开竞争,以取代当前最流行的压缩标准MPEG-2。OpenA VS在SourceForge上的链接如下:sourceforge/projects/openavs/
我们提供的OpenA VS解决方案包含两个项目:OpenA VS和A VSPlayer,两个项目共同的部分是A VS解码算法的实现,不同之处在于:OpenA VS把输入的*.avs视频解码后,写入一个后缀为*.yuv文件中(*.yuv文件可以用实验提供的YUVPlayer工具来播放,大家观察一下这个*.yuv文件和原始的*.avs文件在文件大小上的差距,直观的了解视频压缩编码的效率);A VSPlayer把输入的*.avs视频解码后并不保存为文件,而是直接调用一个名为SDL的多媒体函数库进行播放。
我们提供的OpenA VS解决方案包括两个在可PC机上运行的Win32项目,主要组成部分如下:
OpenAVS.sln:在VS2005下建立的解决方案,用VS2005打开它,可以浏OpenA VS和A VSPlayer两个项目。
OpenAVS目录:该目录下是OpenA VS项目相关文件。
AVSPlayer目录:该目录下是A VSPlayer项目相关文件。
include目录:两个项目中使用的头文件(*.件)。
src目录:两个项目的源码文件(*.c文件)。
tools目录:一些工具的代码文件。
SDL目录:SDL多媒体函数库。
Debug目录:编译生成的可执行文件(*.exe)存放于此目录下。
VC6Project目录:VC6工程,供代码瓶颈分析用。
本实验的主要工作是对A VS的解码器进行优化,OpenA VS和A VSPlayer虽然是两个项目,但它们的代码基本是一致的,只是主函数的功能不同,对解码完成后的数据处理方法不同,前者保存为文件,后者
直接播放。
我们的实验要求优化前后不对算法做改变,亦即对于同一段*.avs视频,在优化前后,解码生产的*.yuv文件应该是完全一样的,这就需要我们使用OpenA VS项目编译生成的可执行文件——,把解码后的*.yuv文件保存下来,供后期比对。的使用方法是在命令提示符下输入:
…OpenAVS\debug&[*.avs文件名]
同时为方便同学们调试时直接观看解码后的视频,我们又提供了A VSPlayer项目,该项目编译生成的可执行文件——可以直接播放一个*.avs文件,使用方法是在命令提示符下输入(注意,要把SDL.dll文件拷贝到与相同的文件夹下):
…OpenAVS\debug&[*.avs文件名]
3.4.关于如何进行程序移植
本实验的C代码优化部分相对比较简单,为了让同学们更深入的了解eBox和WinCE系统,并考察同学们在做验证性实验时,是否对实验的每一个步骤的意义做了足够的思考,我们只提供在PC上可以编译通过、执行的OpenA VS项目。如何把这个工程移植到WinCE上,让A VS解码器在eBox上正常运行,则留给同学们来完成,并作为本实验的一个重要考核部分。
在移植的过程中,同学们会遇到很多问题,希望大家能Google之,并通过讨论共同解决。请记录下这些问题,在解决问题的过程中,同学们会对项目配置、WinCE的程序开发有更加深入的了解。
3.5.Profile工具的使用说明
这一步是寻性能瓶颈所在,有目标的进行C语言代码优化,最后测量优化后的提高。下面我们使用Profile寻性能瓶颈。
Profile是Visual C++6.0自带的工具。可以显示程序运行的情况,包括每个函数的调用次数,每个函数消耗的处理器时间(包括函数自身执行时间和子函数的调用时间)。
在执行Profile之前,先要配置项目调试属性,选择要配置的项目,单击右键,选择“设置”,在弹出的对话框中打开“链接”选项卡,勾上“允许配置文件”一项;在“调试”选项卡的“程序变量”一栏中输入调试参数在本项目中,就是要解码的*.avs文件名(本例中设为carphone_qcif.avs),单击确定以保存配置,如下图所示:
注意,配置完成后,还需要把*.avs文件拷贝到要Profile的项目的目录下,这样在Profile时才能到这个文件,例如,对于OpenA VS项目,要把*.avs文件拷贝到VC6 Project\Debug目录下。
进行了上述设置后,重新编译生成项目,我们就可以使用Profile工具分析程序运行的情况了。在菜单中选择“组建(Build)”->“配置文件(Profile)”,“配置类型”选择“计时功能”,然后就可以等待Profile结果了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。