西南科技大學信息工程學院 鄧輕松
本文利用基于B/S架構的嵌入式Web服務器,以ARM9-S3C2440處理器為硬件核心,以嵌入式Linux系統(tǒng)為軟件平臺,研究并設計了一個嵌入式Web監(jiān)測系統(tǒng),通過Int er net接入到網(wǎng)絡,提供一種低成本、簡單且有效的對遠端設備進行監(jiān)控方案。
本文設計一種低成本的嵌入式Web監(jiān)控系統(tǒng)主要是通過嵌入式終端上的傳感器對模擬信號實時采集,然后再通過AD轉換成為數(shù)字信號,最后系統(tǒng)將轉換后的數(shù)據(jù)保存到嵌入式系統(tǒng)的數(shù)據(jù)庫中。用戶可以通過Web瀏覽器實時遠程查看當前采集到的信號值,也可以查看以往采集的歷史數(shù)據(jù)。
本系統(tǒng)使用的硬件平臺功能框架圖如圖1所示,該平臺使用三星公司S3C2440處理器,該處理器基于ARM920T內核,32位內部總線架構,并且片上資源非常豐富,而且還對硬件系統(tǒng)的配置進行了相關的擴展,包括1塊256MB的NAND Fl ash 和 2塊32MB的DDR SDRAM,AD由S3C2440芯片引出,3個電位器控制輸入、4個USB接口、3個RS232串口用于調試以及與PC機通信、1個DM9000AE 10/100M自適應Et her Net網(wǎng)卡、1個25針的板載JTAG,直接支持下載與仿真等等,其硬件如圖1所示。
本次設計采用嵌入式系統(tǒng)中常用的Boa Web服務器。它是一款進程的、迭代的HTTP服務器,即同一時刻只能響應一個用戶。這也是和Apache等并發(fā)web服務器的主要差別,嵌入式系統(tǒng)與傳統(tǒng)PC服務器相比,其本身資源有限,但這對于滿足嵌入式設備場合完全足夠。通過編譯后的boa服務器代碼大約只有60kB的可執(zhí)行代碼,這對資源緊缺的嵌入式系統(tǒng)來說,無疑是非常實用。而且boa還支持CGI,只為CGI程序f or k一個新的進程來響應用戶的要求,這在最大程度上節(jié)省了系統(tǒng)資源,對嵌入式系統(tǒng)來說是至關重要的。本次設計側重介紹boa服務器的移植,故對boa服務器工作原理以及流程不做過多介紹。
圖1 系統(tǒng)硬件結構框圖
(1)下載boa-0.94.13.t ar.gz源碼包并解壓。
# t ar –xvzf boa-0.94.13.t ar.gz
(2)進入sr c目錄并運行./conf igur e腳本,然后修改生成的Makef il e文件。
# ./conf igur e, 生成Makef il e文件。
如下修改Makef il e文件:
CC=gcc 修改為 CC=ar m-l inux-gcc
CPP=gcc –E 修改為 CPP=ar m-l inux-gcc –E
修改sr c/compat.h文件內容如下:
#def ine TIMEZONE_OFFSET(f oo) f oo##->t m_gmtof f修改為
#def ine TIMEZONE_OFFSET(f oo) f oo->t m_gmt of f
保存修改后的Makef il e并運行make命令進行編譯,編譯成功后,在sr c目錄下得到可執(zhí)行文件boa,將其下載到開發(fā)板的/bin目錄中。
根據(jù)系統(tǒng)時間需求,修改boa的配置文件boa.conf。修改完成后將其下載到開發(fā)板的/etc/boa目錄中。
# vim boa.conf
(1)Gr oup nogr oup修改為 Gr oup 0,設置為只有root 才可以執(zhí)行boa 服務器;
(2)Script Al ias /cgi-bin / /usr/l ib/l ib/cgi-bin/修改為 Script Al ias /cgi-bin/ /var/www/cgi-bin/
(3)#Ser ver Name www.your.or g.her e 修改為 開發(fā)板的IP地址即可。
其他設置保持默認設置不變即可,最后將編譯后的可執(zhí)行文件boa下載到開發(fā)板的/bin/目錄下并運行boa服務器,通過PC機端的瀏覽器訪問,若能夠訪問到boa靜態(tài)ht ml網(wǎng)頁和測試cgi程序,表明boa web服務器移植成功。
因為既要實現(xiàn)能夠讓用戶查詢監(jiān)控系統(tǒng)的歷史數(shù)據(jù),故必須對采集到的數(shù)據(jù)進行保存,故需要在嵌入式系統(tǒng)中運行數(shù)據(jù)庫系統(tǒng)。SQLit e數(shù)據(jù)庫一款輕量級、跨平臺的關系數(shù)據(jù)庫,支持絕大部分SQL92標準(如視圖、事務、觸發(fā)器等)弱類型數(shù)據(jù)庫存儲,代碼開源。SQl it e不是一個與其他應用程序通信的獨立進程,而是與其他應用程序集成于一體,共同使用相同的進程空間,所以主要的通信協(xié)議是在編程語言內直接調用其提供的API。SQLit e運行開銷很少,基本上是為嵌入式系統(tǒng)量身定做的一款數(shù)據(jù)庫。SQLit e數(shù)據(jù)庫移植過程如下:
(1)下載sql it e-3.6.17.t ar.gz源碼包并解壓。
# t ar –xzvf sql it e-3.6.17.t ar.gz
(2)在/usr/l ocal/目錄下創(chuàng)建目錄sql it e_ar m。
# mkdir /usr/l ocal/sql it e_ar m
(3)進入sql it e-3.6.17目錄運行conf igur e腳本并進行配置。
# ./conf igur e –pr ef ix=/usr/l ocal/sql ite_ar m –disabl e-t cl –host=ar m-l inux
(4)交叉編譯并安裝
#make #make inst al l
安裝完成后,在/usr/l ocal/sql it e_ar m目錄下生成了bin、incl ude和l ib三個目錄。其中bin目錄下有可執(zhí)行文件sql it e3;l ib和incl ude目錄下生成對應的鏈接庫文件和相應的頭文件。將l ib目錄下的庫文件下載到開發(fā)板的/usr/l ib中,將/bin目錄下的可執(zhí)行文件sql it e3下載到開發(fā)板的/bin/目錄下;將incl ude目錄下的頭文件下載到開發(fā)板的/usr/incl ude/目錄下即可。
本系統(tǒng)設計的嵌入式Web遠程監(jiān)控系統(tǒng),根據(jù)功能需求劃分為4個模塊。
(1)嵌入式Web服務器模塊。該模塊是整個系統(tǒng)的核心部分負責接受客戶端瀏覽器請求并對用戶提交的數(shù)據(jù)進行解析,根據(jù)請求作出相應的處理,并將處理后的結果發(fā)送給客戶端瀏覽器,關閉與客戶端的TCP連接。
(2)SQLit e數(shù)據(jù)庫模塊。該模塊用來為其他模塊提供后臺支持,既可以實現(xiàn)現(xiàn)場設備數(shù)據(jù)的存儲和查詢,也可以實現(xiàn)用戶信息的管理等功能。
(3)CGI通用網(wǎng)關接口模塊。CGI是外部擴展應用程序與嵌入式Web服務器交互的一個標準接口。按照CGI標準編寫外部擴展應用程序,可以處理客戶端瀏覽器輸入的數(shù)據(jù)并將產生的信息以HTML文檔格式的形式反饋給客戶端,從而完成客戶端與Web服務器的交互操作
(4)設備采集與控制模塊。該模塊主要是實現(xiàn)對開發(fā)板上的多路A/D數(shù)據(jù)動態(tài)采集以及處理客戶端發(fā)送過來的控制命令,從而實現(xiàn)對遠程設備進行控制的目的。
首先,系統(tǒng)采集到的數(shù)據(jù)經(jīng)過A/D轉換后寫入到本地的data.xml文件中。當用戶要求查看采集到的實時數(shù)據(jù)請求時,html頁面通過調用set Timeout(“l(fā) oadXML()”,1000)方法每隔1秒間隔讀取data.xml文件內容,動態(tài)實時刷新采集到的數(shù)據(jù)。當用戶請求查看歷史數(shù)據(jù)時,CGI程序通過調用SQLiteAPI執(zhí)行查詢語句,并將查詢結果輸出到Web服務器,最后再將結果反饋給客戶如果用戶發(fā)送的是請求控制設備命令,Web服務器將收到的請求數(shù)據(jù)進行解碼后執(zhí)行相應的CGI程序,在CGI程序中通過系統(tǒng)調用進入內核,執(zhí)行設備的驅動程序即可實現(xiàn)對設備的控制。最后再將處理結果反饋給用戶即可。
用戶在客戶端瀏覽器里輸入嵌入式Web服務器的IP地址(ht t p://192.168.1.100)輸入用戶名和密碼后,進入導航主頁后點擊查看,就可以看到采集到的實時數(shù)據(jù),實驗結果如圖2,圖3所示。
圖2 系統(tǒng)登錄界面
圖3 實時電壓值顯示界面
本文以三星s3c2440處理器為硬件平臺、嵌入式l inux系統(tǒng)為軟件平臺設計了一種嵌入式Web遠程測控系統(tǒng)。用戶只需以瀏覽器為客戶端軟件通過網(wǎng)絡訪問Web服務器進而查看當前各個電位器的電壓值,查詢電位器的歷史電壓值、控制設備等。本文設計的遠程測控系統(tǒng)開發(fā)難度小、功能實用、系統(tǒng)維護、升級方便,可以廣泛用于人們生活中。
[1]杜國相,石俊杰.SQLite嵌入式數(shù)據(jù)庫的應用[J].數(shù)據(jù)庫與信息管理,2012.5:43-45.
[2]田智春.基于嵌入式數(shù)據(jù)庫SQLite3.0的遠程監(jiān)控系統(tǒng)[D].西安建筑科技大學,2010.
[3]孟旭霞.基于嵌入式Web的遠程監(jiān)控系統(tǒng)的研究與實現(xiàn)[D].廣西師范大學,2008.