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