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