,
(華北電力大學 控制與計算機工程學院,保定 071000)
視頻監控系統能夠應用在許多領域,無論是安全防范、網絡直播還是視頻會議,都能看到它的影子。與文字、語音等形式相比,視頻監控系統更加直觀、方便,信息內容更加豐富。隨著嵌入式技術的發展和進步,視頻監控系統也得到了快速的發展,從原來的模擬視頻監控發展到現在的嵌入式視頻監控,并得到了廣泛的應用,成為視頻監控領域的一個應用熱點。本文設計了以嵌入式Linux操作系統和Hi3521A硬件平臺為核心的多路視頻監控系統。
為實現多路視頻的采集和傳輸,獲得視頻的實時數據是一個重要環節[1]。本系統采用Hi3521A芯片作為核心芯片,并對其外圍設備進行擴展。Hi3521A是華為公司生產的針對多路標清、高清錄像產品應用研發的一款專業SoC芯片。海思Hi3521A芯片內置有ARM處理器以及H.264視頻編解碼引擎,還包含了豐富的外圍接口,有極強的擴展能力。基于所選的芯片設計出的系統總體框圖如圖1所示。

圖1 系統總體設計框圖
其中A/D轉換模塊選擇的是Nextchip公司生產的NVP6134C芯片,共使用了4個NVP6134C芯片,每個芯片可將4路模擬視頻信號采樣轉換為數字視頻信號。每個A/D芯片傳輸的視頻流通過指定的通道傳入Hi3521A芯片。
Flash模塊用于存儲Bootloader、啟動環境變量、Linux內核、文件系統等數據,系統掉電后數據不會丟失。DDR為內存模塊,用來控制應用程序的運行以及臨時視頻信息的存放。
WiFi模塊選擇的是RTL8211EG芯片,使用RGMII接口模式與主芯片Hi3521A相連。對其進行交叉編譯,本系統可以通過無線網絡進行數據傳輸。
系統上電工作時,首先視頻采集端通過NVP6134C芯片將16路模擬攝像頭采集到的視頻流進行A/D采樣,轉換為數字視頻信號;其次主芯片的VI端接收轉換完成的視頻流,并對數據進行裁剪、縮放等預處理;再次對視頻流進行H.264編碼;最后將視頻輸出到屏幕顯示。
本文的多路視頻采集系統是基于Hi3521A及其外圍設備來進行開發的,需要完成視頻圖像的采集、處理及傳輸等功能,它采用了以下幾個功能模塊來設計:系統時鐘及復位模塊、視頻采集模塊、存儲模塊、電源模塊[2]。
通過Hi3521A芯片內部的反饋電路與外部的24 MHz晶體振蕩電路一起構成系統時鐘電路。同時,Hi3521A芯片內置RTC,要使其正常工作,單板還需要給RTC提供時鐘電路。
在系統運行過程中,可能會因為各種干擾使系統出現異常,不能正常工作,這時設置復位電路就顯得十分重要,它能使系統在出現異常時重新初始化系統,使系統重新工作。Hi3521A可通過判斷POR_ENABLE引腳在上電時的狀態來選擇內部復位或外部復位。AB9引腳具備WDG_RSTN和SYS_RSTN_OUT兩種功能。當Hi3521A芯片使用內部復位時,AB9引腳為SYS_RSTN_OUT功能;當Hi3521A芯片使用外部復位時,AB9引腳為WDG_RSTN功能。系統時鐘和復位設計電路如圖2所示。

圖2 系統時鐘和復位設計電路
在本系統中,主芯片Hi3521A的視頻輸入端有4個VI設備,每個VI設備有4個VI視頻物理通道,共包含16個VI視頻物理通道。為了實現對16路視頻的采集,使用了4個A/D轉換器,每個A/D轉換器對4路視頻信號進行采樣轉換為數字視頻信號,此時數字視頻信號采用的是YUV格式,采樣格式為4:2:2,即量度信道采樣率為色度信道的兩倍。Hi3521A通過BT.656對時序進行解析,并將解析后的視頻數據傳入物理通道。輸入設備解析后得到的視頻數據通過視頻的物理通道把視頻數據輸出到DDR。在真正將數據輸出到DDR之前,它可以實現裁剪、遮擋、水平垂直縮小和水平垂直翻轉等功能,其綁定關系如圖3所示,其中,Dev為設備,Chn為通道。

圖3 設備與通道綁定關系圖
存儲模塊包含ROM和RAM兩個部分,其中ROM采用Flash方式存儲。Flash閃存可以快速讀取數據,并且系統掉電后數據不會丟失,因此用來存儲Bootloader、啟動環境變量、Linux內核、文件系統等數據。目前Flash主要有兩種NOR Flash和NAND Flash,本系統同時使用了NOR Flash和NAND Flash兩種芯片,由于用戶不能直接運行NAND Flash上的代碼,所以使用NOR Flash用來運行啟動代碼,由于NAND Flash是以一次讀取一塊形式進行的,一般一次讀取512個字節,所以采用NAND Flash進行讀取,這樣在很大程度上節約了成本。
RAM使用的是DDR3芯片,用來加載ROM中的信息,并存儲處理信息時產生的中間數據。在DDR3內存中,一部分是由操作系統管理的,叫做OS內存;另一部分是供媒體業務單獨使用的內存,叫做MMZ內存。其中OS內存大小可以通過bootargs進行配置。
本系統核心芯片Hi3521A需要多種不同的輸入電壓為其供電,其中內核所需電壓值為1.1 V,CPU電壓為1.25 V,I/O電壓為3.3 V,DDR3 SDRAM電壓為1.5 V。本系統的輸入電壓為12 V,系統的電源電路通過采用穩壓芯片MP1494S和MP1495S來實現這4種不同電壓的輸出。
系統硬件設計完成以后需要進行軟件環境的開發和應用程序的設計。本系統主要包括主機端和目標板端的設計,核心芯片Hi3521A通過串口和網線與PC機相連,在PC機上安裝一臺虛擬機,且虛擬機使用Linux系統來對開發板進行開發。
系統軟件主要包括4個部分:Bootloader、Linux內核、Linux文件系統以及應用程序,層次結構如圖4所示。

圖4 系統軟件層次結構圖
嵌入式Linux操作系統內核的作用是對硬件進行管理,而應用程序是不直接作用于內核的,它必須通過操作系統提供的系統調用接口作用于內核,然后內核作用于硬件。
系統分為主機端和目標板端,其中主機端開發環境的搭建需要建立Linux服務器、Windows軟件開發和Hi3521A嵌入式開發平臺三個部分的連接。在本系統中,Linux服務器和Windows工作臺使用一臺PC機,即在虛擬機下安裝一個Linux操作系統,并將其連接在同一個局域網內。Linux服務器用來建立交叉編譯環境與開發板進行交互,Windows工作臺主要用于登錄Linux服務器,完成Linux下的開發工作以及通過串口查看開發板的調試和運行信息。
本系統主要包括3個方面的設計:U-boot、Linux內核和根文件系統。具體步驟為:Linux開發環境的搭建、U-boot的移植、Linux內核的移植以及根文件系統的定制。使用Bootloader的版本為Ubuntu-12.04-x6-phoenix,使用Linux-3.10.y版本的內核,以及使用JFFS2制作鏡像文件系統。
海思Hi3521A的SDK提供了多媒體軟件平臺(Media Process Platform,MPP),MPP提供的接口可用于視頻應用軟件快速開發。
首先在虛擬機中將MPP拷貝到SDK下的指定目錄中,對MPP進行編譯,即到mpp/sample下執行:make clean; make。開發板上電并設置開發板IP地址,到mpp的ko 下運行./load3521a-i,加載固件,最后到mpp/sample/vio下執行./sample_vio 2,即可在屏幕上顯示攝像信息。具體步驟如圖5所示。

圖5 Hi3521A運行MPP流程圖
系統采用像素為720P的AHD攝像頭進行圖像采集,HDMI接口連接屏幕輸出,視頻輸出的結果如圖6所示。

圖6 視頻輸出結果
