实验指导书spce3200箱ecos多媒体篇_第1页
实验指导书spce3200箱ecos多媒体篇_第2页
实验指导书spce3200箱ecos多媒体篇_第3页
实验指导书spce3200箱ecos多媒体篇_第4页
实验指导书spce3200箱ecos多媒体篇_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

保留对此文件修改之权利且不另行通知。所提供之信息相信为正确且可靠之信息,但并不保证本文件中绝无错误。请于向提出订单前,自行确定所使用之相关技术文件及规格为之版本。若因贵公司使用本公司之文件或产品,而涉及第三人之专利或著作权等智能财之应用及配合时,则应由贵公司负责取得同意及,本公司仅单纯贩售产品,上述关于同意及,非属本公司应为保证之责任。又 科技之正式 ,本公司之所有产品不得使用于医疗器材,维持生命本是结合SPCE3200教学实验平台而设计,与课堂教学内容结合紧密。本书主要针对嵌入eCosSPCE3200eCos下的功能使用,且附有范例程序。实验内容浅显易懂,读者通过这些实验的学习,可以逐步掌握SPCE3200嵌入式教学平台在嵌入式操作系统eCos下的编程方法。;;第四章:多实验(主要内容为音频、、图像编等实验。进行连接后,程序可直接运行,使读者达到节省时间、快速入门的目的。目4多实 MP3实 【实验目的 【实验设备 【实验要求 【实验原理 【实验步骤 【范例路径 【实验目的 【实验设备 【实验要求 【实验原理 【实验步骤 【范例路径 【实验目的 【实验设备 【实验要求 【实验原理 【实验步骤 【范例路径 图像实 【实验目的 【实验设备 【实验要求 【实验原理 【实验步骤 【范例路径 实实验二十五MP3实2、SPCE3200嵌入式实验箱一台盘的前四个按键控制MP3的。四个按键的功能分配如图4.1所示。 A 上一 4.1当按下“/停止”键时,如果此时正在MP3或MP3处于暂停状态,则停止,否则启动当前曲目;当按下“上一曲”时,如果此时正在MP3或MP3处于暂停状态,则停止当前曲目,并启动上一曲目;当按下“下一曲”时,如果此时正在MP3或MP3处于暂停状态,则停止当前曲目,并启动下一曲目;当按下“暂停/恢复”时,如果此时正在播放MP3,则暂停,如果此时MP3处于暂停状态,则恢复;MP3的全称是MovingPictureExpertsGroupAudioLayerIII。是较流行的一种数字音频编码的不压缩音频相比并没有明显的下降。它是在1991年由位于德国埃尔朗根的研究组织Fraunhofer-Gesellschaft的一组工程师发明和标准化的。MPEG音频文件是MPEG1标准中部分,也叫MPEG音频层,它根据压缩质量和编码复使用了许多技术其中包括心理声学以确定音频的哪一部分可以丢弃等。MP3音频可以按照不同的位的选择。典型的MP3文件的码率介于每秒128kb和320kb之间。与此对照的是,CD上压缩的1411.2kbit/s(16位/采样点×44100采样点/秒×2通道)。2、在eCos上程序可以非常方便的MP3音频文件。图4.2所示的是MP3组件与其他组件的关系框图。应用程序不能使用MP3器直接对音频码流进行,而需要通过FileIO组件文件系统,以便让其介质(如SD卡、ROM等)MP3MP3FileaccesslibraryDiskSD图4.2MP3器与其他组件的关MP3器组件为应用程序提供了一套完整的API,这些API的函数原型和功能描述如下【函数原型】int【 能】初始化MP3【 0,否则返回-【 明】该函数必须在使用其他MP3器API函数之前被调用,并且该函数通常只被【函数原型】intMP3_Configure(unsignedlongcmd,unsignedlong【 能】配置MP3 数】cmd:配置命令。可选值及配置命令的意义参考表4.1para:参数0,否则返回-表4.1MP3器配置命令及参数意1打开单曲重复功能。打开该功能后当前文件结束时0【函数原型】intMP3_Play(char*mp3file,void*MP3_End_Callback,mp3_callback【 能】MP3文 数】mp3file:待的MP3文件路径MP3_End_Callback:结束回调函数PlayCallback:数据流操作函数0,否则返回-【说明】当MP3器完成对mp3file的时,将调用MP3_End_Callback函数,用户可以在该函数中完成结束时需要处理的工作。PlayCallback是一个指向mp3_callback结构体的指针,mp3_callback结构体的定义如下:typedefstructint(*open)(constchar*mp3file,intoflag,...);ssize_t(*read)(intfd,void*Buf,size_toff_t(*lseek)(intfd,off_toffset,intwhence);int(*close)(intfd);}该结构体的作用是为器提供一组用于MP3音频数据流的函数。这些函数的形式、参数以及完成的作用与文件系统类似,如,open函数被器用来启动数据流的操作,类似于文件系统中打开文件的操作;read函数被器用来从数据流中顺序一定量的数据,类似于从文件中数据的操作;lseek函数被器用来在数据流中进行定位,类似于对文件进行随机定位;close函数被解用来结束数据流的,类似于关闭文件的操作。在调用MP3_Play()函数时将PlayCallback参数置为NULL,表示使器直接使用文件系统来数据流。在某些特殊应用中,用户可以自定义这些函数,以便完成对非标准MP3文件形式的数据流的存取。【 【 数】pMP3Info:用于保存MP3文件信息的结构体指【 明】用于保存MP3文件信息的结构体mp3_info_t包含的成员及说明参考表4.24.2mp3_info_ttypedefstruct{enum{MPEG1,MPEG2,MPEG25}MPEG编码规范(MPEG-1,MPEG-2,MPEG-unsignedMPEG音频层(Layer1,Layer2,Layerunsignedunsignedenum{CBR,VBR}编码方式。CBR为定长编码,VBRunsignedByte当MP3文件为VBR编码时有意义unsigned件为VBR编码时有意义unsigned音质(范围:0~100,0表示最好,100表示}【函数原型】int【 【 0,否则返回-【函数原型】int【 【 0,否则返回-【函数原型】int【 【 0,否则返回-【函数原型】int【 【 0,否则返回-【函数原型】int【 【 0,否则返回-【函数原型】int【 【 0,否则返回-【 【 数】Volume_Boundary:音量可调范围的上【 明】该函数可以将音量的可调范围设置为:0~2^Volume_Boundary。例如,执MP3_Set_Volume_Boundary(4)后,音量的可调范围将变为:0~16。系统默认值 【 【 数】Volume_Offset:音量等级(取值范围【 【函数原型】int【 【 0,否则返回-【函数原型】int【 【 0,否则返回-图4.3使用MP3器的典型流切换。获取文件列表的函数流程如图4.4所示。 挂载SD YN YN文件个数大于Y初始化 图4.4获取*.mp3文件列表函数流程 图4.5实验二十五主线程程序流程流程如图4.5和图4.6所示。4.6eCoseCosConfigTooldefaultecos内核;ApplacationMP34*4KeyboardsupportforScoreDiskdeviceFileLinuxBlockcacheandaccessFAT4.7使用“eCosProject5、点击“OK”后,在弹出的向导设置框中修改“SeteCosPath”项的值,点击该行右侧 ,如图4.8所示4.88、修改、编译(RebuildAll)直到没有任何错误

234

4.9在大学计划( 实验二十六实2、SPCE3200嵌入式实验箱一台口函数控制头设备,对其进行配置,头的数据并显示在LCD上。CDMSD传感器中每一行中每一个象素的电荷数据都会依次传送到下一个象素中,由最底端部分输出,再经由传感器边缘MS/DCCDMSCCDMSMCCDMSDMS传感器则在改善分辨率与灵敏度方面的不足,以应用于更高端的图像产品,大有后来者居上之势。现在,国内照相多采用CMOS头,其图像传感器产品例如OmniVision公司产转换后变为数字图像信号,再送到数字信号处理中处理并通过接口总线输出,其功能框图如图图4.10头工作原SPCE3200CMOS传感器接口(CSI)COMS传感器进行连接,并在内部控制器的控制下接收COMS传感器发出的时钟和数据,并将影像数据传送到DRAM中。SPCE3200CSI单元具有如下特性支持两种清晰度的信号:QVGA(320×240)、SPCE3200的CSI单元的结构如图4.11所示。CMOS影像传感器在捕获图像信息的过会实处理、然后再把格式化的数据传送到指定4.11CSIeCos系统中,所有设备都是以文件的形式被打开并进行读/POSIX兼容的文件操作接口函数对底层设备进行操作。POSIXeCos基础实验篇的实验二——跑马灯实验中已经介绍。这里只介绍使用文件系统对头的控制方法。具体控制头的首先调用函数fd=open("/dev/ov7720",O_RDWR)打开头,其中fd为整型的文件句柄,摄像头设备名称默认为”/dev/ov7720”,O_RDWR表示以读写方式打开此设备。typedef{unsignedint//unsignedintColorModeIn;//CSIunsignedintColorModeOut;//CSIunsignedintBuffAddr[3];//CSIunsignedint //typedef{unsignedint//unsignedintColorModeIn;//CSIunsignedintColorModeOut;//CSIunsignedintBuffAddr[3];//CSIunsignedint //unsignedintxunsignedintReadStartY;unsignedintunsignedintyCSIConfig类型的结构体,该结构体定义了除了CYG_IO_GET(SET)_CONFIG_CSI_ALL命令之外,头驱动还支持其令。与头相关的配置命令以及它们的意义如表4.3所示。例如:如果想获得头的分辨率,则调用cyg_fs_fgetinfo时的第二个参数应该为:CYG_IO_GET_CONFIG_CSI_RESOLUTION。表4.3头配置相关标头的区域信对头完成配置工作之后,通过调用函数read(fd,CsiRead,len)可以头图像的数据。其中fd为使用open打开头设备成功返回的设备句柄,CsiRead为数据的缓冲区,len为长度。具体头的哪部分数据是通过上一步设置头数据有关的选项实现的。通常情况下,用户如果希望将的图像数据显示在LCD屏幕上,可以调用函数lcd_drawrgb((unsignedshort*)CsiRead,50,50,CsiConfig.ReadSizeX,CsiConfig.ReadSizeY)来完成该工作。其中CsiRead为上一步的数据首地址;50,50表示在LCD上显示的起始坐标;LCD显BLNDMA打 头 LCD显BLNDMA打 头 创建线程创建线程线程 图4.12实验流程2、删除工程文件夹下的“default_install” 4、加入POSIX文件系统包“FileIO”和头驱动包“CSI&OV7720Support”;5、修改选项eCosHAL>SCOREarchitecture>sunplusSPCE3200>LCDType图4.13头相关配置选4.4表4.4头配置选项的意AdditionalcomplilerTheResolutionconfigforCSI&TheInputColorModeofTheOutputColorModeofCSICSICSICSIBuffer如果此值为0表示头的工作缓冲区与LCD工作缓冲区1则选择CSIBuffer1ReadstartofReadstartofReadsizeofReadsizeof 9、修改、编译(RebuildAll)直到没有任何错误10LCD下面的J13LIGHT3.0V4.144.14LCD12、修改CSI&OV7720driverforSuplusSPCE3200—>ReadRectCSI驱2、SPCE3200嵌入式实验箱一台3SPCE3200CPU板模块,SD控制器,液晶屏,4×4 1JPEGJPEG(JointPhotographicExpertsGroup)是真实彩色静态影像压缩的标准适用条件为连续色调的和量化处理都会有一部分图像细节丢失,因此JPEG是属于一种有损压缩格式。部分的数据加以修饰,在转回原来形式的数据时,虽然与原始数据有些差异,但是人的眼睛却是不RGBYCbCr格式(Y代表亮度,Cb代表兰度,Cr代表红度。由于人对亮度远比对色度敏感,所以在压缩和重建图像时,可以用分YCbCr的分量。以此来达到压缩的目的。JPEG4.154.15JPEG(RGB)=255,255255(RGB(000value)CbCr则指色度(chrominance即描述图像色彩及饱和度的属性,因此需要先把RGB色彩空间转化为YUV色彩空间。YcbCr与RGB的关系如下:G=Y-0.34414(Cb-128)-0.71414(Cr-B=Y+1.77200(Cb-DCT(DiscreteConsineTransform)对一个数据元(8*8的数据块)进行DCT。先经过零偏置将每个字节的值从0~255-128~127DCT(FDCT得64DCT系数(DC,63ACHuffman编码。Huffman编码利用符号出现的概率,用短代码表示频繁出现的符号,2JPEGJPEG压缩标准中定义了压缩的方式,以及压缩资料的格式。不过因为压缩标准中并未详细描述成文件时,在不同应用程序要使用或交换时所需要的一些必备资讯,例如图像的长度、宽JFIF(JPEGFileInterchangeFormat)被提出而且广泛使用的原因。(marker2个字节长的代码,一个0XFF和一个非零或非0XFF字节。各种标记代表的意义如表表4.5。4.5JFIF3JPEG45Huffman67X‘FFD0’-8X‘FFE0’-X‘FFF0’-JPEG9X‘FF02’-在Huffman编码所生成的每个X‘FF’字节后填入一个零字eCos下为应用程序提供了JPEG驱动用于完成JPEG编/操作JPEG驱动支持标准的接口对其进行,POSIX接口把所有的设备驱动都看作是一个标准的磁盘文件,通过标准的文件操作函数open(),read(),write()完成对设备驱动的操作。4.16eCosJPEGJPEG驱open()JPEG驱动设备,并返回一个设备句柄,用于后续操作。open()函数有两个参数,第一个参数是要打开的设备标识。JPEG驱动的设备标识默认是”/dev/jpeg”,当然也可以在编译eCos库时修改设备驱动的设备标识。open()函数的第二个参数指定了对当前打开的文件的权限,由于使用JPEG驱动时既需要读也需要写,所以open()函数的第二个参数一般应为O_RDWR。intintfp_jpeg=open(“/dev/jpeg”,JPEG应用程序需要调用cyg_fs_fsetinfo()函数对JPEG驱动进行配置,以便JPEG编/器可以正确的完成编/工作。cyg_fs_fsetinfo()函数的第二个参数为配置项,JPEG驱动支持以下几种配置项CYG_IO_SET_CONFIG_JPEG_ENCODE:配置JPEGCYG_IO_SET_CONFIG_JPEG_DECODE:配置JPEG驱动工作在模CYG_IO_GET_CONFIG_JPEG_MODEJPEG驱动的工作模式:在本实验中,需要将JPEG驱动配置在编码模式下,典型代码如下:typedefstructunsignedshortwidth;unsignedshortheight;unsignedchar*////////unsigned }可以进行编码操作。JPEGtypedefstructunsignedshortwidth;unsignedshortheight;unsignedchar*////////unsigned }PICTURE_INFOBmp.width=Bmp.heightPICTURE_INFOBmp.width=Bmp.height=Bmp.size=320*240*Bmp.image=(unsignedchar*)CsiRead;write(fp_jpeg,&Bmp,sizeof(Bmp));////////JPEGPICTURE_INFOJpeg.image=//1MBJPEGread()JPEGwrite()函数类似,read()函数同样依靠指向一个事先准备好PICTURE_INFOJpeg.image=//1MBJPEGread(fp_jpeg,read(fp_jpeg,&Jpeg, 应用程序通过read()函数到的数据已经是一个完整的JPEG文件,包含了标准JPEG文件所必须的文件格式数据以及图像编码数据。应用程序可以直接将这些数据保存为*.jpg文件,或者用于4在本实验中,程序首先建立一个主线程,主要的操作都在这个线完成,该线程首先初始化用到的驱动,接下来从OV7720驱动中到的数据。由于JPEG编要求的图像数据格式为4Y4U4V,因此OV7720输出的图像格式也要求为4Y4U4V这样才能把到的数据直接送到MPEG4编码其中进行编码。LCDeCosRGB565模式,为了能液晶屏上实时的显示OV7720到的数据,就必须把4Y4U4V图像格式转换成RGB565图像格式,在SPCE3200中,BLNDMA提供了这两种图像格式的转换。OV7720到的图像经过BLNDMA转4.17eCoseCosConfigToolnetecos工程;3、向ecos工依次添加以下组件包DiskdeviceLinuxBlockcacheandaccessFATJPEGEncodeandDecode4×4KeyBoardSupportforScoreCSI&OV77204CIS&OV7720SupportoptionTheInputColorModeofCSIYUVIN;CIS&OV7720SupportoptionTheOutputColorModeofCSI为_4Y4U4Y4V,其他选项保持默认即可,如图4.18;4.18ecos5eCosHALSCOREarchitectureSunplusSPCE3200LCDTypeSPCE3200EMBox4.19ecos6default.ecceCos模板保存至工程下并将其编译,至此,带有文件系8、修改、编译(RebuildAll)直到没有任何错误3.3VJP1CH4,CH5,CH6,CH7Y1,X1,Y2,X2连接,如图 4.2010、将SD卡插入实验箱的SD内13、按下K2键结束编码,取出SD卡,在PC机下可以看到camera 在大学计划( 实验二十八图像实2、SPCE3200嵌入式实验箱一台实现功能:实现一个JPEG图像浏览器,从SD卡中JPEG文件,实现JPEG图像硬件实验现象:液晶屏上显示如图4.21。SD卡要求使用FAT/FAT32文件系统,要显示的统一放在SD卡picture 示picture 按钮,可以放大图像;点击缩小按钮,可以缩小图像;点击幻灯片按钮,以全屏的方式显示,4.21JPEG在eCos下对JPEG图像进行操作的过程与上一个实验介绍的JPEG图像编码的过程基本一致。不同的是在执行write()操作和read()操作时传递的参数的意义有所不同。进行JPEG图像的操作流程如图4.22所示。图4.22eCos下进行JPEG的流程与JPEG编码操作类似,应用程序需要使用write()函数将包含有JPEG文件数据指针的PICTURE_INFOJPEG驱动。此时,PICTURE_INFOimage域需要指向保存标准JPEG文件数据的缓冲区。从JPEG驱动读出数与JPEG编码操作类似,应用程序需要使用read()函数从JPEG驱动之后的数据,区用以保存由JPEG驱动读出的图像数据。与JPEG编码操作不同的是,JPEG驱动之后得到的数据是以RGB565格式的位图图像数据,而不是4Y4U4Y4V格式的数据。intfp_File,char*pBuf=//intfp_File,char*pBuf=//PICTURE_INFOPICTURE_INFOJpeg,fp_File=open(“/test.jpg”,O_RDONLY);Jpeg.size=read(fp_File,pBuf,1024*1024);//打开一个*.jpg//将jpgJpegfp_Jpeg=open(“/dev/jpeg”,JPEGBmp.image=malloc(1024*1024);read(fp_Jpeg,&Bmp,sizeof(Bmp);1MB2创建背景画开绘制主窗建立主窗4.23MicroWin内部提供了创建背景画开绘制主窗建立主窗一个一个窗口进入消息循4.23这个消息中完成一些初始化的工作,比如SD卡的挂载、JPEG硬件器的初始化、索引指定下的JPEG文件及显示第一幅等。在消息WM_PAINT里面对窗口进行重绘,在消WM_LBUTTONDOWM里面得到触摸屏捕获到的坐标并根据坐标值完成不同的操作。使用到的API如下: 【 【 数】hdc:现有设备上下文环境的句【函数原型】 【 【 数】hdc:设备环境句nWidth:nHeight指定位图的高度,单位为像如果函数执行失败,那么返回值为NULL【函数原型】HGDIOBJSelectObject(HDChdc,HGDIOBJ 【 数】hdc:设备上下文环境的句hgdiobj:width,MWCOORDheight,MWUCHAR【 能】该函数把565格式的位图输出到设备上下文环境【参数】hdc:x:输出到目标环境的起始横坐标y:输出到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论