<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux視頻采集系統的設計與實(shí)現

嵌入式Linux視頻采集系統的設計與實(shí)現

作者: 時(shí)間:2012-04-20 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:本文以微處理器S3C2410為核心,對下的技術(shù)進(jìn)行了詳細分析。信號使用USB攝像頭,介紹了Video4編程接口的使用方法,給出了過(guò)程。

本文引用地址:http://dyxdggzs.com/article/149194.htm

1引言多媒體通信技術(shù)的發(fā)展為信息的獲取和傳輸提供了豐富的手段,采集是其中不可缺少的重要組成部分。視頻采集的手段多種多樣,隨著(zhù)人們對降低成本和提高可靠性的迫切需求,基于的視頻采集成為新的研發(fā)熱點(diǎn)。本方案以S3C2410微控制器作為硬件平臺,通過(guò)移植具有硬件功能的Linux操作,了對視頻數據的實(shí)時(shí)采集和存儲。

2系統構成系統平臺采用三星公司的處理器S3C2410,該處理器內部集成了ARM920T處理器核,為32位微控制器,帶獨立的16KB指令Cache和16KB數據Cache,LCD控制器,RAM控制器,NANDFlash控制器,并行I/O口,8路10位ADC,主頻最高可達203MHZ。在處理器豐富資源的基礎上進(jìn)行了相關(guān)的配置和擴展,平臺配置了64Mbytes8位的NAND閃存和64Mbytes32位的SDRAM,通過(guò)以太網(wǎng)控制器芯片CS8900A擴展了一個(gè)網(wǎng)口,另外引出一個(gè)串行接口和兩個(gè)HOST/DEVICEUSB接口。通過(guò)在USB接口上外接一個(gè)USB攝像頭,將采集到的視頻圖像數據放入存儲器緩沖區中,或者用JPEG壓縮處理程序處理緩沖區的圖像數據并保存,數據可存儲在NAND閃存中等待遠程主機的訪(fǎng)問(wèn),也可通過(guò)CS8900A擴展的網(wǎng)絡(luò )接口將視頻數據直接發(fā)送到遠程網(wǎng)中的控制主機上。圖1為系統的硬件圖,其中USB口接數碼攝像頭,串口、網(wǎng)口作為輸入輸出設備,NAND閃存和SDRAM作為存儲設備,JTAG口用來(lái)把Linux操作系統和應用程序燒寫(xiě)進(jìn)Flash存儲器。

圖1視頻采集系統硬件框圖3嵌入式Linux概述Linux具有內核小,效率高,源代碼開(kāi)放,微內核直接提供網(wǎng)絡(luò )支持等優(yōu)點(diǎn)。在中低端嵌入式網(wǎng)絡(luò )設備的應用中,比起VxWorks等其他操作系統有許多優(yōu)勢,逐漸成為嵌入式操作系統的主流。但嵌入式系統的硬件資源畢竟有限,不能直接將其作為嵌入式硬件平臺上的操作系統,需要針對具體的應用進(jìn)行內核的配置和裁減,使整個(gè)系統能夠存放到容量較小的Flash中。Linux的動(dòng)態(tài)模塊加載方式使Linux的裁剪極為方便,高度模塊化使得添加和刪減非常容易。

系統采用交叉編譯調試,PC機作為宿主機,對應的嵌入式系統平臺叫做目標板。嵌入式Linux提供了一套完整的工具鏈(toolchain),它利用GNU的gcc做編譯器,用gdb、xgdb做調試工具,能夠很方便地實(shí)現從操作系統內核到用戶(hù)態(tài)應用軟件各個(gè)級別的調試。嵌入式Linux的移植過(guò)程如圖2所示,在此不作具體闡述。

圖2Linux系統開(kāi)發(fā)流程圖4軟件4。1攝像頭驅動(dòng)在Linux環(huán)境下,所有的外設都被看成一類(lèi)稱(chēng)為“設備文件”的特殊文件,系統中所有硬件都可以用一個(gè)特殊的設備文件來(lái)表示。在本系統中,USB攝像頭被作為一種字符設備來(lái)對待,用/dev/video0來(lái)表示。相對于應用程序來(lái)講,硬件是不透明的,設備驅動(dòng)程序屏蔽了硬件在實(shí)現上的細節,應用程序必須依靠相應驅動(dòng)程序中定義的通信接口實(shí)現對硬件的操作。

Video4Linux(簡(jiǎn)稱(chēng)V4L)是Linux系統關(guān)于視頻設備的內核驅動(dòng)程序,它為針對視頻設備的應用程序編程提供一系列接口函數。對于USB接口攝像頭,驅動(dòng)程序中提供了基本的I/O操作接口函數open、read、write、close的實(shí)現,對中斷的處理實(shí)現,內存映射功能以及對I/O通道的控制接口函數ioctl的實(shí)現等,并在structfile_operations數據結構中定義了這些函數,當應用程序對設備文件進(jìn)行例如read、write等操作時(shí),嵌入式Linux內核通過(guò)strcutfile_operations數據結構訪(fǎng)問(wèn)驅動(dòng)程序提供的函數。

驅動(dòng)程序基本結構如下:1)驅動(dòng)的注冊與注銷(xiāo)通過(guò)在驅動(dòng)程序的初始化過(guò)程中調用register_chrdev()或register_blkdev()函數來(lái)添加驅動(dòng)程序并分配主設備號;通過(guò)調用unregister_chrdev()或unregister_blkdev()函數從內核中注銷(xiāo)設備,同時(shí)釋放其占用的主設備號。

2)設備文件的打開(kāi)與釋放調用file_operations結構體中的Open()函數打開(kāi)設備;調用file_operations結構中的函數release()關(guān)閉設備。

3)設備的讀/寫(xiě)操作使用函數read()和write()完成對設備的讀和寫(xiě)。

4)設備的控制操作通過(guò)設備驅動(dòng)程序中的函數ioctl()來(lái)完成。ioctl()的用法與具體設備密切關(guān)聯(lián),因此需要根據設備的情況進(jìn)行具體分析。

5)設備的中斷和輪流查詢(xún)處理由于有些硬件設備不支持中斷,那么在對其讀寫(xiě)時(shí)需要輪流查詢(xún)設備狀態(tài),以便決定是否繼續進(jìn)行數據傳輸。如果硬件設備支持中斷,則可以按中斷方式進(jìn)行操作。

4。2視頻采集在USB攝像頭驅動(dòng)被加載成功后,還要編寫(xiě)視頻流采集應用程序。攝像頭中各種I/O口的控制依靠Video4Linux提供的應用程序接口函數實(shí)現,主要有Open、Read、Write等。V4L下的視頻采集工作原理如圖3。在本系統中,將有關(guān)攝像頭的各種數據和結構封裝成了一個(gè)類(lèi)。

圖3V4L下視頻采集工作模型4。2。1Video4Linux定義的數據結構structvideo_capabilitycapability:包含攝像頭設備的基本信息(設備名稱(chēng)、支持的最大最小分辨率、信號源信息等),分別對應著(zhù)結構體中成員變量name[32],maxwidth,maxheight,minwidth,minheight,channels(信號源個(gè)數),type等。

structvideo_windowwindow:包含采集到圖像的各種屬性,如brightness(亮度)、hue(色調)、color(顏色)、contrast(對比度)、whiteness(色度)、depth(深度)等。

structvideo_channelchannel:關(guān)于各個(gè)信號源的屬性,如channel(信號源編號)、name(名稱(chēng))、tuners(信號源通道)、type(類(lèi)型)、Norm(制式)等。

structvideo_picturepicture:包含關(guān)于capturearea的信息。

structvideo_mmapmmap:用于內存映射。

structvideo_mbufmbuf:利用mmap進(jìn)行映射的幀信息,即輸入到攝像頭存儲緩沖區中的幀信息,包括size(幀的大小)、frames(最多支持的幀數)、offsets(每幀相對基址的偏移)。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>