實驗指導書spce3200箱ecos多媒體篇_第1頁
實驗指導書spce3200箱ecos多媒體篇_第2頁
實驗指導書spce3200箱ecos多媒體篇_第3頁
實驗指導書spce3200箱ecos多媒體篇_第4頁
實驗指導書spce3200箱ecos多媒體篇_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

保留對此文件修改之權利且不另行通知。所提供之信息相信為正確且可靠之信息,但并不保證本文件中絕無錯誤。請于向提出訂單前,自行確定所使用之相關技術文件及規(guī)格為之版本。若因貴公司使用本公司之文件或產品,而涉及第三人之專利或著作權等智能財之應用及配合時,則應由貴公司負責取得同意及,本公司僅單純販售產品,上述關于同意及,非屬本公司應為保證之責任。又 科技之正式 ,本公司之所有產品不得使用于醫(yī)療器材,維持生命本是結合SPCE3200教學實驗平臺而設計,與課堂教學內容結合緊密。本書主要針對嵌入eCosSPCE3200eCos下的功能使用,且附有范例程序。實驗內容淺顯易懂,讀者通過這些實驗的學習,可以逐步掌握SPCE3200嵌入式教學平臺在嵌入式操作系統(tǒng)eCos下的編程方法。;;第四章:多實驗(主要內容為音頻、、圖像編等實驗。進行連接后,程序可直接運行,使讀者達到節(jié)省時間、快速入門的目的。目4多實 MP3實 【實驗目的 【實驗設備 【實驗要求 【實驗原理 【實驗步驟 【范例路徑 【實驗目的 【實驗設備 【實驗要求 【實驗原理 【實驗步驟 【范例路徑 【實驗目的 【實驗設備 【實驗要求 【實驗原理 【實驗步驟 【范例路徑 圖像實 【實驗目的 【實驗設備 【實驗要求 【實驗原理 【實驗步驟 【范例路徑 實實驗二十五MP3實2、SPCE3200嵌入式實驗箱一臺盤的前四個按鍵控制MP3的。四個按鍵的功能分配如圖4.1所示。 A 上一 4.1當按下“/停止”鍵時,如果此時正在MP3或MP3處于暫停狀態(tài),則停止,否則啟動當前曲目;當按下“上一曲”時,如果此時正在MP3或MP3處于暫停狀態(tài),則停止當前曲目,并啟動上一曲目;當按下“下一曲”時,如果此時正在MP3或MP3處于暫停狀態(tài),則停止當前曲目,并啟動下一曲目;當按下“暫停/恢復”時,如果此時正在播放MP3,則暫停,如果此時MP3處于暫停狀態(tài),則恢復;MP3的全稱是MovingPictureExpertsGroupAudioLayerIII。是較流行的一種數字音頻編碼的不壓縮音頻相比并沒有明顯的下降。它是在1991年由位于德國埃爾朗根的研究組織Fraunhofer-Gesellschaft的一組工程師發(fā)明和標準化的。MPEG音頻文件是MPEG1標準中部分,也叫MPEG音頻層,它根據壓縮質量和編碼復使用了許多技術其中包括心理聲學以確定音頻的哪一部分可以丟棄等。MP3音頻可以按照不同的位的選擇。典型的MP3文件的碼率介于每秒128kb和320kb之間。與此對照的是,CD上壓縮的1411.2kbit/s(16位/采樣點×44100采樣點/秒×2通道)。2、在eCos上程序可以非常方便的MP3音頻文件。圖4.2所示的是MP3組件與其他組件的關系框圖。應用程序不能使用MP3器直接對音頻碼流進行,而需要通過FileIO組件文件系統(tǒng),以便讓其介質(如SD卡、ROM等)MP3MP3FileaccesslibraryDiskSD圖4.2MP3器與其他組件的關MP3器組件為應用程序提供了一套完整的API,這些API的函數原型和功能描述如下【函數原型】int【 能】初始化MP3【 0,否則返回-【 明】該函數必須在使用其他MP3器API函數之前被調用,并且該函數通常只被【函數原型】intMP3_Configure(unsignedlongcmd,unsignedlong【 能】配置MP3 數】cmd:配置命令??蛇x值及配置命令的意義參考表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音頻數據流的函數。這些函數的形式、參數以及完成的作用與文件系統(tǒng)類似,如,open函數被器用來啟動數據流的操作,類似于文件系統(tǒng)中打開文件的操作;read函數被器用來從數據流中順序一定量的數據,類似于從文件中數據的操作;lseek函數被器用來在數據流中進行定位,類似于對文件進行隨機定位;close函數被解用來結束數據流的,類似于關閉文件的操作。在調用MP3_Play()函數時將PlayCallback參數置為NULL,表示使器直接使用文件系統(tǒng)來數據流。在某些特殊應用中,用戶可以自定義這些函數,以便完成對非標準MP3文件形式的數據流的存取?!?【 數】pMP3Info:用于保存MP3文件信息的結構體指【 明】用于保存MP3文件信息的結構體mp3_info_t包含的成員及說明參考表4.24.2mp3_info_ttypedefstruct{enum{MPEG1,MPEG2,MPEG25}MPEG編碼規(guī)范(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。例如,執(zhí)MP3_Set_Volume_Boundary(4)后,音量的可調范圍將變?yōu)椋?~16。系統(tǒng)默認值 【 【 數】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傳感器則在改善分辨率與靈敏度方面的不足,以應用于更高端的圖像產品,大有后來者居上之勢?,F在,國內照相多采用CMOS頭,其圖像傳感器產品例如OmniVision公司產轉換后變?yōu)閿底謭D像信號,再送到數字信號處理中處理并通過接口總線輸出,其功能框圖如圖圖4.10頭工作原SPCE3200CMOS傳感器接口(CSI)COMS傳感器進行連接,并在內部控制器的控制下接收COMS傳感器發(fā)出的時鐘和數據,并將影像數據傳送到DRAM中。SPCE3200CSI單元具有如下特性支持兩種清晰度的信號:QVGA(320×240)、SPCE3200的CSI單元的結構如圖4.11所示。CMOS影像傳感器在捕獲圖像信息的過會實處理、然后再把格式化的數據傳送到指定4.11CSIeCos系統(tǒng)中,所有設備都是以文件的形式被打開并進行讀/POSIX兼容的文件操作接口函數對底層設備進行操作。POSIXeCos基礎實驗篇的實驗二——跑馬燈實驗中已經介紹。這里只介紹使用文件系統(tǒng)對頭的控制方法。具體控制頭的首先調用函數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頭配置相關標頭的區(qū)域信對頭完成配置工作之后,通過調用函數read(fd,CsiRead,len)可以頭圖像的數據。其中fd為使用open打開頭設備成功返回的設備句柄,CsiRead為數據的緩沖區(qū),len為長度。具體頭的哪部分數據是通過上一步設置頭數據有關的選項實現的。通常情況下,用戶如果希望將的圖像數據顯示在LCD屏幕上,可以調用函數lcd_drawrgb((unsignedshort*)CsiRead,50,50,CsiConfig.ReadSizeX,CsiConfig.ReadSizeY)來完成該工作。其中CsiRead為上一步的數據首地址;50,50表示在LCD上顯示的起始坐標;LCD顯BLNDMA打 頭 LCD顯BLNDMA打 頭 創(chuàng)建線程創(chuàng)建線程線程 圖4.12實驗流程2、刪除工程文件夾下的“default_install” 4、加入POSIX文件系統(tǒng)包“FileIO”和頭驅動包“CSI&OV7720Support”;5、修改選項eCosHAL>SCOREarchitecture>sunplusSPCE3200>LCDType圖4.13頭相關配置選4.4表4.4頭配置選項的意AdditionalcomplilerTheResolutionconfigforCSI&TheInputColorModeofTheOutputColorModeofCSICSICSICSIBuffer如果此值為0表示頭的工作緩沖區(qū)與LCD工作緩沖區(qū)1則選擇CSIBuffer1ReadstartofReadstartofReadsizeofReadsizeof 9、修改、編譯(RebuildAll)直到沒有任何錯誤10LCD下面的J13LIGHT3.0V4.144.14LCD12、修改CSI&OV7720driverforSuplusSPCE3200—>ReadRectCSI驅2、SPCE3200嵌入式實驗箱一臺3SPCE3200CPU板模塊,SD控制器,液晶屏,4×4 1JPEGJPEG(JointPhotographicExpertsGroup)是真實彩色靜態(tài)影像壓縮的標準適用條件為連續(xù)色調的和量化處理都會有一部分圖像細節(jié)丟失,因此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。先經過零偏置將每個字節(jié)的值從0~255-128~127DCT(FDCT得64DCT系數(DC,63ACHuffman編碼。Huffman編碼利用符號出現的概率,用短代碼表示頻繁出現的符號,2JPEGJPEG壓縮標準中定義了壓縮的方式,以及壓縮資料的格式。不過因為壓縮標準中并未詳細描述成文件時,在不同應用程序要使用或交換時所需要的一些必備資訊,例如圖像的長度、寬JFIF(JPEGFileInterchangeFormat)被提出而且廣泛使用的原因。(marker2個字節(jié)長的代碼,一個0XFF和一個非零或非0XFF字節(jié)。各種標記代表的意義如表表4.5。4.5JFIF3JPEG45Huffman67X‘FFD0’-8X‘FFE0’-X‘FFF0’-JPEG9X‘FF02’-在Huffman編碼所生成的每個X‘FF’字節(jié)后填入一個零字eCos下為應用程序提供了JPEG驅動用于完成JPEG編/操作JPEG驅動支持標準的接口對其進行,POSIX接口把所有的設備驅動都看作是一個標準的磁盤文件,通過標準的文件操作函數open(),read(),write()完成對設備驅動的操作。4.16eCosJPEGJPEG驅open()JPEG驅動設備,并返回一個設備句柄,用于后續(xù)操作。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文件系統(tǒng),要顯示的統(tǒng)一放在SD卡picture 示picture 按鈕,可以放大圖像;點擊縮小按鈕,可以縮小圖像;點擊幻燈片按鈕,以全屏的方式顯示,4.21JPEG在eCos下對JPEG圖像進行操作的過程與上一個實驗介紹的JPEG圖像編碼的過程基本一致。不同的是在執(zhí)行write()操作和read()操作時傳遞的參數的意義有所不同。進行JPEG圖像的操作流程如圖4.22所示。圖4.22eCos下進行JPEG的流程與JPEG編碼操作類似,應用程序需要使用write()函數將包含有JPEG文件數據指針的PICTURE_INFOJPEG驅動。此時,PICTURE_INFOimage域需要指向保存標準JPEG文件數據的緩沖區(qū)。從JPEG驅動讀出數與JPEG編碼操作類似,應用程序需要使用read()函數從JPEG驅動之后的數據,區(qū)用以保存由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創(chuàng)建背景畫開繪制主窗建立主窗4.23MicroWin內部提供了創(chuàng)建背景畫開繪制主窗建立主窗一個一個窗口進入消息循4.23這個消息中完成一些初始化的工作,比如SD卡的掛載、JPEG硬件器的初始化、索引指定下的JPEG文件及顯示第一幅等。在消息WM_PAINT里面對窗口進行重繪,在消WM_LBUTTONDOWM里面得到觸摸屏捕獲到的坐標并根據坐標值完成不同的操作。使用到的API如下: 【 【 數】hdc:現有設備上下文環(huán)境的句【函數原型】 【 【 數】hdc:設備環(huán)境句nWidth:nHeight指定位圖的高度,單位為像如果函數執(zhí)行失敗,那么返回值為NULL【函數原型】HGDIOBJSelectObject(HDChdc,HGDIOBJ 【 數】hdc:設備上下文環(huán)境的句hgdiobj:width,MWCOORDheight,MWUCHAR【 能】該函數把565格式的位圖輸出到設備上下文環(huán)境【參數】hdc:x:輸出到目標環(huán)境的起始橫坐標y:輸出到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論