日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]嵌入式Linux視頻采集系統(tǒng)的設計與實現(xiàn)

摘要:本文以嵌入式微處理器S3C2410為核心,對Linux下的視頻采集技術進行了詳細分析。信號采集使用USB攝像頭,介紹了Video4Linux編程接口的使用方法,給出了Linux下視頻采集的實現(xiàn)過程。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

structvideo_channelchannel:關于各個信號源的屬性,如channel(信號源編號)、name(名稱)、tuners(信號源通道)、type(類型)、Norm(制式)等。

structvideo_picturepicture:包含關于capturearea的信息。

structvideo_mmapmmap:用于內存映射。

structvideo_mbufmbuf:利用mmap進行映射的幀信息,即輸入到攝像頭存儲緩沖區(qū)中的幀信息,包括size(幀的大小)、frames(最多支持的幀數(shù))、offsets(每幀相對基址的偏移)。[!--empirenews.page--]

在本系統(tǒng)中,程序主要用到的一些系統(tǒng)調用函數(shù)如下:open(“/dev/video0”,O_RDWR):設備的打開。

close(fd):設備的關閉。

mmap(voidaddr,size_tlen,intprot,intflags,intfd,off_toffset):設備緩沖區(qū)到內存空間的映射。

munmap(voidaddr,size_tlen):采集工作結束后取消mmap和mbuf的綁定。

ioctl(intfd,intcmd,。。。):控制I/O通道。

4。2。2視頻采集程序的實現(xiàn)1)打開攝像頭首先對上面提到的類進行初始化,接下來利用系統(tǒng)調用函數(shù)_fd=open(“devfile”,O_RDWR),該函數(shù)的功能是打開參數(shù)devfile指定的設備,對于攝像頭用設備文件名“/dev/video0”表示,_fd是設備打開后返回的文件描述符,以后可以直接使用它來對設備文件進行操作。

2)獲取攝像頭參數(shù)通過ioctl(_fd,VIDIOCGCAP,&capability)函數(shù)來讀取structvideo_capability結構中有關攝像頭的信息。ioctl(int_fd,intcmd,。。。)主要是用來控制I/O通道,函數(shù)成功返回后使用printf函數(shù)得到各成員分量信息,接著調用ioctl(_fd,VIDIOCGWIN,&window)和ioctl(_fd,VIDIOCGPICT,&picture)函數(shù)讀取structvideo_window信息和攝像頭緩沖區(qū)中的video_picture圖像信息。

3)設置攝像頭緩沖區(qū)中圖像參數(shù)在采集攝像頭視頻數(shù)據前,可根據需求修改圖像參數(shù)如分辨率等,具體方法為先給分量賦新值,再調用函數(shù)ioctl(_fd,VIDIOCSPICT,&picture)。

4)視頻數(shù)據的讀取與read()方式相比,mmap()方式通過把設備文件映射到內存,繞過了內核緩沖區(qū),加速了I/O訪問。完成內存映射之后,就可以用mmap()方式實現(xiàn)對內存映射區(qū)域視頻數(shù)據的單幀采集。此方式下真正做視頻截取的為VIDIOCMCAPTURE,調用函數(shù)ioctl(_fd,VIDIOCMCAPTURE,&mmap),激活設備并真正開始一幀圖像的截取,是非阻塞的,接著調用ioctl(_fd,VIDIOCSYNC,&frame)函數(shù)等待一幀圖像截取結束,成功返回表示一幀截取已完成,接著可以做下一次的VIDIOCMCAPTURE操作。

經過上述的幾個過程,系統(tǒng)完成了對USB攝像頭的驅動、對視頻數(shù)據的采集工作,捕獲到的視頻幀被映射到內存區(qū)域,如果要對視頻數(shù)據進行壓縮等處理工作則可通過訪問內存映射區(qū)域進行。

5結語作為網絡視頻監(jiān)控系統(tǒng)的一部分,本方案基于目前市場上主流的ARM處理器與嵌入式Linux操作系統(tǒng),實現(xiàn)了視頻數(shù)據的實時采集,整個系統(tǒng)數(shù)字化、網絡化程度高,與傳統(tǒng)的采集系統(tǒng)相比有較大優(yōu)勢。經辦公室局域網測試,該系統(tǒng)實時性好、穩(wěn)定可靠、圖像質量也比較優(yōu)越,可廣泛應用在交通、銀行、工業(yè)監(jiān)控及視頻會議等眾多領域。目前該項目產生的經濟效益約為20萬元。

本文作者創(chuàng)新點:設計了一個基于嵌入式Linux的視頻采集系統(tǒng),詳細介紹了Video4Linux下USB攝像頭驅動和視頻采集程序的實現(xiàn)過程。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

本文將演示一種加速嵌入式系統(tǒng)設計原型階段的方法,說明如何將與硬件無關的驅動程序和傳感器結合使用,簡化整個嵌入式系統(tǒng)的器件選擇。同時還將介紹嵌入式系統(tǒng)的器件、典型軟件結構以及驅動程序的實現(xiàn)。后續(xù)文章“利用與硬件無關的方法簡...

關鍵字: 嵌入式系統(tǒng) 驅動程序 傳感器

隨著科技的飛速發(fā)展,嵌入式系統(tǒng)已經成為現(xiàn)代生活不可或缺的一部分,它們被廣泛應用于從智能家居到自動駕駛汽車的各個領域。而在這些系統(tǒng)中,C語言由于其高效性、可移植性和對硬件的直接控制能力,成為了嵌入式系統(tǒng)開發(fā)的首選語言。

關鍵字: C語言 驅動程序

北京2024年12月15日 /美通社/ -- 日前,OCTC發(fā)布《BMC開放固件產業(yè)報告》,該報告由中國電子技術標準化研究院、阿里云、浪潮信息等機構、企業(yè)聯(lián)合編撰,深度剖析了傳統(tǒng) BMC 在智能時代下面臨的挑戰(zhàn),并全面解...

關鍵字: OCT 固件 TC PEN

北京2024年11月20日 /美通社/ -- 日前,開放計算標準工作委員會(OCTC)與OCP中國社區(qū)共同主辦了"面向應用的服務器算效標準與評估"開放計算技術沙龍。浪潮信息出席會議。會上,為推動算力產...

關鍵字: 數(shù)據庫 OCT TC 虛擬化

每個嵌入式軟件應用程序都必須在某個時候訪問最低級別的固件并控制硬件。驅動程序的設計和實現(xiàn)對于確保系統(tǒng)能夠滿足其實時要求至關重要。

關鍵字: 嵌入式 驅動程序

北京2024年10月10日 /美通社/ -- 日前,在"2024中國算力大會"上,中國電子工業(yè)標準化技術協(xié)會開放計算標準工作委員會(OCTC)正式發(fā)布《算力工廠建設指南白皮書》(以下簡稱白皮書),創(chuàng)新...

關鍵字: OCT TC 數(shù)據中心 AI

南京2024年8月19日 /美通社/ -- 8月17日,「千名專家魚躍行」系列學術會議在魚躍全球產業(yè)化基地召開。會議邀請了來自江蘇省人民醫(yī)院、江蘇大學附屬醫(yī)院等全國多家醫(yī)院的血糖領域專家,共同探討糖尿病管理的前沿技術與臨...

關鍵字: 血糖 測試 OCT 智能化

在Linux內核開發(fā)中,字符設備驅動程序是連接硬件設備與用戶空間應用程序的重要橋梁。本文將詳細介紹如何編寫一個基本的字符設備驅動程序,從理論框架到實際代碼實現(xiàn),再到測試和部署。

關鍵字: Linux 字符設備 驅動程序

北京2024年8月5日 /美通社/ -- 8月8日,2024開放計算中國峰會將在北京舉行,峰會由開放計算社區(qū)OCP及開放標準組織OCTC(中國電子工業(yè)標準化技術協(xié)會開放計算標準工作委員會)聯(lián)合主辦,以"開放協(xié)同...

關鍵字: TC OCT 數(shù)據中心 字節(jié)跳動

USB攝像頭是一種采用USB接口的視頻采集設備,其優(yōu)點在于即插即用、操作簡便,無需額外驅動程序,支持筆記本電腦,并且成本較低,可以支持遠程網絡觀看。

關鍵字: usb攝像頭 驅動程序
關閉