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