雷曉龍,楊飛,張晶
(西安石油大學(xué)電子工程學(xué)院,西安 710065)
一種基于ARM Linux的視頻采集系統(tǒng)的實(shí)現(xiàn)
雷曉龍,楊飛,張晶
(西安石油大學(xué)電子工程學(xué)院,西安 710065)
隨著科學(xué)技術(shù)的快速發(fā)展,視頻監(jiān)控系統(tǒng)得到廣泛的應(yīng)用。在ARM11平臺(tái)下的嵌入式視頻采集系統(tǒng)的實(shí)現(xiàn)。首先進(jìn)行軟件和硬件開發(fā)環(huán)境的搭建;其次實(shí)現(xiàn)ARM平臺(tái)與圖像采集接口的連接,并編寫模數(shù)轉(zhuǎn)換芯片SAA7113H驅(qū)動(dòng)程序;然后實(shí)現(xiàn)視頻的實(shí)時(shí)采集和顯示以及實(shí)現(xiàn)網(wǎng)絡(luò)的實(shí)時(shí)傳輸;最后實(shí)現(xiàn)ARM Linux平臺(tái)的視頻采集系統(tǒng)。
ARM;Linux;嵌入式;視頻監(jiān)控
傳統(tǒng)意義上的視頻采集系統(tǒng)只用于安防,近幾年隨著科技的進(jìn)步,視頻采集系統(tǒng)已經(jīng)覆蓋到了人們生活的各個(gè)方面[1],例如教育、醫(yī)療、國(guó)防、生產(chǎn)等。它給我們的生活帶來了諸多的便利,相信在未來的人工智能方面會(huì)發(fā)揮更加重要的作用[2]。相對(duì)于以往的視頻采集系統(tǒng),基于Linux平臺(tái)的視頻采集系統(tǒng)更具有靈活、低成本,移植性良好等特性。因此本文提出一種基于ARM Linux平臺(tái)的視頻采集系統(tǒng),主要通過開發(fā)環(huán)境的搭建包括Uboot移植、Linux內(nèi)核移植、SAA7113H驅(qū)動(dòng)的編寫、視頻的采集顯示以及網(wǎng)絡(luò)傳輸?shù)葞讉€(gè)方面來實(shí)現(xiàn)視頻的采集及處理。
本文提出的視頻采集系統(tǒng)主要由視頻采集、實(shí)時(shí)顯示和網(wǎng)絡(luò)通信三個(gè)方面組成。首先進(jìn)行圖像的采集,采集到的圖像為模擬信號(hào),因此不能直接顯示,必須通過模數(shù)轉(zhuǎn)換芯片進(jìn)行信號(hào)的處理,最后要在屏幕顯示還需要數(shù)據(jù)處理。前端輸入我們選用普通的CCD攝像機(jī),模擬視頻采集模塊中的模數(shù)轉(zhuǎn)換芯片將模擬復(fù)合視頻信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。該數(shù)字信號(hào)需要用壓縮模塊中的壓縮芯片進(jìn)行壓縮和編碼,接下來將得到的數(shù)據(jù)交給ARM微處理器。
主芯片選用三星的S3C6410,該芯片集成了標(biāo)準(zhǔn)視頻編解碼器,模數(shù)轉(zhuǎn)換芯片選用飛利浦公司的SAA7113H,硬件平臺(tái)搭建方案如圖1所示。
圖1 整個(gè)視頻采集系統(tǒng)的框圖
嵌入式系統(tǒng)具有內(nèi)核小、專用性強(qiáng)、高實(shí)時(shí)性、需要開發(fā)工具和環(huán)境等特點(diǎn)[3]。它包含了很多功能模塊,例如系統(tǒng)內(nèi)核、驅(qū)動(dòng)接口、驅(qū)動(dòng)軟件、圖形界面、瀏覽器等。目前廣泛應(yīng)用的嵌入式操作系統(tǒng)主要有嵌入式Linux、實(shí)時(shí)操作系統(tǒng) VxWorks、WindowsCE等,在手機(jī)上廣泛應(yīng)用的有Android、iOS等[4]。本次設(shè)計(jì)所選用的系統(tǒng)為運(yùn)行在虛擬機(jī)上Linux系統(tǒng),之所以選擇Linux,不僅是因?yàn)樗Y源豐富,最重要一點(diǎn)是因?yàn)樗情_源的。
為了讓PC上編寫的程序可以在下位機(jī)運(yùn)行,這就需要搭建交叉開發(fā)環(huán)境。主機(jī)和從機(jī)通過UART連接。接下來將從Bootloader的移植、Linux內(nèi)核的移植、以及根文件系統(tǒng)的創(chuàng)建等方面進(jìn)行闡述。
A.Bootloader的移植
Bootloader相當(dāng)于Bios系統(tǒng),其實(shí)就是內(nèi)核運(yùn)行之前的一段代碼,它的作用無非就是初始化CPU、內(nèi)存、串口、代碼自拷貝,跳轉(zhuǎn)到內(nèi)存執(zhí)行[5]。本文中使用的引導(dǎo)加載程序是是通用Bootloader配置而來,簡(jiǎn)稱U-boot。U-boot可以根據(jù)自己的需求進(jìn)行定制。通過UART將Uboot1.3.2下載到開發(fā)板RAM中,然后將Bootloader寫入開發(fā)板的Flash。U-Bootz主要用于加載和引導(dǎo)內(nèi)核鏡像,同時(shí)它允許更改存儲(chǔ)在Flash中的內(nèi)核鏡像和根文件系統(tǒng)[6]。
B.Linux內(nèi)核移植
首先從Linux官網(wǎng)下載Linux3.0.1bk tar.bz2源碼安裝包,接下來對(duì)源碼進(jìn)行解壓縮;然后在Linux主機(jī)上安裝交叉編譯環(huán)境:下載并安裝arm-linux-gcc編譯器,同時(shí)需要修改內(nèi)核的Makefile:選擇架構(gòu)ARM,并從系統(tǒng)中給出arm-linux-gcc的路徑;接下來需要配置內(nèi)核;最后進(jìn)行內(nèi)核的編譯。內(nèi)核編譯后,將在arch/arm/boot目錄中生成三個(gè)內(nèi)核映像文件“Image”、“zIm?age”和“uImage”,Image是映像文件的正常大小,zImage是壓縮的內(nèi)核映像文件。Uboot映像由zImage和Ubootloaderheader文件組成。需要將zImage下載到開發(fā)板中,下載工具選用dnw工具。
C.根文件系統(tǒng)的構(gòu)建
根文件系統(tǒng)主要是為了開發(fā)板和Linux主機(jī)之間進(jìn)行交互,用戶不用擔(dān)心底層怎樣實(shí)現(xiàn),Linux根文件系統(tǒng)遵循FHS標(biāo)準(zhǔn)(Filesystem Hierarchy Standard,文件系統(tǒng)層次標(biāo)準(zhǔn))。根文件系統(tǒng)創(chuàng)建需要用到busyb?ox。首先創(chuàng)建文件系統(tǒng)rootfs,并把busybox編譯生成的bin、usr、sbin三個(gè)子目錄復(fù)制到rootfs目錄下,并在該目錄下創(chuàng)建 dev、lib、etc、var、temp等子目錄,在 etc目錄下建立init.d目錄。接下來需要準(zhǔn)備inittab、fstab、linuxrc、rcS。inittab和fstab文件都放到etc目錄下,然后需要在dev目錄下執(zhí)行命令#mknod console c 5 1,創(chuàng)建consle節(jié)點(diǎn)。最后將busybox需要的動(dòng)態(tài)鏈接庫:libcrypt.so.1、libc.so.6、ldlinux.so.2拷貝到 lib目錄下。這樣根文件系統(tǒng)構(gòu)建即完成。
V4L2是Video For Linux Two的簡(jiǎn)稱,它是Linux下的一種通用視頻架構(gòu),它具有豐富的函數(shù)接口,對(duì)于程序員來說,不用關(guān)心它具體的底層實(shí)現(xiàn)[7],V4L2具體的圖像采集流程如圖2所示。在Linux系統(tǒng)中,視頻設(shè)備可看作一個(gè)文件,使用open函數(shù)打開視頻設(shè)備設(shè)定屬性及采集方式;用VIDIOC_QUERYSTD來檢測(cè)當(dāng)前視頻設(shè)備支持的標(biāo)準(zhǔn);設(shè)定視頻捕獲格式;完成內(nèi)存分配;獲取并記錄緩存的物理空間;最后采用mmap函數(shù)進(jìn)行視頻采集。
圖2 視頻采集流程圖
該部分的功能是利用Linux提供的幀緩沖設(shè)備(fr?amebuffer),該機(jī)制可以讓應(yīng)用程序把采集到的圖像在屏幕上顯示出來[8]。
幀緩沖(framebuffer)是Linux為顯示設(shè)備提供的一個(gè)接口,由于Linux下一切設(shè)備皆文件,因此將其抽象成一種設(shè)備文件,用戶通過此文件可以對(duì)緩沖區(qū)直接進(jìn)行讀寫。在Linux操作系統(tǒng)中,/dev/fb*為幀緩沖設(shè)備所對(duì)應(yīng)的文件,Linux下最多支持32個(gè)幀緩沖設(shè)備。幀緩沖設(shè)備為標(biāo)準(zhǔn)字符設(shè)備,主設(shè)備號(hào)為29,次設(shè)備號(hào)為0到31[9]。在Linux中打開/dev/fb設(shè)備文件,其為顯存所對(duì)應(yīng)的設(shè)備文件;計(jì)算緩沖區(qū)大??;用mmap函數(shù)將屏幕緩沖區(qū)的地址映射到用戶空間的虛擬地址上;進(jìn)行圖像顯示;其操作流程如圖3所示:
圖3 LCD顯示流程
將系統(tǒng)的的軟件和硬件完成后,需要對(duì)整個(gè)系統(tǒng)的軟硬件進(jìn)行調(diào)試。利用已經(jīng)建立好的共享文件夾和友善之臂開發(fā)板對(duì)圖像系統(tǒng)進(jìn)行測(cè)試,最后在LCD上采集到的視頻如圖4所示。實(shí)驗(yàn)結(jié)果表明,本文所提出的基于ARM Linux的視頻采集系統(tǒng)能夠較好的采集到實(shí)時(shí)顯示清晰流暢的畫面,而且采集到圖像畫面的穩(wěn)定性好,系統(tǒng)所實(shí)現(xiàn)的效果可以滿足生活中對(duì)于視頻監(jiān)控的要求,在實(shí)際中具有很高的實(shí)用性和推廣性。
圖4 所采集到的圖像
本文詳細(xì)論述了基于ARM11架構(gòu)和Linux操作系統(tǒng)的嵌入式視頻采集系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),首先從芯片的選型以及S3C6410開發(fā)板的硬件描述以及CCD攝像頭的連接方式進(jìn)行描述,其次構(gòu)建了Linux交叉開發(fā)環(huán)境,并在嵌入式平臺(tái)上完成了U-boot、Linux內(nèi)核以及根文件系統(tǒng)的移植。,最后整個(gè)系統(tǒng)實(shí)現(xiàn)了較為清晰的視頻采集,并且具有畫面具有良好的穩(wěn)定性。本文沒有實(shí)現(xiàn)視頻的錄像,拍照以及實(shí)時(shí)傳輸功能,所以在后續(xù)的研究中,將針對(duì)這些功能進(jìn)行研究和改進(jìn),提高該系統(tǒng)的完整性。
[1]李向東.數(shù)字視頻監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[碩士學(xué)位論文].西安:長(zhǎng)安大學(xué),2008.
[2]張亞峰.安防監(jiān)控系統(tǒng)集成軟件設(shè)計(jì)[碩士學(xué)位論文].南京:南京理工大學(xué),2005.
[3]徐力,孔巖.視頻監(jiān)控系統(tǒng)的現(xiàn)狀和發(fā)展趨勢(shì).信息技術(shù)與信息化,2005,17(4):61-62
[4]駱云志,劉治紅.視頻監(jiān)控技術(shù)發(fā)展綜述.兵工自動(dòng)化,2009,28(1):2-5
[5]Hampapur A,Brown L,Connel J,et al.Smart Video Surveillance:Exploring Theconcept of Multiscale Spatiotemporal Tracking.IEEE Signal Processing Magazine,2005,22(2):38-51
[6]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè).北京:人民郵電出版社,2009.65
[7]王金龍.嵌入式操作系統(tǒng)開發(fā)與應(yīng)用程序設(shè)計(jì).北京:清華大學(xué)出版社,2009.78
[8]Daniel P.Bovet,Marco Cesati.深入理解Linux內(nèi)核.陳莉君,張瓊聲,張宏偉譯.北京:中國(guó)電力出版社,2007.156
[9]趙炯.Linux內(nèi)核完全剖析.北京:機(jī)械工業(yè)出版社,2010,278
[10]陳立定,楊俊輝,陳偉欣.使用Busybox制作Cramfs根文件系統(tǒng).計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(4):146-148
Implementation of a Video Acquisition System Based on ARM Linux
LEI Xiao-long,YANG Fei,ZHANG Jing
(School of Electronic Engineering,Xi'an Petroleum University,Xi'an 710065)
With the rapid development of science and technology,video surveillance system has been widely used.Introduces the realization of embed?ded video capture system under ARM11 platform.First of all,builds the software and hardware development environment.Next,achieves the connection of ARM platform and image acquisition interface,and the preparation of analog-to-digital conversion chip SAA7113H driv?er program.Then realizes the real-time video capture and display and real-time transmission of the network.Finally,realizes the video cap?ture system of ARM Linux platform.
ARM;Linux;Embedded;Video Surveillance
1007-1423(2017)33-0061-04
10.3969/j.issn.1007-1423.2017.33.015
雷曉龍(1991-),男,陜西渭南人,碩士研究生,學(xué)生,研究方向?yàn)榍度胧介_發(fā)
2017-09-28
2017-11-20