• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于嵌入式的數(shù)據(jù)庫(kù)設(shè)計(jì)

      2015-05-04 07:48:28李少雄
      科技創(chuàng)新與應(yīng)用 2015年13期
      關(guān)鍵詞:嵌入式

      摘 要:文章提出了基于嵌入式的簡(jiǎn)單數(shù)據(jù)庫(kù)設(shè)計(jì)。設(shè)計(jì)了以S3C2440A微處理器作為數(shù)據(jù)庫(kù)數(shù)據(jù)采集的硬件控制核心,然后指出了嵌入式下數(shù)據(jù)庫(kù)的需求特點(diǎn),對(duì)在ARM-Linux下的SQLite數(shù)據(jù)庫(kù)的體系進(jìn)行分析,再結(jié)合ARM-Linux開(kāi)發(fā)板給出了如何實(shí)現(xiàn)SQLite數(shù)據(jù)庫(kù)的具體方法。

      關(guān)鍵詞:嵌入式;SQLite數(shù)據(jù)庫(kù);ARM-Linux開(kāi)發(fā)平臺(tái)

      引言

      現(xiàn)有的RTU多基于ARM7開(kāi)發(fā)板上的程序植入和數(shù)據(jù)庫(kù)管理,對(duì)于多線程的數(shù)據(jù)管理,以及種類(lèi)繁多的第三方數(shù)據(jù)接口,顯得力不從心。本課題擬在ARM9處理器上進(jìn)行數(shù)據(jù)庫(kù)的建立,對(duì)底層的數(shù)據(jù)采集,并對(duì)采集數(shù)據(jù)進(jìn)行歷史保留和遠(yuǎn)程管理。其中,數(shù)據(jù)庫(kù)的建立運(yùn)用可基于嵌入式系統(tǒng)的小型數(shù)據(jù)庫(kù)SQlite,SQLite是一款嵌入式數(shù)據(jù)庫(kù),沒(méi)有獨(dú)立運(yùn)行的進(jìn)程,在所服務(wù)的應(yīng)用程序在應(yīng)用程序進(jìn)程空間中是共同存在的。它與應(yīng)用程序的代碼也是一起的,作為它所服務(wù)程序的一部分,同時(shí)提供了豐富的數(shù)據(jù)庫(kù)接口;而對(duì)數(shù)據(jù)采集,則由底層設(shè)備驅(qū)動(dòng)程序完成。

      1 數(shù)據(jù)庫(kù)數(shù)據(jù)采集的硬件平臺(tái)設(shè)計(jì)

      為了實(shí)時(shí)的對(duì)現(xiàn)場(chǎng)數(shù)據(jù)的采集和傳輸,我們采用功能強(qiáng)大的ARM9作為主控處理器,外接相關(guān)功能模塊,在ARM9處理器上嵌入Linux操作系統(tǒng),其強(qiáng)大的多任務(wù)和多線程以及設(shè)備獨(dú)立性能夠較好的發(fā)揮ARM9強(qiáng)大的控制功能。

      現(xiàn)場(chǎng)數(shù)據(jù)采集主要由:數(shù)字量輸入、輸出模塊、模擬量輸入模塊組成。數(shù)字量輸入模塊將外部采集的數(shù)據(jù)經(jīng)過(guò)處理輸入到ARM9處理器;模擬量輸入模塊采集外部輸入的模擬量;數(shù)字量輸出模塊采集主控處理器的輸出量。如圖1所示。

      圖1 硬件系統(tǒng)主要構(gòu)成圖

      數(shù)據(jù)的存儲(chǔ)和傳輸部分主要包括S3C2440A微處理器、存儲(chǔ)器模塊、數(shù)據(jù)通信模塊、RS458模塊、以太網(wǎng)模塊、無(wú)線功能模塊等。該處理器是基于ARM920T核心的16/32位的精簡(jiǎn)指令集(RISC)微處理器,S3C2440A為手持設(shè)備和一些小型應(yīng)用提供了低耗能、低價(jià)格、高性能提供了一個(gè)絕佳的選擇。它采用了新的總線結(jié)構(gòu)AMBA(Advanced Microcontroller Bus Architecture),這一結(jié)構(gòu)具有獨(dú)立的16KB指令緩存和16KB數(shù)據(jù)緩存,每個(gè)都是由8字長(zhǎng)的行組成。因?yàn)樗哂幸惶淄暾南到y(tǒng)外設(shè),S3C2440A降低了整體的系統(tǒng)成本并且不需配置另外的組件。這部分的主要功能是對(duì)現(xiàn)場(chǎng)采集數(shù)據(jù)進(jìn)行處理、存儲(chǔ)和顯示,之后通過(guò)網(wǎng)絡(luò)把所采集的數(shù)據(jù)上傳到遠(yuǎn)程的PC機(jī)網(wǎng)頁(yè)上。遠(yuǎn)程的PC機(jī)主要負(fù)責(zé)的功能是對(duì)所上傳的數(shù)據(jù)進(jìn)行監(jiān)測(cè)、分析、處理。必要時(shí)對(duì)采集終端進(jìn)行控制。

      2 Linux下的數(shù)據(jù)庫(kù)的應(yīng)用

      基于Linux系統(tǒng)下的數(shù)據(jù)庫(kù)數(shù)不勝數(shù),大型應(yīng)用于商業(yè)開(kāi)發(fā)的數(shù)據(jù)庫(kù)有Sybase、Empress、Oracle、Informix等,小型數(shù)據(jù)庫(kù)常用的有mSQL、MySQL、Sqlite等等。應(yīng)用于商業(yè)開(kāi)發(fā)的大型數(shù)據(jù)庫(kù)一般價(jià)格高昂并且體積龐大,不符合嵌入式下數(shù)據(jù)庫(kù)要求。在小型數(shù)據(jù)庫(kù)中MySQL雖說(shuō)在保持體積較小的情況,提供了足夠的應(yīng)用與一般開(kāi)發(fā)的功能,但是在應(yīng)用于商業(yè)用途也要收費(fèi)。mSQI具有嵌入式開(kāi)發(fā)的條件,但是由于它并非完全開(kāi)源的代碼,在使用期限上不符合本設(shè)計(jì)的要求。余下的開(kāi)放源碼數(shù)據(jù)庫(kù)中,除了占用空間較大以外,學(xué)習(xí)難度也比較大,如果非要采用的話必然會(huì)加大開(kāi)發(fā)成本。

      SQLite支持大部分的SQL的語(yǔ)句,采用單文件存放數(shù)據(jù)庫(kù),存儲(chǔ)速度也快,在操作語(yǔ)句上與關(guān)系數(shù)據(jù)庫(kù)類(lèi)型更加接近,最重要的是它的代碼使完全開(kāi)源的,不用收費(fèi)?;赟QLite的設(shè)計(jì)理念,雖然相較與商業(yè)用途的大型數(shù)據(jù)庫(kù)在功能上有所不足,但是在開(kāi)源組織的日漸完善下差距逐漸縮小。在應(yīng)用上如果不需要存儲(chǔ)過(guò)程或者復(fù)雜的表之間的關(guān)聯(lián)的話,SQLite是個(gè)非常好的平衡點(diǎn)。

      3 SQLite的體系結(jié)構(gòu)以及在Linux平臺(tái)上的開(kāi)發(fā)技術(shù)

      3.1 SQLite的體系結(jié)構(gòu)

      SQLite有一套簡(jiǎn)潔的、模塊化的體系結(jié)構(gòu),并引進(jìn)了一些方法進(jìn)行有關(guān)關(guān)系型數(shù)據(jù)庫(kù)的管理。SQLite的體系結(jié)構(gòu)由3個(gè)子系統(tǒng)和8個(gè)獨(dú)立模塊組成,如圖2所示,它顯示了SQLite的主要成分及各成分之間的關(guān)聯(lián),其中有一些相當(dāng)接近于關(guān)系數(shù)據(jù)庫(kù)管理。

      圖2 SQLite的體系機(jī)構(gòu)

      接口位于整個(gè)結(jié)構(gòu)的頂端,由SQLite C API組成。所有與SQLite交互的程序和庫(kù)文件都是通過(guò)接口進(jìn)行的。Tokenizer(詞法分析器)和Parser(語(yǔ)法分析器)協(xié)同對(duì)文本形式的查詢語(yǔ)言進(jìn)行分析,驗(yàn)證其語(yǔ)法的有效性,然后轉(zhuǎn)化成底層能更容易處理的層次化數(shù)據(jù)結(jié)構(gòu)。這個(gè)結(jié)構(gòu)的中心部分便是數(shù)據(jù)庫(kù)引擎VDBE(Virtual DataBase Engine)。VDBE在字節(jié)碼上工作,區(qū)別于頂層操作系統(tǒng)、系統(tǒng)體系結(jié)構(gòu)和CPU。B-tree、page cache(頁(yè)緩存)、操作系統(tǒng)接口組成了整個(gè)后端。B-tree和pager作為信息代理,他們并不知道信息內(nèi)容,只是對(duì)這些信息進(jìn)行移動(dòng)和排列。

      3.2 SQLite在ARM上的實(shí)現(xiàn)

      SQLite嵌入式數(shù)據(jù)庫(kù)的代碼使開(kāi)源的,根據(jù)不同需求的硬件平臺(tái),對(duì)源碼進(jìn)行交叉編譯即可實(shí)現(xiàn)移植。在上的編譯過(guò)程主要有以下幾個(gè)步驟:

      解壓sqlite壓縮文件

      tar -zvxf sqlite-autoconf-3071300.tar.g

      得到文件sqlite-autoconf-307130

      進(jìn)入sqlite-autoconf-3071300目錄

      [root@localhost ~]# cd /home/sqlite-autoconf-3071300/

      配置

      [root@localhost sqlite-autoconf-3071300]# ./configure

      編譯

      [root@localhost sqlite-autoconf-3071300]# make

      安裝

      [root@localhost sqlite-autoconf-3071300]# make install

      默認(rèn)安裝路徑為/usr/local/及系統(tǒng)標(biāo)準(zhǔn)目錄

      頭文件 sqlite3.h sqlite3ext.h安裝在 /usr/local/include下

      以及頭文件標(biāo)準(zhǔn)目錄 /usr/include下

      庫(kù)文件

      libsqlite3.a libsqlite3.so.0.8.6 libsqlite3.so.0 libsqlite3.so

      安裝在/usr/local/lib目錄下并且共享庫(kù)文件libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6安裝在系統(tǒng)庫(kù)文件標(biāo)準(zhǔn)目錄/usr/lib下,可執(zhí)行文件sqlite3安裝在/usr/local/bin目錄下以及系統(tǒng)可執(zhí)行標(biāo)準(zhǔn)目錄/usr/bin下,幫助文檔man安裝在/usr/local/share目錄下。

      修改Makefile文件:

      將代碼行BBC=arm-linux-gcc-g-02改成BBC=gcc-g-02。用make生成sqlite、libsqlite.a和libsqlite.so。為了減小執(zhí)行文件大小可用strip處理,去掉其中的調(diào)試信息。

      在ARM板上運(yùn)行SQLite:

      將SQLite下載到ARM板的/tmp目錄,修改權(quán)限并運(yùn)行:

      chmod +wx sqlite

      ./sqliteest.sqlite

      會(huì)出現(xiàn):

      sqlite>

      如果一切正常,SQLite已經(jīng)在ARM-Linux下正常運(yùn)行,然后就可以基于此進(jìn)行數(shù)據(jù)庫(kù)數(shù)據(jù)的遠(yuǎn)程處理。

      4 結(jié)束語(yǔ)

      該遠(yuǎn)程數(shù)據(jù)庫(kù)的設(shè)計(jì),可以提高現(xiàn)階段RTU在ARM7開(kāi)發(fā)板上的歷史數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)借調(diào)的缺點(diǎn),在分析對(duì)比了各數(shù)據(jù)庫(kù)在嵌入式下的表現(xiàn),選取了比較符合需求的SQLite數(shù)據(jù)庫(kù),并且完成了在ARM-Linux下的編譯以及開(kāi)發(fā)工作。實(shí)踐證明,基于ARM9的數(shù)據(jù)庫(kù)設(shè)計(jì)可以完成對(duì)數(shù)據(jù)采集更多的需求。

      參考文獻(xiàn)

      [1]李文進(jìn),韓曉萍.ARM平臺(tái)在嵌入式遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)中的設(shè)計(jì)與實(shí)現(xiàn)[J].繼電器,2006,05:64-67.

      [2]郝曉弘,李桂肅,瞿華.基于移動(dòng)網(wǎng)絡(luò)的嵌入式遠(yuǎn)程數(shù)據(jù)終端實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,05:24-25+23.

      [3]黃萬(wàn)志,陳永煌.基于嵌入式Linux的遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)[J].現(xiàn)代電子技術(shù),2007,04:55-57.

      [4]周衛(wèi)玉,孫新亞.基于ARM和uCLinux的嵌入式遠(yuǎn)程數(shù)據(jù)采集終端[J].計(jì)算機(jī)工程,2004,23:156-158.

      作者簡(jiǎn)介:李少雄(1990,3-),男,陜西省咸陽(yáng)市,西安石油大學(xué),2012級(jí),碩士研究生,計(jì)算機(jī)院,計(jì)算機(jī)科學(xué)與技術(shù),計(jì)算機(jī)技術(shù)。

      猜你喜歡
      嵌入式
      TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
      電子制作(2019年7期)2019-04-25 13:17:14
      嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:16
      搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      Altera加入嵌入式視覺(jué)聯(lián)盟
      倍福 CX8091嵌入式控制器
      河曲县| 永兴县| 宝丰县| 正阳县| 曲沃县| 竹北市| 太仓市| 昌黎县| 崇仁县| 高雄市| 华安县| 舞钢市| 新化县| 张掖市| 洛阳市| 吉木萨尔县| 景泰县| 金川县| 重庆市| 冀州市| 河东区| 吉安县| 延吉市| 漯河市| 如皋市| 驻马店市| 保亭| 庄河市| 延津县| 江门市| 西畴县| 万荣县| 通海县| 怀仁县| 昆明市| 黑水县| 泾源县| 乌恰县| 大悟县| 青田县| 普安县|