999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式WEB服務器BOA的應用研究

2011-03-20 02:31:56朱嶸濤徐愛鈞肖榮華
單片機與嵌入式系統應用 2011年6期
關鍵詞:嵌入式程序數據庫

朱嶸濤,徐愛鈞,肖榮華

(1.長江大學工程技術學院信息系,荊州434020;2.長江大學電信學院;3.中石油川慶測井公司)

引 言

隨著Internet技術的成熟和嵌入式技術的不斷發展,利用網絡實現遠程控制已成為一種發展趨勢。在嵌入式設備的管理與交互中,基于網絡方式的應用開發是目前嵌入式系統開發的主流,這種應用程序的結構采用的是B/S結構,即在嵌入式設備上運行一個支持腳本或具有CGI功能的WEB服務器,能夠生成動態交互頁面。在遠程監控的過程中,通常會產生和處理很多的動態數據,而對數據的存取一般采取兩種方式:一種是基于文件方式,另一種是基于數據庫方式。基于文件方式來存取數據的缺點是顯而易見的,而基于數據庫方式的SQLite則可以通過事務進行調度與并發控制,可有效地對數據進行存取、查詢等操作,從而提高系統的開發效率和系統的可移植性。

1 嵌入式WEB服務器的軟硬件設計[1]

嵌入式WEB服務器通過交換機或調制解調器與Internet連接,用戶只需通過瀏覽器訪問該遠程服務器的IP地址,即可使用該服務器并實現對設備的訪問。嵌入式WEB服務器的工作過程,如圖1所示。

圖1 嵌入式WEB服務器的工作過程

圖2為硬件系統結構框圖。嵌入式WEB服務器采用S3C2410作為整個系統的處理器。S3C2410是Samsung公司的一款基于ARM920T內核的16/32位RISC嵌入式微處理器,主要面向手持設備以及高性價比、低功耗的應用。網絡控制部分選用CS8900A作為以太網控制器。Flash選用Samsung公司的容量為64MB的NAND Flash型K9F1208存儲器,SDRAM選用容量為64MB的HY57V561620AT存儲器。

圖2 硬件系統結構框圖

軟件設計包括系統引導加載程序Bootloader、配置裁減過的Linux操作系統內核和CRAMFS根文件系統。

2 嵌入式WEB服務器的構建[2]

典型的嵌入式WEB服務器有BOA和THTTPD等。這里選用BOA作為嵌入式WEB服務器,BOA是一個非常小巧的WEB服務器,可執行的代碼大約60KB。它是一個單任務的WEB服務器,只能一次完成用戶的請求,而不會創建(fork)出新的進程來處理并發連接請求,但BOA支持CGI,并且能為CGI程序創建出一個新的進程來執行。BOA服務器的設計目標是速度快和安全性好,在其站點公布的性能測試中,BOA的性能要好于Apache服務器的性能。

嵌入式WEB服務器BOA和普通WEB服務器一樣,能夠完成接收客戶端請求、分析請求、響應請求、向客戶端返回請求結果等任務。嵌入式WEB服務器工作原理如圖3所示。

圖3 嵌入式WEB服務器工作原理

嵌入式WEB服務器主要功能包括:

①完成WEB服務器的初始化工作,如建立TCP套接字、綁定端口、開始偵聽以及等待接收WEB瀏覽器的連接請求;

②當有請求連接時,WEB服務器接收來自客戶端請求;

③接收到客戶端的連接請求之后,分析客戶端請求,解析出請求的方法、URL目標、可選的查詢信息及表單信息,同時根據請求進行相應的處理;

④WEB服務器完成相應處理后,向WEB瀏覽器發送響應信息;

⑤關閉與客戶端的連接。

嵌入式BOA服務器的構建過程如下:

①從www.boa.org下載BOA源碼,BOA的版本為0.94.13。

②解壓。

#tar-xzvfboa-0.94.13.tar.gz

③進入源代碼目錄。

#cdboa-0.94.13/src

④運行configure文件,會生成Make-file文件。

#./configure

⑤修改Makefile文件,將

CC=gcc,CPP=gcc-E改成

CC=arm-linux-gcc,CPP=arm-linux-gcc-E

⑥進行交叉編譯。

#make

⑦去除調試信息,減小文件大小。

#arm-linux-strip boa

3 SQLite在ARM平臺上的移植[3]

SQLite是由D.Richard Hipp用C語言開發的輕量級嵌入式數據庫,它是應用最廣泛的嵌入式數據庫之一。SQLite的源代碼完全開放,可以免費用于任何用途,包括商業目的。SQLite提供了對SQL92的大多數支持,如多表和索引、事務、視圖、觸發和一系列的用戶接口及驅動。

SQLite的體系結構如圖4所示。對數據庫進行的各種操作都是按照此順序執行的。頂層是標記處理器(tokenize)和分析器(parser)。底部是經過優化的B樹,這樣有助于運行在可調整頁面緩沖時將對磁盤的查找降到最低。再往下是頁面高速緩存,它作用在OS抽象層之上。該體系結構的核心是虛擬數據引擎(VDBE),完成與數據相關的全部任務,并且是客戶和存儲之間信息交換的中間單元。當SQL語句被分析后,虛擬數據庫引擎就開始工作。代碼生成器將分析樹翻譯成一個袖珍程序,隨后又被組合成虛擬機器語言表示的一系列指令。

圖4 SQLite的體系結構

SQLite的主要接口函數有3個,分別是sqlite_open()、sqlite_close()和sqlite_exec()。其中,sqlite_open()用于打開一個SQLite數據庫,如果成功打開則返回數據庫的句柄,否則返回FALSE;sqlite_close()用于關閉SQLite數據庫,無返回值;sqlite_exec()執行相應的SQL命令。

SQLite的移植過程如下:

①從www.sqlite.org下載sqlite-2.8.17.tar.gz源碼,并解壓。

②在文件sqlite.h中指定SQLITE_PTR_SZ的值為4,使B樹有正確的變量大小。

③修改配置文件configure,注釋掉$cross_compiling相關的代碼。

④配置以生成Makefile。

#./configure--disable-tcl--host=arm-linux

⑤進入Makefile文件,將BCC=arm-linux-gcc-g-O2改成BCC=gcc-g-O2。由于編譯生成的可執行文件要在ARM開發板上運行,為了方便,將后面指定生成的庫libsqlite.la改成libsqlite.a,即編譯成靜態鏈接的形式。

⑥使用#make命令進行編譯,以生成可執行文件sqlite3。

⑦去除其中的調試信息,以減小文件的大小。

#arm-linux-strip sqlite3

CGI(Common Gateway Interface,公共網關接口)定義了WEB服務器與外部擴展程序(CGI程序)之間進行交互的接口標準。在WEB環境下,客戶端瀏覽器將數據傳送給WEB服務器,WEB服務器通過調用CGI程序實現和WEB瀏覽器的交互。也就是說,CGI程序負責接收來自客戶端的信息并進行相應的處理,將相應的結果再發送給WEB瀏覽器。CGI程序主要是從環境變量中獲取相關信息并處理,最后的結果以HTML的格式輸出返回給瀏覽器。通過編寫不同的CGI外部擴展程序,可以完成對WEB網頁中表單(Form)數據的處理、數據庫的查詢及現場設備數據的采集任務,因此客戶端用戶通過CGI程序和嵌入式WEB服務器就可以完成對動態數據的訪問。

嵌入式WEB服務器要訪問SQLite,CGI是一個非常不錯的選擇。CGI是外部擴展應用程序(例如用C語言編寫的C腳本語言)與WEB服務器交互的一個標準接口。而CGI標準可簡單概括為:CGI程序是通過標準輸入(STDIN)或環境變量來得到服務器的輸入信息,并通過標準輸出(STDOUT)向服務器輸出信息。按照CGI標準編寫的外部擴展應用程序可以處理WEB瀏覽器輸入的需要協同工作的數據,完成WEB瀏覽器與WEB服務器的交互操作。

在WEB環境下,瀏覽器與服務器之間的數據交互,大多是通過HTML中的Form表單實現的。Form提供了兩種數據傳輸的方式——GET與POST。GET方式傳輸的數據受URL長度的限制,因此傳輸的數據量小,且在傳輸數據的過程中是不安全的,而POST方式則不存在上述的缺點,故選擇用POST來進行數據的傳輸。根據CGI規范,對于POST方式,在WEB服務器中需要根據表單提交的數據長度,將其重定向為CGI程序的標準輸入,這樣CGI程序就可以通過標準輸入來得到客戶端提交的數據。重定向是通過UNIX管道機制來實現的。

POST方式下CGI的工作原理如圖5所示。WEB服務器是WEB瀏覽器與CGI程序之間的通道。WEB服務器接收到CGI請求后,就創建出一個主進程,同時也將接收到的數據傳遞給主進程。主進程為了讀取來自WEB服務器數據的長度,fork出一個子進程,創建出管道,并將管道的輸入端重定向為CGI的標準輸入。子進程通過管道將數據長度傳遞給CGI程序,CGI程序通過標準輸出將處理的結果發送給服務器,服務器再將相應信息傳遞給客戶端瀏覽器并顯示出來。

要實現嵌入式遠程數據的采集,先要將嵌入式設備采集的現場數據存儲到服務器的SQLite數據庫上,然后通過編寫相應的CGI程序來訪問SQLite數據庫。CGI程序必須滿足CGI規范,CGI程序使用C語言編寫,因此CGI程序可以調用SQLite提供的接口函數來訪問數據庫,同

圖5 POST方式下CGI的工作原理

樣要使用sqlite3_open()、sqlite3_exec()和sqlite3_close()這3個接口函數來操作數據庫。此外,如果想取回SQL語句訪問數據庫的結果,就要對每一個記錄執行回調函數callback()。

[1]王海龍,徐曉輝,等.基于嵌入式Web服務器的遠程控制系統的實現[J].電子設計工程,2010(5).

[2]劉瓊,馬海波,姜薇.SQLite在嵌入式Web服務器中的應用研究[J].微計算機信息,2010(8).

[3]俞輝,李永,等.ARM嵌入式Linux系統設計與開發[M].北京:機械工業出版社,2010.

[4]歐文盛.嵌入式Linux應用實例開發[M].北京:中國電力出版社,2008.

[5]李艷軍.基于Linux的嵌入式Web服務器Thttpd的應用研究與實現[J].信息化研究,2010,36(2).

猜你喜歡
嵌入式程序數據庫
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
搭建基于Qt的嵌入式開發平臺
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 国产成人亚洲综合A∨在线播放| 2021精品国产自在现线看| 色综合五月婷婷| 2021国产乱人伦在线播放| 亚洲日韩高清在线亚洲专区| 亚洲综合久久成人AV| 玖玖精品在线| 国产综合欧美| www.99精品视频在线播放| 性欧美在线| 亚洲国产精品VA在线看黑人| 无码精品福利一区二区三区| 丰满人妻被猛烈进入无码| 国产成人啪视频一区二区三区| 欧美性精品不卡在线观看| 99精品影院| 亚洲国产成人精品一二区| 午夜视频在线观看区二区| 四虎在线观看视频高清无码| 欧美精品另类| 最近最新中文字幕在线第一页| 国产成人一区| 99热国产这里只有精品无卡顿"| 中国一级特黄视频| 看国产毛片| 亚洲一区二区三区麻豆| 国产门事件在线| 亚洲视频a| 伊人久久大香线蕉影院| 亚洲人成人无码www| 国产在线无码av完整版在线观看| 精品一区二区无码av| 免费AV在线播放观看18禁强制| 亚洲床戏一区| 亚洲码一区二区三区| 久久精品人人做人人| 99热线精品大全在线观看| 毛片免费高清免费| 精品国产免费观看一区| 精品国产一二三区| 五月婷婷综合色| 中文字幕亚洲精品2页| 国产在线一二三区| 一级毛片免费观看不卡视频| 亚洲成人一区在线| 58av国产精品| 亚洲精品麻豆| 日本高清在线看免费观看| 亚洲中文精品久久久久久不卡| 伊人久久久久久久久久| 国产产在线精品亚洲aavv| 欧美黄网在线| 精品视频一区二区三区在线播 | 成年人国产网站| 成人福利在线观看| 欧美在线一级片| 69av免费视频| 日韩在线播放欧美字幕| 老色鬼久久亚洲AV综合| 国产亚洲精品无码专| 中文无码毛片又爽又刺激| a级毛片免费看| 亚州AV秘 一区二区三区| 国产欧美日韩另类| 亚洲成人黄色在线观看| 免费Aⅴ片在线观看蜜芽Tⅴ| 无码不卡的中文字幕视频| 99视频在线观看免费| 国产白浆一区二区三区视频在线| 国产黄网永久免费| 九九九久久国产精品| 国产福利小视频高清在线观看| 日韩欧美在线观看| 久久这里只有精品8| 亚洲二区视频| 成人一级黄色毛片| 国产在线视频自拍| 五月天在线网站| 欧类av怡春院| 国产精品一老牛影视频| 国产精品偷伦视频免费观看国产| 国产黑人在线|