嵌入式數(shù)據(jù)庫(kù)SQLite在遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用
本系統(tǒng)以32位的ARM微處理器S3C4510B為硬件開發(fā)平臺(tái),采用μClinux操作系統(tǒng),移植了Boa服務(wù)器和SQLite嵌入式數(shù)據(jù)庫(kù)。系統(tǒng)主要功能如下,從底層設(shè)備采集的現(xiàn)場(chǎng)數(shù)據(jù),經(jīng)過(guò)數(shù)據(jù)處理,保存到嵌人式數(shù)據(jù)庫(kù)SQLite。用戶可在任何和Internet相連的地方,通過(guò)Web瀏覽器便可實(shí)時(shí)監(jiān)控設(shè)備狀態(tài)。因此對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)有上端的以太網(wǎng)通信程序和下端的CAN通信程序。這里主要討論以太網(wǎng)通信程序。下面以CGI程序訪問(wèn)數(shù)據(jù)庫(kù),然后在客戶端瀏覽器動(dòng)態(tài)顯示的Display.cgi程序?yàn)槔f(shuō)明SQLite數(shù)據(jù)庫(kù)API函數(shù)的用法。程序主要代碼如下:
3.2 SQLite應(yīng)用程序交叉編譯
S3C4510B是Samsung公司開發(fā)的一款性價(jià)比很高的無(wú)MMU的32位ARM處理器,而,μClinux是經(jīng)過(guò)對(duì)標(biāo)準(zhǔn)Linux內(nèi)核的改動(dòng),專門針對(duì)沒(méi)有MMU的CPU,適合嵌入式系統(tǒng)小型化應(yīng)用。μClinux采用romfs文件格式,比Linux的ext3文件格式需要更少的空間,但卻繼承了大部分Linux的優(yōu)秀特性。
為了將嵌有SQLite的CGI程序應(yīng)用到S3C4510B+μClinux開發(fā)平臺(tái)上,必須對(duì)CGI程序進(jìn)行交叉編譯,然后下載到ARM開發(fā)板。因?yàn)榻徊婢幾g要用到romfs格式的libsqlite.a(chǎn)庫(kù)文件,使得過(guò)程有點(diǎn)麻煩,主要步驟如下:
(1)下載SQLite源代碼:可以到SQLite的官方網(wǎng)站(http://www.sqlite.org/download.html),下載最新SQLite-3.3.7.tar.gz源代碼包或者SQLite-2.8.17.tar.gz。本文以SQLite-3.3.7.tar.gz為例,進(jìn)行說(shuō)明。
(2)將下載的軟件包進(jìn)行解壓縮tar zxvf sqlite-3.3.7.tar.gz這時(shí)在用戶目錄下會(huì)有sqlite-3.3.6文件夾生成。
(3)添加Makefile文件和修改main.mk文件交叉編譯過(guò)程中,最重要的是寫一個(gè)與μ2Clilnux相適應(yīng)的Make-file文件。本文使用的μClinux是μClinux-dist-20041215.tar.gz,交叉編澤工具為arm-elf-tools-20030314.sh。完整的Makefile內(nèi)容如下:
TOP=../sqlite-3.3.7
最后修改main.mk文件頭部的TCCX為:TCCX:$(TCC)$(OPTS)$(T卜IREA[)SAFE)$(LJSI。EEP)-I.-I$(TOP)/$src$(CFLAGS)$(LDFLAGS)
再往下幾行,找到LIBOBJ中的tclsqlite.o并去掉他。這樣全部修改完畢。
(4)交叉編譯
cd/sqlite-3.3.7make
這時(shí)會(huì)在sqlite-3.3.7文件夾中生成.romfs格式的sqlite3和靜態(tài)鏈接庫(kù)libsqlite3.a(chǎn)這兩個(gè)最有用的東西。CGI程序的交叉編譯如下:
arm-elf-gcc-Wl,-elf2flt-o Display.cgi Display.clsqlite3-L/sqlite-3.3.7
交叉編譯時(shí)需要用到的靜態(tài)庫(kù)文件就是前面生成libsqlite3.a(chǎn),結(jié)果生成300 kB的Display.cgi程序,通過(guò)NFS方法調(diào)試通過(guò)后,放到cgi-bin目錄下,同內(nèi)核一起編譯后下載到開發(fā)板。
4結(jié) 語(yǔ)
嵌入式數(shù)據(jù)庫(kù)SQLite在樓宇配電監(jiān)控系統(tǒng)中的應(yīng)用,滿足監(jiān)控系統(tǒng)數(shù)據(jù)共享的管理要求。由于資源占用少、性能良好和零管理成本,嵌入式數(shù)據(jù)庫(kù)大有用武之地。SQLite以他小巧的體積、快速高效、穩(wěn)定可靠、易移植等優(yōu)勢(shì)將成為嵌入式數(shù)據(jù)庫(kù)領(lǐng)域的新寵。加上免費(fèi)開放源代碼、沒(méi)有版權(quán)限制,是一個(gè)值得推廣的應(yīng)用軟件。
評(píng)論