?

遠程視頻監控系統軟件平臺的構建

2014-10-21 14:22王建華郭敬慧
數字化用戶 2014年20期
關鍵詞:內核嵌入式服務器

王建華 郭敬慧

【摘 要】隨著圖像壓縮編碼技術以及無線通訊技術的發展,視頻監控系統逐步邁入移動化,在特定場合下,如自然災害地質查詢,邊防空中監控等,需要突破物理上的二維限制,借助小型無人飛行器和無線數字視頻監控系統在低空進行遠程實時監控。本文構建了基于Linux系統的軟件開發平臺,完成了基于無人飛行器的遠程視頻監控系統實現的初步工作。

【關鍵字】視頻監控系統 嵌入式系統 Linux 軟件開發平臺

一、 嵌入式系統的定義及特點

嵌入式系統是以應用為中心,軟硬件可裁減的,適用于對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統[1,2]。

嵌入式系統的特點可從功能和性能兩個層面來衡量。

首先,在功能上,它是以應用為中心的專用系統,區別于個人計算機等通用計算機系統。嵌入式系統面向的是行業中的某項應用,因此嵌入式產品的個性化很強,軟硬件結合非常緊密,軟件開發過程中需要針對硬件做出移植或者優化。例如,本系統隸屬于無線視頻數字監控產品,并且以無人飛行器為載體,完成特定場合下的視頻采集與實時傳輸等功能。在搭建本系統的軟件平臺時,需要根據需求選取合適的操作系統,并根據硬件方案進行驅動的移植和開發。開發應用程序時,需要考慮到底層硬件的性能和實際運行情況,如根據無線網絡傳輸情況,動態調整視頻壓縮質量等。

其次,在性能上,嵌入式系統資源受限,軟硬件必須是可裁剪的,另外嵌入式產品結構緊湊,用途固定,因此在成本、體積、功耗以及可靠性上也必須嚴格考究。以本系統為例,整個系統以小型的無人飛行器為載體,在硬件設計上須采用核心加擴展的方式,核心板的體積要做到盡可能的小,以安放在飛行器內部,而攝像頭以及CDMA模塊則通過擴展的方式,結合飛行器本身來進行整合。另外,雖然資源的受限使得核心板上自身所擁有的內存和Flash芯片容量不會太大,但可采用基于擴展的設計,如通過外接SD卡的方式來轉儲相關的數據(如用作存證的視頻數據等)。在軟件層面上,需要對移植的Linux內核做出剪裁,根據系統本身的需求量身配置,以使最后編譯產品的內核映像體積最小。應用程序開發,如視頻采集與編碼模塊,也需注意保證程序運行的穩定性,盡可能避免因為軟件因素帶來的斷線,內存溢出,死循環等錯誤。

二、 嵌入式Linux系統的軟件組成

一個嵌入式 Linux 系統從軟件層次的角度看通??梢苑譃樗膫€層次[3]:1. 引導加載程序:即Boot Loader程序。2. Linux 內核:特定于嵌入式開發板的定制內核以及內核的啟動參數。3. 文件系統:包括根文件系統和建立于 Flash 內存設備之上的文件系統。4. 用戶應用程序:特定于用戶的應用程序。

典型的嵌入式Linux系統存儲設備的空間分配如圖1所示。

在本系統中,選用一塊32MB的NOR Flash存儲芯片,用于存放引導加載程序,Linux內核和包含應用程序的文件系統。其中,引導加載程序和內核的占用空間分別規劃為256KB和2MB。下面各小節詳細闡述了嵌入式視頻服務器上軟件平臺的構建過程,這個基本的軟件運行平臺是系統開發和應用的基礎。

三、 嵌入式視頻服務器軟件平臺的構建

1 系統開發模型

嵌入式系統開發的兩大特點是分布式開發以及交叉編譯。鑒于嵌入式系統資源受限的特點,不能在嵌入式產品上直接進行開發,而是選擇硬件和軟件資源豐富的宿主機進行分布式開發,通常是PC機,而嵌入式產品作為目標機。由于兩者的硬件體系結構一般不相同(如本系統,宿主機基于x86,而目標機基于ARM),因此在宿主機上開發的程序需要經由交叉工具鏈進行編譯和鏈接,最后通過通信手段送至目標機上運行。本系統的開發模型如圖2所示。

在本系統開發中,宿主機和目標機有三種通信手段:

1. 串口通信。用于兩機的信息交互,在經過波特率等屬性協商后,目標機上的信息經由串口輸出到宿主機的串口客戶端進行顯示,反饋給用戶,同時用戶也可通過串口客戶端輸入相關的控制命令到目標機上,用以操縱目標機上的軟件參數及流程。

2. JTAG通信。用于裸機上的程序燒寫,宿主機可通過Multi-ICE仿真器與目標機上的JTAG調試接口相接,通過調試代理,將制作生成的引導加載程序映像串行燒寫至目標機Flash芯片中;

3. 網絡通信。制作好的內核以及文件系統映像一般體積較大,可先通過網絡下載到目標機內存中,再通過已做好的燒寫程序和驅動進行脫機燒寫,這樣可大舉提高燒寫速率。

因此,基于本系統的開發模型,在宿主機上需要首先搭建好開發環境。

2 主機環境的搭建

本系統開發中,宿主機上選用的開發環境為Fedora 19。主機環境搭建主要包括了三個方面的內容[4]:交叉工具鏈的安裝,TFTP服務器的配置以及NFS服務器的配置。

1. 交叉工具鏈的安裝。

嵌入式交叉工具鏈由一套用于編譯、匯編、鏈接、二進制工具及庫的組件組成。主要包括了編譯器arm-linux-gcc,匯編器arm-linux-as,連接器arm-linux-ld,二進制工具如arm-linux-nm, arm-linux-strip等,基于交叉編譯的庫glibc等。

交叉工具鏈的選擇上,一般需要根據編譯目標的版本,選擇既有的成熟工具鏈。工具鏈和被編譯對象的版本匹配很重要,否則容易引起因為兼容性導致的編譯問題。在本系統中,使用Freescale公司提供的成熟工具鏈,用于對3.10.1版本的內核進行編譯。其中,編譯器版本為4.1.1,GNUC庫glibc版本為2.9。安裝過程如下:

(1)建立工作目錄

[root@localhost ~]#mkdir /root/MX27project/

(2)將交叉工具鏈壓縮包拷貝至工作目錄并解壓

[root@localhost MX27project]#tar xjvf gcc-4.1.1-glibc-2.4.tar.bz2

(3)導入環境變量使工具對shell可見

在/root下的.bash_profile最后,加上:

export PATH=/root/MX27project/gcc/arm-linux/bin:$PATH

2. TFTP服務器的配置

TFTP協議基于傳輸層UDP協議,是用來下載遠程文件的最簡單的網絡協議,在開發過程中主要用于獲取內核映像及文件系統映像。通常在目標機上運行的引導加載程序中,包含有TFTP的客戶端,因此需要在宿主機上配置和開啟TFP服務器。TFTP服務器的核心配置過程如下:

建立TFTP服務器根目錄

[root@localhost MX27project]mkdir /tftpboot

修改TFTP配置文件

主要對/etc/xinetd.d/tftp做出修改,在service tftp中,將disable設置成no,將server_args設置成-s /tftpboot

打開TFTP服務器

[root@localhost MX27project]chkconfig tftp on

[root@localhost MX27project] /etc/init.d/xinetd restart

3. NFS服務器的配置

通過NFS可以在宿主機和目標板之間共享文件,目標板通過掛載NFS文件系統能直接運行位于宿主機上的用戶程序,省去了Flash燒寫的過程。因此,NFS文件系統是開發態使用的根文件系統。在宿主機上配置和開啟NFS服務器的主要過程如下:

(1)配置NFS服務器

配置文件是/etc/exports,設置內容如下:

/nfsroot 192.168.1.*(rw,sync,no_root_squash)

其中,/nfsroot為NFS服務器的根目錄,192.168.1.* 為允許掛載該NFS服務器的IP,rw,sync,no_root_squash表示服務器訪問限制。

(2)啟動NFS服務器

[root@localhost MX27project]service nfs start

3 RedBoot的移植

移植的總體思路為:先添加硬件開發平臺相關硬件的驅動代碼支持(已提供),然后在配置文件中添加目標平臺,指定包配置,進行代碼樹的構建和編譯,最后將生成的redboot映像燒寫進系統Flash芯片中。

4 Linux內核的移植

就嵌入式Linux系統而言,有各種體系結構的處理器和硬件平臺,用戶根據自己的需要定制硬件平臺并做一些移植工作。由于Linux內核具備可移植性的特點,并且已經支持了很多種目標板,可以從中找到跟自己硬件平臺類似的目標板,參考內核已經支持的目標板來進行移植工作。這里選用的Linux內核是針對Freescale i.MX27參考開發平臺的Linux Platform Support for i.MX27,內核版本號是Linux 3.10.1。

內核剪裁,配置和移植的主要步驟如下:

解壓內核,修改頂層Makefile。

修改或添加相關代碼到內核源碼樹中。

配置內核。

在內核源碼根目錄下,鍵入make menuconfig命令,出現內核配置界面,通過圖形化的方式進行內核的剪裁配置。

編譯內核。

配置完畢后,保存退出,在內核源碼根目錄下,鍵入make zImage命令進行內核的編譯。編譯成功后,在arch/arm/boot目錄下會生成zImage內核壓縮映像。將zImage放置在前面配置好的TFTP服務器根目錄下。

燒寫內核到Flash芯片中。

啟動嵌入式視頻服務器系統,進入RedBoot命令模式,設置系統及宿主機IP地址為同一個網段:

ip_address –l 192.168.1.2 –h 192.168.1.1

首先,從宿主機上下載內核壓縮映像到系統內存中:

load –r –b 0x00100000 zImage

然后,將內核映像燒寫到NOR Flash芯片中:

fis create –b 0x100000 –l 0x200000 –f 0xC0040000 kernel

其中,規劃內核占據的Flash芯片偏移起址為0x40000,大小為2MB。

5 文件系統的制作

為建立根文件系統,首先需要遵照Linux文件系統的架構,建立必備的空目錄樹,如bin及sbin目錄用于存放二進制執行文件,etc目錄用于存放配置腳本,lib目錄用于存放程序運行所需要的動態庫,dev目錄用于存放設備文件等等。然后在相應的空目錄下填充內容,如編寫啟動腳本rcS放置于etc目錄中,將交叉工具鏈中提供的庫拷貝到lib目錄中,建立必備的設備文件放置于dev目錄中,而對于二進制執行文件,如果是用戶自行添加的應用程序,可直接放入bin目錄中(或sbin目錄中),如果是內置命令,則可借助開源的第三方軟件生成,本軟件開發平臺利用開源軟件BusyBox。

四、結束語

本文介紹了基于無人飛行器視頻監控系統基本軟件平臺的搭建過程。首先分析了典型的嵌入式系統的特點,結合Linux操作系統的優點,為系統選擇基于嵌入式Linux操作系統的解決方案。然后討論了嵌入式Linux系統的軟件組成,并針對組成成分進行無線監控設備軟件平臺的構建,包括了主機環境的搭建,RedBoot的移植,Linux內核的移植和文件系統的制作等,為后續無人飛行器的遠程視頻監控系統功能的實現提供了一個基本的軟件平臺。

參考文獻:

[1] 楊宗德, 嵌入式ARM系統原理與實例開發, 北京大學出版社, 2007.

[2] Dejan Milojicic, Embedded Systems, IEEE Concurrency, 2000, Vol.8.

[3] 詹榮開, 嵌入式BootLoader技術內幕, IBM DW, 2003.

[4] 韋東山,嵌入式Linux應用開發完全手冊,人民郵電出版社,2008.

作者簡介:王建華,男,成都理工大學工程技術學院(614007),講師,主要研究方向:計算機網絡,空間數據庫管理,E-mail:344516913@qq.com;郭敬慧,女,成都理工大學工程技術學院(614007),碩士,主要研究方向:計算機應用技術。

猜你喜歡
內核嵌入式服務器
人民情懷:柳青為文為人的內核(評論)
初春
微軟發布新Edge瀏覽器預覽版下載換裝Chrome內核
2018年全球服務器市場將保持溫和增長
嵌入式LINUX操作系統的研究
嵌入式組件技術的研究及應用
用獨立服務器的站長注意了
定位中高端 惠普8路服務器重裝上陣
“嵌入式系統概論”課程設計
電子設計應用(2004年7期)2004-09-02
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合