戚偉
摘要:隨著網絡技術的發展,帶有視頻傳輸功能的智能家居技術逐漸應用到家庭之中,本文從軟硬件兩個方面來討論一種用于家庭環境的帶有WiFi功能的視頻處理板的設計與實現思路。本文主要從STM32F407A核心板模塊、圖像處理模塊、WiFi通信模塊這幾個方面來說明該視頻處理板的設計思路。
關鍵詞:STM32F407A 圖像處理 WiFi
中圖分類號:TN957.51 文獻標識碼:A 文章編號:1007-9416(2016)06-0184-02
1 概述
隨著網絡技術和計算機技術的發展,“互聯網+”的概念正在逐漸深入到人們生活的方方面面,“互聯網+智能家居”這個概念也會改變我們的生活觀念?!盎ヂ摼W+智能家居”會使我們無論在世界的那個角落,只要有互聯網的存在,人們就能夠控制家庭中的相關電器,觀察家庭中的各個角落,甚至讓熱水器自動打開,電飯煲將米飯煮好。
“互聯網+智能家居”的核心技術就在于具備網絡接口的視頻處理板的設計,本文主要介紹視頻處理板的軟硬件設計與實現。該視頻處理板硬件模塊大體上分為以下幾塊:STM32F407A核心板模塊、WiFi通信模塊、圖像處理模塊。視頻處理板硬件系統的核心為STM32F407A 控制器,視頻處理板與其他控制板之間的通信是通過 RS232 串口,為該控制系統的二次開發提供了良好的接口。圖像采集模塊和WiFi傳輸模塊是通過 USB 接口連接視頻處理板的。
2 視頻處理板硬件的設計
2.1 STM32F407A處理器單元的設計
STM32F407A最小系統在視頻處理板的設計中是非常關鍵的,系統的運行和穩定的基礎就是最小系統設計的可靠性,這是整個系統的基礎。首先要做的就是根據STM32F407A用戶手冊完成最小系統的搭建,在元器件的選配時,一定要選擇穩定可靠的元器件,比如電阻、電容、晶振等。在最小系統完成后就可以根據視頻處理板的設計需求逐步添加系統的外設,實現系統的特定功能,比如移植相應的操作系統,相應外圍電路擴展,相應外部設備編寫驅動程序、以及編寫應用程序等,然后對整個系統進行調試。
在最小系統設計好的前提下,為了能夠使STM32F407A的功能得到進一步的完善,設計將帶有該芯片的最小系統以及其他比較關鍵核心部件(比如存儲器等)封裝在一塊尺寸小、通用性強的電路板上,我們稱其為核心控制板。該核心板設計的好與壞將會影響到STM32F407A 的發揮和與 CPU 的通信效率。在最小系統和核心控制板設計的基礎上,我們把相關的外部設備設計到一起,即完成了視頻處理板的設計。
2.2 視頻采集模塊設計
視頻處理板的主要用途之一是對家庭中各種情況進行攝像,能夠通過PTZ實現水平360,垂直180的監控,相關視頻處理算法的具體實現是由攝像機的選擇和其工作方式來決定。Linux 內核驅動已經支持的攝像機的驅動有很多,比如比較常用的 ov511芯片,但這些攝像機對于視頻處理板的使用上并不是很理想。視頻處理板系統采用的是型號是DS-2CZ2152P(N),提供了攝像機的解決方案,除了視頻處理功能外,關鍵是通過RS485總線能實現對其變焦。
攝像機通過主控板上的接口與視頻處理板相連,采用12V供電,電源是通過主控板來提供的。該攝像機的相關驅動 Linux 內核里面還不支持,為了使該一體攝像機能夠在Linux 系統中正常工作,需要獲取相關的驅動內核源碼之后進行修改,然后加載該驅動即可實現對于該攝像機的控制編程。
2.3 WiFi 網絡傳輸模塊設計
視頻處理板的移動特性決定了視頻處理板不可能采用常規的通過RJ45實現的網絡雙絞線有線數據傳輸。在這里 PC 機與視頻處理板之間的通信的方案就是基于無線路由器來實現的網絡傳輸,WiFi(Wireless Fidelity,WiFi)應該是該視頻處理板采用了一種相對來講比較可行的和可靠的無線傳輸模式。
視頻處理板主板采用 WiFi 無線方式連接到家庭中使用的無線路由器,然后通過Internet將無線路由器獲取的信息傳輸到遠端的PC 機,這樣家庭中的人員通過客戶端的軟件來實現對家庭環境的監控。另外通過攝像機可實現抓拍圖像并識別,并同時根據客戶端監控軟件的需求,完成相應的動作,主要是抓拍、錄像、變焦等。根據該視頻處理板系統的需求,最終選擇的無線網絡互連設備為TPLINK-WR841N。
3 視頻處理板軟件設計
視頻處理板的系統軟件主要由以下幾個部分組成:加載程序的引導、內核程序、根文件系統、應用程序。Bootloader的開發工具是由ADS來完成的,其功能主要包括以下內容:硬件初始化,引導和加載內核映像。Linux操作系統功能實現主要包含以下幾個方面:實現對于進程的調度和通信、管理系統內存,管理文件系統,硬件驅動程序是建立實現其他功能的基礎。該項目在設計系統中需要加載Linux內核的驅動主要有以下方面:攝像機的USB驅動,無線網卡驅動。構建和移植嵌入式Linux操作系統過程分析如下。
3.1 視頻處理板移植嵌入式Linux環境的搭建
在本文中,利用一臺PC機作為主機,然后在主機上安裝VMWARE虛擬機,在虛擬機上安裝RedHat Linux 9.0,該方案在RedHat Linux 9.0環境下使用vi文本編輯器,然后通過Linux-GCC交叉編譯工具進行相關內容的編譯,通過安全的CRT終端的COM端口將交叉編譯程序寫入開發板中。本設計用來編譯引導程序、內核、文件系統和應用程序采用的是Linux-GCC-4.1.2的版本,通過終端程序將目標代碼安全燒入目標機。該Linux系統采用的版本是u-boot -1.1.6 的引導程序和Linux -2.6.31作為該視頻處理板的嵌入式操作系統。主機和目標機使用完成后的軟件開發環境,可以在程序的基礎上進一步的發展和完善該視頻處理板控制系統軟件。
系統啟動代碼(Bootloader)寫入,引導加載程序是操作系統內核運行之前運行的小程序。引導加載程序的主要功能是將硬件設備進行初始化,然后建立內存空間的映射圖,從而為最終調用操作系統內核準備好相應的環境。
3.2 USB設備驅動程序的編寫
USB是通用COM總線的簡稱。最新的USB規范修訂后理論上USB的傳輸速率最高可達480Mbps的高速連接。主要類型的USB驅動程序在Linux內核中是支持的,分別為:驅動程序的主機系統和設備驅動程序。從主機的角度來看(是普通PC的一個主機),當主機系統的USB設備驅動控制器插入USB設備之后,USB設備驅動程序的功能是控制設備如何作為一個USB設備從而實現和主機的通信。
USB驅動程序存在于不同的內核子系統和USB硬件控制器,USB核心提供了一個硬件的訪問和控制USB接口的USB驅動,而無需考慮當前系統中存在的各種不同類型的USB硬件控制器。USB是一個非常復雜的設備,Linux內核為我們提供了一個核心,稱為USB子系統來處理最復雜的部分。USB設備包括配置,接口和端點,USB設備綁定到接口,而不是整個USB設備。
3.3 攝像機USB的驅動程序的開發
Linux設備驅動程序所在的位置是集成在內核中,其主要功能是實際處理并且操作硬件控制器的軟件。從本質上意義來講,驅動器是存儲在共享庫的永久存儲器中低層次的硬件處理程序,設備驅動程序是抽象處理設備;也意味著,設備驅動程序是一個內核比較高的特權級別,其具備永久的記憶,并且可以由底層共享硬件處理程序。Linux設備驅動程序與外界接口的構成是由以下三個部分構成的:(1)驅動程序接口和內核;(2)系統引導與驅動程序接口;(3)設備接口和驅動程序。
攝像機USB的驅動程序的源代碼的實現是通過以下五個方面來完成的:(1)初始化設備模塊;(2)上層軟件接口模塊;(3)數據傳輸模塊;(4)USB內核的支持;(5)完成測試。
在臨時目錄中保存相應的命名圖片,這樣就標志著已經成功的加載了攝像機USB驅動,圖片的處理就可以通過相應的命令來實現了。
3.4 TL- WR841N WiFi無線路由器驅動程序的編寫
視頻處理板采用的WiFi無線路由器的型號是 TL- WR841N,這個路由器的核心所使用的是Atheros AR7240。具體實現過程如下:
(1)解壓縮下載的壓縮包,在drivers/usb/net/創建一個文件夾AR7240,采用如下命令:#mkdir drivers/usb/net/AR7240,Module 下的文件最終要拷貝到AR7240;(2) Makefile 文件的配置進行修改,復制Makefile.6下的Makefile文件,使用正確的編譯器對Makefile 進行編譯,同時修改其 Linux 內核路徑;(3)修改Kconfig 配置文件加入以下項:在文件夾Makefile中加入obj-$(CONFIG_AtherosAR7240)+=AtherosAR7240/;然后congfig AR7240->tristate support AR7240;(4)重新配置內核:#make menu config;(5)配置 busybox;(6)將內核映像文件編譯,讓后將其移植到視頻處理板中,啟動Linux內核,連接無線路由器,完成相應的連接,通過Ping命令完成連接效果測試。
3.5 視頻相關程序的編寫
3.5.1 視頻數據
Video4Linux(Video For Linux)是V4L的全稱, 視頻圖像采集設備的應用程序的接口就是V4L要實現的具體功能,具體來講是兩點,第一個是視頻設備信息的獲取,第二個功能是圖形信息的處理。應該說V4L是在Linux中編寫驅動程序和相關驅動程序的基礎,其提供了最重要的接口函數。在Linux中視頻設備是被當做具體的文件來看待的,其完整路徑的設備文件名為:/DEV/VIDEO。視頻設備的驅動被開發之后,加載到內核中后,要想實現圖像和視頻的采集,調用 V4L 的應用程序編程接口就可以了,要想進行進一步的設計,一般將Video4Linux分為兩層,分別是上層的API 函數和下層的視頻設備的驅動。
攝像機視頻數據的采集,首先要將USB攝像機和系統的控制板連接,這樣通過控制板給該攝像機上電,系統啟動驅動程序,然后讀取攝像頭相關信息,下一步就可以進行視頻圖像的采集了,除了加載驅動之外還需要編寫一個與視頻圖像采集相關的應用程序。
3.5.2 壓縮視頻程序
圖像數據未經壓縮需要的存儲空間會很大,而視頻處理板不光要進行圖像數據的存儲,然后還需要將數據圖像進行傳輸,因為圖像的傳輸量比較大,一個攝像機的單位時間需要傳輸3.5MB的數據量,這么大的數據量是需要利用相應的壓縮算法的。JPEG是一種很成熟的視頻編碼格式,其本質上采用的是DTC自適應變換編碼算法,是ISO/IEC的靜止圖像壓縮標準,本設計最終采用JPEG的有損壓縮模式。
3.5.3 視頻傳輸程序
視頻處理板通過攝像機獲取的信息是要通過網絡傳輸的,而系統使用的是網絡視頻監控,最終要實現將數據傳輸至互聯網,本視頻處理板的網絡傳輸協議采用的是TCP/IP協議。IP地址是32位二進制組成的互聯網的地址,是網絡間客戶端進行通信的唯一標識。
TCP協議進行三次握手協議實現了傳輸層上的數據通信,Socket接口實現了該協議的相關的API,Linux下支持多種套接字socket。
4 結語
本文主要討論了一種視頻處理板的具體實現過程。從軟件和硬件兩個角度進行分析,硬件上主要包含STM32F407A處理器單元的設計、視頻采集模塊設計、WiFi 網絡傳輸模塊設計的硬件構成,從軟件方面包括視頻處理板的Linux操作系統相關軟件的搭建,USB設備驅動程序的編寫,攝像機USB的驅動程序的開發,TL- WR841N WiFi無線路由器驅動程序的編寫,視頻相關程序的編寫方面的具體實現過程。
參考文獻
[1]西剎子.智能網絡視頻監控[M].北京:清華大學出版社,2010,2:330-331.
[2]郝衛東.基于Linux的嵌入式網絡視頻監控系統研究與設計.計算機系統與應用,2007(6).
[3]劉永安.基于ARM的智能家居控制系統.西南交通大學,2009.