国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

遠(yuǎn)程視頻監(jiān)控系統(tǒng)軟件平臺(tái)的構(gòu)建

2014-10-21 14:22王建華郭敬慧
數(shù)字化用戶 2014年20期
關(guān)鍵詞:內(nèi)核嵌入式服務(wù)器

王建華 郭敬慧

【摘 要】隨著圖像壓縮編碼技術(shù)以及無線通訊技術(shù)的發(fā)展,視頻監(jiān)控系統(tǒng)逐步邁入移動(dòng)化,在特定場(chǎng)合下,如自然災(zāi)害地質(zhì)查詢,邊防空中監(jiān)控等,需要突破物理上的二維限制,借助小型無人飛行器和無線數(shù)字視頻監(jiān)控系統(tǒng)在低空進(jìn)行遠(yuǎn)程實(shí)時(shí)監(jiān)控。本文構(gòu)建了基于Linux系統(tǒng)的軟件開發(fā)平臺(tái),完成了基于無人飛行器的遠(yuǎn)程視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)的初步工作。

【關(guān)鍵字】視頻監(jiān)控系統(tǒng) 嵌入式系統(tǒng) Linux 軟件開發(fā)平臺(tái)

一、 嵌入式系統(tǒng)的定義及特點(diǎn)

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

嵌入式系統(tǒng)的特點(diǎn)可從功能和性能兩個(gè)層面來衡量。

首先,在功能上,它是以應(yīng)用為中心的專用系統(tǒng),區(qū)別于個(gè)人計(jì)算機(jī)等通用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)面向的是行業(yè)中的某項(xiàng)應(yīng)用,因此嵌入式產(chǎn)品的個(gè)性化很強(qiáng),軟硬件結(jié)合非常緊密,軟件開發(fā)過程中需要針對(duì)硬件做出移植或者優(yōu)化。例如,本系統(tǒng)隸屬于無線視頻數(shù)字監(jiān)控產(chǎn)品,并且以無人飛行器為載體,完成特定場(chǎng)合下的視頻采集與實(shí)時(shí)傳輸?shù)裙δ?。在搭建本系統(tǒng)的軟件平臺(tái)時(shí),需要根據(jù)需求選取合適的操作系統(tǒng),并根據(jù)硬件方案進(jìn)行驅(qū)動(dòng)的移植和開發(fā)。開發(fā)應(yīng)用程序時(shí),需要考慮到底層硬件的性能和實(shí)際運(yùn)行情況,如根據(jù)無線網(wǎng)絡(luò)傳輸情況,動(dòng)態(tài)調(diào)整視頻壓縮質(zhì)量等。

其次,在性能上,嵌入式系統(tǒng)資源受限,軟硬件必須是可裁剪的,另外嵌入式產(chǎn)品結(jié)構(gòu)緊湊,用途固定,因此在成本、體積、功耗以及可靠性上也必須嚴(yán)格考究。以本系統(tǒng)為例,整個(gè)系統(tǒng)以小型的無人飛行器為載體,在硬件設(shè)計(jì)上須采用核心加擴(kuò)展的方式,核心板的體積要做到盡可能的小,以安放在飛行器內(nèi)部,而攝像頭以及CDMA模塊則通過擴(kuò)展的方式,結(jié)合飛行器本身來進(jìn)行整合。另外,雖然資源的受限使得核心板上自身所擁有的內(nèi)存和Flash芯片容量不會(huì)太大,但可采用基于擴(kuò)展的設(shè)計(jì),如通過外接SD卡的方式來轉(zhuǎn)儲(chǔ)相關(guān)的數(shù)據(jù)(如用作存證的視頻數(shù)據(jù)等)。在軟件層面上,需要對(duì)移植的Linux內(nèi)核做出剪裁,根據(jù)系統(tǒng)本身的需求量身配置,以使最后編譯產(chǎn)品的內(nèi)核映像體積最小。應(yīng)用程序開發(fā),如視頻采集與編碼模塊,也需注意保證程序運(yùn)行的穩(wěn)定性,盡可能避免因?yàn)檐浖蛩貛淼臄嗑€,內(nèi)存溢出,死循環(huán)等錯(cuò)誤。

二、 嵌入式Linux系統(tǒng)的軟件組成

一個(gè)嵌入式 Linux 系統(tǒng)從軟件層次的角度看通??梢苑譃樗膫€(gè)層次[3]:1. 引導(dǎo)加載程序:即Boot Loader程序。2. Linux 內(nèi)核:特定于嵌入式開發(fā)板的定制內(nèi)核以及內(nèi)核的啟動(dòng)參數(shù)。3. 文件系統(tǒng):包括根文件系統(tǒng)和建立于 Flash 內(nèi)存設(shè)備之上的文件系統(tǒng)。4. 用戶應(yīng)用程序:特定于用戶的應(yīng)用程序。

典型的嵌入式Linux系統(tǒng)存儲(chǔ)設(shè)備的空間分配如圖1所示。

在本系統(tǒng)中,選用一塊32MB的NOR Flash存儲(chǔ)芯片,用于存放引導(dǎo)加載程序,Linux內(nèi)核和包含應(yīng)用程序的文件系統(tǒng)。其中,引導(dǎo)加載程序和內(nèi)核的占用空間分別規(guī)劃為256KB和2MB。下面各小節(jié)詳細(xì)闡述了嵌入式視頻服務(wù)器上軟件平臺(tái)的構(gòu)建過程,這個(gè)基本的軟件運(yùn)行平臺(tái)是系統(tǒng)開發(fā)和應(yīng)用的基礎(chǔ)。

三、 嵌入式視頻服務(wù)器軟件平臺(tái)的構(gòu)建

1 系統(tǒng)開發(fā)模型

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

在本系統(tǒng)開發(fā)中,宿主機(jī)和目標(biāo)機(jī)有三種通信手段:

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

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

3. 網(wǎng)絡(luò)通信。制作好的內(nèi)核以及文件系統(tǒng)映像一般體積較大,可先通過網(wǎng)絡(luò)下載到目標(biāo)機(jī)內(nèi)存中,再通過已做好的燒寫程序和驅(qū)動(dòng)進(jìn)行脫機(jī)燒寫,這樣可大舉提高燒寫速率。

因此,基于本系統(tǒng)的開發(fā)模型,在宿主機(jī)上需要首先搭建好開發(fā)環(huán)境。

2 主機(jī)環(huán)境的搭建

本系統(tǒng)開發(fā)中,宿主機(jī)上選用的開發(fā)環(huán)境為Fedora 19。主機(jī)環(huán)境搭建主要包括了三個(gè)方面的內(nèi)容[4]:交叉工具鏈的安裝,TFTP服務(wù)器的配置以及NFS服務(wù)器的配置。

1. 交叉工具鏈的安裝。

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

交叉工具鏈的選擇上,一般需要根據(jù)編譯目標(biāo)的版本,選擇既有的成熟工具鏈。工具鏈和被編譯對(duì)象的版本匹配很重要,否則容易引起因?yàn)榧嫒菪詫?dǎo)致的編譯問題。在本系統(tǒng)中,使用Freescale公司提供的成熟工具鏈,用于對(duì)3.10.1版本的內(nèi)核進(jìn)行編譯。其中,編譯器版本為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)導(dǎo)入環(huán)境變量使工具對(duì)shell可見

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

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

2. TFTP服務(wù)器的配置

TFTP協(xié)議基于傳輸層UDP協(xié)議,是用來下載遠(yuǎn)程文件的最簡(jiǎn)單的網(wǎng)絡(luò)協(xié)議,在開發(fā)過程中主要用于獲取內(nèi)核映像及文件系統(tǒng)映像。通常在目標(biāo)機(jī)上運(yùn)行的引導(dǎo)加載程序中,包含有TFTP的客戶端,因此需要在宿主機(jī)上配置和開啟TFP服務(wù)器。TFTP服務(wù)器的核心配置過程如下:

建立TFTP服務(wù)器根目錄

[root@localhost MX27project]mkdir /tftpboot

修改TFTP配置文件

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

打開TFTP服務(wù)器

[root@localhost MX27project]chkconfig tftp on

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

3. NFS服務(wù)器的配置

通過NFS可以在宿主機(jī)和目標(biāo)板之間共享文件,目標(biāo)板通過掛載NFS文件系統(tǒng)能直接運(yùn)行位于宿主機(jī)上的用戶程序,省去了Flash燒寫的過程。因此,NFS文件系統(tǒng)是開發(fā)態(tài)使用的根文件系統(tǒng)。在宿主機(jī)上配置和開啟NFS服務(wù)器的主要過程如下:

(1)配置NFS服務(wù)器

配置文件是/etc/exports,設(shè)置內(nèi)容如下:

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

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

(2)啟動(dòng)NFS服務(wù)器

[root@localhost MX27project]service nfs start

3 RedBoot的移植

移植的總體思路為:先添加硬件開發(fā)平臺(tái)相關(guān)硬件的驅(qū)動(dòng)代碼支持(已提供),然后在配置文件中添加目標(biāo)平臺(tái),指定包配置,進(jìn)行代碼樹的構(gòu)建和編譯,最后將生成的redboot映像燒寫進(jìn)系統(tǒng)Flash芯片中。

4 Linux內(nèi)核的移植

就嵌入式Linux系統(tǒng)而言,有各種體系結(jié)構(gòu)的處理器和硬件平臺(tái),用戶根據(jù)自己的需要定制硬件平臺(tái)并做一些移植工作。由于Linux內(nèi)核具備可移植性的特點(diǎn),并且已經(jīng)支持了很多種目標(biāo)板,可以從中找到跟自己硬件平臺(tái)類似的目標(biāo)板,參考內(nèi)核已經(jīng)支持的目標(biāo)板來進(jìn)行移植工作。這里選用的Linux內(nèi)核是針對(duì)Freescale i.MX27參考開發(fā)平臺(tái)的Linux Platform Support for i.MX27,內(nèi)核版本號(hào)是Linux 3.10.1。

內(nèi)核剪裁,配置和移植的主要步驟如下:

解壓內(nèi)核,修改頂層Makefile。

修改或添加相關(guān)代碼到內(nèi)核源碼樹中。

配置內(nèi)核。

在內(nèi)核源碼根目錄下,鍵入make menuconfig命令,出現(xiàn)內(nèi)核配置界面,通過圖形化的方式進(jìn)行內(nèi)核的剪裁配置。

編譯內(nèi)核。

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

燒寫內(nèi)核到Flash芯片中。

啟動(dòng)嵌入式視頻服務(wù)器系統(tǒng),進(jìn)入RedBoot命令模式,設(shè)置系統(tǒng)及宿主機(jī)IP地址為同一個(gè)網(wǎng)段:

ip_address –l 192.168.1.2 –h 192.168.1.1

首先,從宿主機(jī)上下載內(nèi)核壓縮映像到系統(tǒng)內(nèi)存中:

load –r –b 0x00100000 zImage

然后,將內(nèi)核映像燒寫到NOR Flash芯片中:

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

其中,規(guī)劃內(nèi)核占據(jù)的Flash芯片偏移起址為0x40000,大小為2MB。

5 文件系統(tǒng)的制作

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

四、結(jié)束語

本文介紹了基于無人飛行器視頻監(jiān)控系統(tǒng)基本軟件平臺(tái)的搭建過程。首先分析了典型的嵌入式系統(tǒng)的特點(diǎn),結(jié)合Linux操作系統(tǒng)的優(yōu)點(diǎn),為系統(tǒng)選擇基于嵌入式Linux操作系統(tǒng)的解決方案。然后討論了嵌入式Linux系統(tǒng)的軟件組成,并針對(duì)組成成分進(jìn)行無線監(jiān)控設(shè)備軟件平臺(tái)的構(gòu)建,包括了主機(jī)環(huán)境的搭建,RedBoot的移植,Linux內(nèi)核的移植和文件系統(tǒng)的制作等,為后續(xù)無人飛行器的遠(yuǎn)程視頻監(jiān)控系統(tǒng)功能的實(shí)現(xiàn)提供了一個(gè)基本的軟件平臺(tái)。

參考文獻(xiàn):

[1] 楊宗德, 嵌入式ARM系統(tǒng)原理與實(shí)例開發(fā), 北京大學(xué)出版社, 2007.

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

[3] 詹榮開, 嵌入式BootLoader技術(shù)內(nèi)幕, IBM DW, 2003.

[4] 韋東山,嵌入式Linux應(yīng)用開發(fā)完全手冊(cè),人民郵電出版社,2008.

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

猜你喜歡
內(nèi)核嵌入式服務(wù)器
人民情懷:柳青為文為人的內(nèi)核(評(píng)論)
初春
微軟發(fā)布新Edge瀏覽器預(yù)覽版下載換裝Chrome內(nèi)核
2018年全球服務(wù)器市場(chǎng)將保持溫和增長(zhǎng)
嵌入式LINUX操作系統(tǒng)的研究
嵌入式組件技術(shù)的研究及應(yīng)用
用獨(dú)立服務(wù)器的站長(zhǎng)注意了
定位中高端 惠普8路服務(wù)器重裝上陣
“嵌入式系統(tǒng)概論”課程設(shè)計(jì)
電子設(shè)計(jì)應(yīng)用(2004年7期)2004-09-02
伊宁县| 上栗县| 吐鲁番市| 汪清县| 江都市| 台安县| 鹤庆县| 锡林郭勒盟| 孙吴县| 姚安县| 福鼎市| 泾阳县| 榆社县| 盘山县| 洮南市| 肥城市| 康定县| 特克斯县| 怀安县| 大兴区| 塔河县| 大庆市| 黄山市| 闸北区| 灵寿县| 开远市| 修水县| 固原市| 山阳县| 雅安市| 东乌珠穆沁旗| 洛浦县| 项城市| 孟村| 秭归县| 抚顺市| 高要市| 老河口市| 得荣县| 当雄县| 白银市|