吳云軒
(黎明職業(yè)大學 信息與電子工程學院,福建 泉州 36200)
嵌入式Web服務器在軌道拍攝系統(tǒng)的實現
吳云軒
(黎明職業(yè)大學 信息與電子工程學院,福建 泉州 36200)
給出了一種在ARM9硬件平臺及Linux操作系統(tǒng)下,采用CGI和Socket技術構建嵌入式Web服務器的設計方案。并以該方案在實現軌道拍攝系統(tǒng)的遠程控制為例,介紹了軌道攝影拍攝系統(tǒng)的軟硬件結構,嵌入式Linux下的進程間通信,以及基于BOA的嵌入式Web服務器的實現過程,給出了一種通過瀏覽器與嵌入式設備進行遠程控制的有效方法。
嵌入式系統(tǒng);BOA服務器;軌道拍攝
數字和網絡技術的不斷發(fā)展和普及,使人們獲得外界信息的方式多樣化,信息的傳播載體和采集方式也變得更加豐富。軌道拍攝是指延時攝影、定速矢量平移拍攝以及簡單的一維軌跡合成拍攝等新型的數字拍攝技術,是宣傳、記錄片中常用拍攝手法,以取代視頻播放的平靜和照片內容的呆板。例如日出日落、星云流動、植物生長過程等需要長時間拍攝等待,再將變化的過程濃縮到幾秒的時間內,呈現出諸如風云變幻或斗轉星移等肉眼無法觀察的景象,給觀眾一種震撼的視覺體驗。
為實現長時間的拍攝中的無人值守,以及提升抗震性能和軌道移動的平滑性,本文在軌道拍攝系統(tǒng)中運用了嵌入式Web服務器技術,采用B/S結構進行程序設計,即在嵌入式開發(fā)板上運行一個能夠生成動態(tài)頁面的Web服務器,支持腳本和CGI功能。開發(fā)板通過串行口與軌道拍攝系統(tǒng)進行連接控制,客戶端通過Web瀏覽器就可以對軌道拍攝系統(tǒng)進行管理和監(jiān)控,設置拍攝的參數,控制軌道拍攝系統(tǒng)。
在軌道拍攝系統(tǒng)中運用嵌入式Web服務器技術的總體思想是實現設備的網絡化,通過普通的瀏覽器就可以對遠端的拍攝現場進行控制。此外,由于瀏覽器所在的客戶端平臺與服務器所在的平臺無關,客戶端可以是不同的種操作系統(tǒng)(如android、IOS或windows等)的終端設備,實現了跨平臺的控制。
圖1 系統(tǒng)設計框圖
系統(tǒng)是基于B/S結構設計的,包含客戶瀏覽器端和嵌入式Web服務器端兩大部分,相互間通過以太網連接通信,整體設計框圖如圖1所示??蛻舳丝梢允枪P記本、IPAD等跨平臺的便攜設備,通過瀏覽器采用HTTP和TCP/IP協(xié)議訪問服務器。服務器端采用ARM9和嵌入式Linux技術,移植了一個嵌入式Web服務器,服務器通過環(huán)境變量與CGI程序進行通信,實現對軌道拍攝模塊的控制。
CGI(通用網關接口)是一個Web服務器主機提供信息服務的標準接口[1],Web服務器可以通過這個標準接口來執(zhí)行應用程序,并將應用程序的各種形式的輸出傳送到Web瀏覽器。當來自客戶端瀏覽器的連接請求被服務器端監(jiān)聽到時,服務器會為瀏覽器創(chuàng)建一個子進程,提供連接服務。根據不同請求類型,服務器返回HTML文件或者通過CGI程序接口調用外部程序。因此,CGI接口的功能就是在HTML文檔與Web服務器之間傳遞信息,借助CGI用戶可以編寫用于與服務器相交互的程序。當用戶通過網頁向客戶端瀏覽器提交一個HTML表單時,瀏覽器以名字/值對的方式對HTML表單數據進行編碼,通過以太網發(fā)送給Web服務器,服務器再將數據交給CGI程序執(zhí)行。CGI程序通過調用子程序控制軌道拍攝模塊,程序運行結束后,通過標準輸出把數據以HTML形式送到服務器再到用戶端,HTML文件將會被用戶端的瀏覽器解釋,并將結果顯示在瀏覽器上。
本系統(tǒng)采用基于S3C2410微處理器的開發(fā)板FS2410DEV,其具體組成如圖2所示。S3C24lO是一款基于ARM92OT內核的32位RISC嵌入式處理器[2]。該開發(fā)板除了微處理器和存儲設備外,還擴展RJ-45網卡、UART接口、按鍵等設備接口,引出了CPU的一些通用I/O引腳,可連接外圍的器件模塊。在進行系統(tǒng)應用程序開發(fā)前,還需要在內核中移植和添加相關硬件的驅動程序。
圖2 系統(tǒng)硬件結構框圖
在拍攝過程中需保證相機在自然條件下能穩(wěn)定、慢速平滑的移動,這是拍攝成功的關鍵。因此,攝影軌道型材采用碳素型材,具有抗震性好、材質輕、便于攜帶。相機通過云臺固定在傳動皮帶上,使用步進電機傳動,以得到較高的重復定位精度。利用模塊化設計方法對控制模塊進行編程,實現一些基本的軌道控制動作以及移動軌跡的記錄等,再通過串行口與主控制器進行通信,實現遠程控制。相機的拍攝動作采用2.4G無線調頻遙控器控制,遙控觸發(fā)模塊連接到主控制器的通用I/O口,由主控制器控制。
在系統(tǒng)硬件平臺連接完成后,首先要移植基于具體硬件的嵌入式Linux操作系統(tǒng)到系統(tǒng)平臺中,然后編寫和移植基于該操作系統(tǒng)I/O接口驅動、網卡驅動等各種驅動程序,并把這些程序交叉編譯到系統(tǒng)平臺中,編寫腳本文件,在系統(tǒng)啟動后自動加載相關的進程。系統(tǒng)應用軟件的整體結構如圖3,在加載完驅動程序后,操作系統(tǒng)將控制權交由系統(tǒng)監(jiān)控進程和Web服務器守護進程,兩個進程間的通信采用消息隊列的方式實現。
圖3 系統(tǒng)軟件結構框圖
服務器進程啟動后,首先在服務器端建立socket,然后綁定本地端口,接著開始偵聽端口,等待用戶瀏覽器的連接請求。當連接建立后,服務器根據HTTP協(xié)議分析瀏覽器的請求,并作相應的處理。在一次TCP連接中,Web服務器只能處理一個來自客戶端的HTTP請求,處理請求后服務器會斷開當前連接,進入循環(huán)等待下一次連接請求。
本設計中CGI實現的功能是簡單的用戶身份驗證,以及通過系統(tǒng)監(jiān)控進程實現對軌道拍攝模塊的控制和狀態(tài)回傳,兩個進程間的通信采用消息隊列的方式實現。消息隊列是消息的鏈接表,存放在內核中并由消息隊列標識符標識,msgget用于創(chuàng)建一個新的消息隊列或打開一個現有的消息隊列,若執(zhí)行成功,msgget返回非負隊列ID,該值就可被用于消息的添加和接收函數[3]。msgsnd將新消息添加到隊尾,msgrcv用于從隊列中取消息。本設計中,CGI和系統(tǒng)監(jiān)控進程使用共有的IPC key創(chuàng)建消息隊列,定義整型變量msgid存放msgget的返回值,相應的代碼為:msgid=msgget(KEY_MSG,IPC_CREAT|0666);每個消息又包含了消息類型和消息數據,消息的結構定義為:
消息類型使我們可以指定想要哪一種消息,在發(fā)送消息前先設置消息類型的值,接收消息時可以根據該值區(qū)分CGI或系統(tǒng)監(jiān)控進程發(fā)送的消息,buf1存放發(fā)送的消息,buf2用于接收消息。用戶經網頁瀏覽器訪問Web服務器,通過CGI程序發(fā)出控制命令,并生成存放控制命令代碼的消息隊列。系統(tǒng)監(jiān)控進程接收到消息后,經過串口將控制命令發(fā)送給軌道拍攝控制模塊。軌道拍攝模塊執(zhí)行后將設備狀態(tài)代碼回傳給系統(tǒng)監(jiān)控進程,系統(tǒng)監(jiān)控進程將狀態(tài)代碼發(fā)送到消息隊列,CGI程序接收到消息后,將狀態(tài)代碼的信息轉換為HTML代碼返回瀏覽器端。
系統(tǒng)選用Boa作為嵌入式Web服務器,它是一款單任務的HTTP服務器,通過建立HTTP請求列表來處理多路HTTP連接請求[4]。Boa的可執(zhí)行代碼很小,只有60KB左右,本設計使用的Boa源碼版本為0.94.13,移植過程主要是對源碼的交叉編譯和配置。
3.3.1 Boa程序源碼的交叉編譯
直接運行src目錄下的configure文件,生成一個Makefile文件,再修改該文件的CC和CPP為交叉編譯器的安裝路徑:
編譯后生成可執(zhí)行文件Boa。
3.3.2 配置Boa服務器
在/etc目錄下創(chuàng)建一個目錄名為boa的目錄,放入boa.conf文件,這個文件是Boa的主要配置文件,相關的設置項為:
3.3.3 Boa的執(zhí)行
將交叉編譯后生成的可執(zhí)行文件Boa加入到/bin/下,然后對內核再次編譯并下載到FS2410DEV開發(fā)板上,在啟動腳本里添加 /bin/boa,啟動后就可以通過Web瀏覽器訪問開發(fā)板中的網頁。圖4是通過IE瀏覽器訪問到的軌道拍攝系統(tǒng)的拍攝控制界面。
圖4 開發(fā)板上的網頁
本文在已完成的軌道拍攝系統(tǒng)的基礎上,設計了一個基于ARM9和嵌入式Linux的嵌入式的Web服務器,實現了軌道拍攝系統(tǒng)的網絡化和遠程控制,在PC端的瀏覽器上對拍攝系統(tǒng)信息控制和狀態(tài)查詢。在設計開發(fā)過程中,我們將嵌入式Web服務器作為一個單獨的模塊,提供了與其他模塊連接的接口,根據不同的應用場合,只需在軟件上進行修改,就能很容易的應用到各種嵌入式設備,在工業(yè)和日常生活中有著廣泛的應用前景。
[1]黃光奇,編著.CGI編程指南[M].北京:電子工業(yè)出版社,1999.
[2]周維,陳默.基于SC2410的ARM開發(fā)平臺[J].電子技術,2004(7):4-7.
[3]W.Richard Stevens Stephen A.Rago.UNIX環(huán)境高級編程[M].2版.北京:人民郵電出版社,2006.
[4]Larr D,Jon N.Boa Webserver[EB/OL].(2000-02-03)[2013-08-25]http://www.boa.org/.
Realization of Embedded Web Server in Orbit Shooting System
WU Yun-xuan
(College of Information and Electronic Engineering,Liming Vocational University,Quanzhou 362000,China)
Based on ARM9 hardware platform and Linux operating system,this paper gives a design of embedded Web server which is built by CGI and Socket.Taking the remote control of realization of this program in orbit shooting system as a case study,it describes the hardware and software architectures,interprocess communication under embedded Linux and the specific construction method of BOA-based embedded Web server.This design gives an effective method for remote control through browsers and embedded devices.
embedded system;BOA server;orbit shooting
TP368.1
A
1009-3907(2013)10-1242-03
2013-08-25
泉州市科技局科技資項目(2008G16)
吳云軒(1980-),男,福建惠安人,講師,碩士,主要從事單片機與嵌入式系統(tǒng)方面研究。
責任編輯:
吳旭云