• 
    

    
    

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

      基于SQLite的嵌入式數(shù)據(jù)記錄系統(tǒng)設(shè)計(jì)

      2014-04-19 22:07:13姚丹劉亮
      物聯(lián)網(wǎng)技術(shù) 2014年4期
      關(guān)鍵詞:嵌入式技術(shù)

      姚丹+劉亮

      摘 要:嵌入式系統(tǒng)作為近年最為熱門(mén)的技術(shù)之一,被廣泛應(yīng)用于過(guò)程控制、工業(yè)儀表等領(lǐng)域。文中介紹了在多嵌入式設(shè)備系統(tǒng)中,設(shè)備運(yùn)行數(shù)據(jù)記錄系統(tǒng)的設(shè)計(jì)方法,包括Linux系統(tǒng)在A(yíng)RM架構(gòu)下的移植、根文件系統(tǒng)的建立、SQLite數(shù)據(jù)庫(kù)的移植和設(shè)計(jì)等,并給出相關(guān)結(jié)果。

      關(guān)鍵詞:嵌入式技術(shù);ARM-Linux平臺(tái);SQLite數(shù)據(jù)庫(kù);數(shù)據(jù)記錄系統(tǒng)

      中圖法分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2014)04-0035-02

      0 引 言

      隨著嵌入式技術(shù)的迅猛發(fā)展,嵌入式設(shè)備已經(jīng)廣泛應(yīng)用于信息處理的各領(lǐng)域中。在多嵌入式設(shè)備并存的系統(tǒng)中,工程人員常需要對(duì)系統(tǒng)的運(yùn)行狀態(tài)、處理信息的正確性等運(yùn)行數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控和記錄,但現(xiàn)有的運(yùn)行數(shù)據(jù)多由各嵌入式設(shè)備進(jìn)行本地化存儲(chǔ),無(wú)法實(shí)時(shí)對(duì)整個(gè)系統(tǒng)狀態(tài)進(jìn)行記錄和分析。

      針對(duì)這個(gè)問(wèn)題,本文提出了一種基于SQLite數(shù)據(jù)庫(kù)的嵌入式數(shù)據(jù)記錄模型,在此基礎(chǔ)上通過(guò)構(gòu)建嵌入式硬件平臺(tái)與移植操作系統(tǒng),并將SQLite數(shù)據(jù)庫(kù)嵌入到軟硬件平臺(tái),使工程人員能夠從單一終端獲取系統(tǒng)各設(shè)備的運(yùn)行數(shù)據(jù)。

      1 設(shè)計(jì)原理

      1.1 嵌入式數(shù)據(jù)記錄模型

      圖1所示是一個(gè)分布式數(shù)據(jù)記錄模型,本文設(shè)計(jì)的就是這種基于以太網(wǎng)的分布式數(shù)據(jù)記錄模型。系統(tǒng)采用以太網(wǎng)將本機(jī)與其他嵌入式設(shè)備連接,建立局域網(wǎng)內(nèi)的服務(wù)器/客戶(hù)端網(wǎng)絡(luò)架構(gòu)。其他嵌入式設(shè)備將運(yùn)行數(shù)據(jù)通過(guò)以太網(wǎng)送至本系統(tǒng),由系統(tǒng)進(jìn)行數(shù)據(jù)分析和狀態(tài)解讀等操作,最后交由工程人員處理。

      圖1 分布式數(shù)據(jù)記錄模型

      1.2 數(shù)據(jù)記錄軟硬件簡(jiǎn)介

      考慮處理能力和處理器功耗因素,系統(tǒng)選用基于A(yíng)RM架構(gòu)的S3C2440處理器作為主處理單元。該處理器基于A(yíng)RM920T核心,具有5級(jí)流水線(xiàn)和哈佛結(jié)構(gòu),兼有優(yōu)異的浮點(diǎn)和定點(diǎn)數(shù)據(jù)處理能力。

      嵌入式操作系統(tǒng)是連接軟件和硬件的重要模塊,向上提供與應(yīng)用程序的接口,向下提供與硬件設(shè)備交互的接口。系統(tǒng)選用嵌入式Linux系統(tǒng)作為操作系統(tǒng),它既繼承了開(kāi)放的源代碼資源,又具有完善的軟件生態(tài)環(huán)境、資源的統(tǒng)一接口、優(yōu)異的可擴(kuò)展性等優(yōu)勢(shì)。

      作為數(shù)據(jù)記錄的核心構(gòu)件,系統(tǒng)選用SQLite數(shù)據(jù)庫(kù)進(jìn)行運(yùn)行數(shù)據(jù)記錄。該數(shù)據(jù)庫(kù)是由D.Richard Hipp開(kāi)發(fā)的應(yīng)用于嵌入式系統(tǒng)的輕量級(jí)數(shù)據(jù)庫(kù),是應(yīng)用非常廣泛的開(kāi)源項(xiàng)目。該數(shù)據(jù)庫(kù)具有以下特性:

      (1)數(shù)據(jù)庫(kù)被集成在程序中,不需專(zhuān)門(mén)配置和管理,單表運(yùn)行速度快;

      (2)代碼規(guī)模小,編譯后不大于256 KB,運(yùn)行時(shí)占用緩存??;

      (3)在系統(tǒng)崩潰或掉電后,可以自動(dòng)完成啟動(dòng)初始化和數(shù)據(jù)恢復(fù)。

      2 系統(tǒng)設(shè)計(jì)

      系統(tǒng)采用ARM-Linux平臺(tái),通過(guò)以太網(wǎng)進(jìn)行數(shù)據(jù)傳輸,以SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)記錄,具體的系統(tǒng)架構(gòu)如圖2所示。

      圖2 運(yùn)行數(shù)據(jù)記錄系統(tǒng)

      3 系統(tǒng)實(shí)現(xiàn)步驟

      3.1 Linux系統(tǒng)內(nèi)核移植

      軟件嵌入式系統(tǒng)內(nèi)核的移植,就是根據(jù)目標(biāo)板的具體配置,在獲取操作系統(tǒng)源碼的基礎(chǔ)上,對(duì)其進(jìn)行必要的修改,添加設(shè)備驅(qū)動(dòng),最終由交叉編譯環(huán)境生成Image文件的過(guò)程。本系統(tǒng)采用Linux 2.6.29內(nèi)核,已集成了硬件平臺(tái)的大部分驅(qū)動(dòng),但由于在硬件設(shè)計(jì)階段添加了LCD顯示模塊,因此需要將LCD驅(qū)動(dòng)集成到Linux內(nèi)核中,并對(duì)內(nèi)核部分具體配置做出修改。

      本系統(tǒng)選用LCD廠(chǎng)商提供的默認(rèn)驅(qū)動(dòng),根據(jù)硬件配置修改驅(qū)動(dòng)文件后編譯進(jìn)內(nèi)核中。具體步驟如下:

      (1)在內(nèi)核中添加FrameBuffer以及LCD的注冊(cè)信息;

      (2)在內(nèi)核中添加LCD平臺(tái)信息;

      (3)將LCD平臺(tái)初始操作方式添加到參數(shù)實(shí)現(xiàn)文件中。

      添加完成后,根據(jù)目標(biāo)板硬件設(shè)置配置Linux內(nèi)核,需要配置的參數(shù)有CPU平臺(tái)、LCD參數(shù)、網(wǎng)絡(luò)設(shè)置、串口設(shè)置、MTD設(shè)備支持、內(nèi)部存儲(chǔ)單元加載方式等,具體配置方式需要參照硬件設(shè)計(jì)和元器件的器件手冊(cè)。

      圖3所示是其Linux的內(nèi)核編譯圖。內(nèi)核參數(shù)配置完成后,需要在交叉編譯環(huán)境下將該內(nèi)核文件進(jìn)行生成操作,生成可在目標(biāo)板上執(zhí)行的Image文件。

      圖3 Linux內(nèi)核編譯

      3.2 Linux根文件系統(tǒng)的構(gòu)建

      文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)。內(nèi)核Image文件啟動(dòng)后運(yùn)行的首個(gè)程序、提供參數(shù)配置等系統(tǒng)啟動(dòng)所必須的文件合稱(chēng)為根文件系統(tǒng)。

      系統(tǒng)選用Nand Flash作為存儲(chǔ)介質(zhì),因此使用yaffs2文件系統(tǒng)作為根文件系統(tǒng),該文件系統(tǒng)是專(zhuān)為Nand Flash設(shè)計(jì)的基于日志結(jié)構(gòu)的嵌入式文件系統(tǒng),提供了損耗平衡和掉電保護(hù),系統(tǒng)結(jié)構(gòu)按層次結(jié)構(gòu)設(shè)計(jì),簡(jiǎn)化了接口,而且轉(zhuǎn)載時(shí)間明顯快于其他文件系統(tǒng)。

      系統(tǒng)在構(gòu)建yaffs2文件系統(tǒng)時(shí),首先需要載入yaffs2代碼,并使用Busybox工具包進(jìn)行構(gòu)建。具體步驟如下:

      (1)建立基本目錄樹(shù),修改Makefile文件,添加文件類(lèi)型支持,并修改配置Busybox;

      (2)修改Fstab、Inittab和MakeFile文件,并建立設(shè)備節(jié)點(diǎn);

      (3)使用mkyaffs2image工具編譯,生成的Image文件鏡像文件如圖4所示。

      圖4 mkyaffs2image工具生成Image文件

      3.3 SQLite數(shù)據(jù)庫(kù)的構(gòu)建

      系統(tǒng)使用SQLite數(shù)據(jù)庫(kù)的版本號(hào)為SQLite 3.3.8,針對(duì)特定的嵌入式硬件和操作系統(tǒng),需要對(duì)數(shù)據(jù)庫(kù)中部分參數(shù)進(jìn)行修改,使其可以應(yīng)用于本軟硬件平臺(tái)上。具體步驟如下:

      (1)新建一個(gè)和SQLite目錄平行的同級(jí)目錄,并安裝與ARM架構(gòu)處理器適配的交叉編譯工具arm-linux-gcc;

      (2)打開(kāi)sqlite/src/sqliteInt.h,找到如圖5所示的部分代碼,并在這段代碼前加上#define SQLITE_PTR_SZ 4語(yǔ)句;

      圖5 sqlite/src/sqliteInt.h中的部分代碼圖

      (3)注釋掉SQLite目錄下的配置文件中的交叉編譯環(huán)境校驗(yàn)語(yǔ)句。然后執(zhí)行配置命令,在build目錄下生成Makefile和libtool腳本文件;

      (4)修改Makefile文件,將SQLite編譯成靜態(tài)鏈接的形式,然后執(zhí)行make命令,生成sqlite、libsqlite.a、libsqlite.so等文件;

      (5)使用Ftp方式將SQLite拷貝到硬件平臺(tái)上,這樣SQLite數(shù)據(jù)庫(kù)已經(jīng)可以在A(yíng)RM-Linux平臺(tái)下運(yùn)行;

      (6)使用標(biāo)準(zhǔn)SQL語(yǔ)句編寫(xiě)程序,實(shí)現(xiàn)運(yùn)行數(shù)據(jù)的存儲(chǔ)和篩選功能。

      4 結(jié) 語(yǔ)

      本文將ARM-Linux平臺(tái)和SQLite數(shù)據(jù)庫(kù)結(jié)合,設(shè)計(jì)了一種用于多嵌入式設(shè)備系統(tǒng)中的運(yùn)行數(shù)據(jù)記錄系統(tǒng)。該系統(tǒng)通過(guò)以太網(wǎng)與其他設(shè)備連接,可有效地架構(gòu)于計(jì)算機(jī)網(wǎng)絡(luò)上。該方案擴(kuò)展了嵌入式設(shè)備狀態(tài)監(jiān)控的應(yīng)用范圍,具有良好的工程應(yīng)用性。

      參 考 文 獻(xiàn)

      [1]胡偉.SQLite在嵌入式系統(tǒng)上的實(shí)現(xiàn)研究[J].計(jì)算機(jī)與數(shù)字工程,2009(2):163-168.

      [2]蔣晶,于平,韓菲.SQLite在嵌入式系統(tǒng)Wince中的應(yīng)用[J].微型機(jī)與應(yīng)用,2011(14):86-87.

      [3]張廣斌,宮金林,陳爽.SQLite嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(6):12-14.

      [4]路旋.嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)SQLite的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2009.

      [5]黃東.基于SQLite的移動(dòng)嵌入式數(shù)據(jù)庫(kù)同步系統(tǒng)的研究和開(kāi)發(fā)[D].武漢:華中師范大學(xué),2009.

      摘 要:嵌入式系統(tǒng)作為近年最為熱門(mén)的技術(shù)之一,被廣泛應(yīng)用于過(guò)程控制、工業(yè)儀表等領(lǐng)域。文中介紹了在多嵌入式設(shè)備系統(tǒng)中,設(shè)備運(yùn)行數(shù)據(jù)記錄系統(tǒng)的設(shè)計(jì)方法,包括Linux系統(tǒng)在A(yíng)RM架構(gòu)下的移植、根文件系統(tǒng)的建立、SQLite數(shù)據(jù)庫(kù)的移植和設(shè)計(jì)等,并給出相關(guān)結(jié)果。

      關(guān)鍵詞:嵌入式技術(shù);ARM-Linux平臺(tái);SQLite數(shù)據(jù)庫(kù);數(shù)據(jù)記錄系統(tǒng)

      中圖法分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2014)04-0035-02

      0 引 言

      隨著嵌入式技術(shù)的迅猛發(fā)展,嵌入式設(shè)備已經(jīng)廣泛應(yīng)用于信息處理的各領(lǐng)域中。在多嵌入式設(shè)備并存的系統(tǒng)中,工程人員常需要對(duì)系統(tǒng)的運(yùn)行狀態(tài)、處理信息的正確性等運(yùn)行數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控和記錄,但現(xiàn)有的運(yùn)行數(shù)據(jù)多由各嵌入式設(shè)備進(jìn)行本地化存儲(chǔ),無(wú)法實(shí)時(shí)對(duì)整個(gè)系統(tǒng)狀態(tài)進(jìn)行記錄和分析。

      針對(duì)這個(gè)問(wèn)題,本文提出了一種基于SQLite數(shù)據(jù)庫(kù)的嵌入式數(shù)據(jù)記錄模型,在此基礎(chǔ)上通過(guò)構(gòu)建嵌入式硬件平臺(tái)與移植操作系統(tǒng),并將SQLite數(shù)據(jù)庫(kù)嵌入到軟硬件平臺(tái),使工程人員能夠從單一終端獲取系統(tǒng)各設(shè)備的運(yùn)行數(shù)據(jù)。

      1 設(shè)計(jì)原理

      1.1 嵌入式數(shù)據(jù)記錄模型

      圖1所示是一個(gè)分布式數(shù)據(jù)記錄模型,本文設(shè)計(jì)的就是這種基于以太網(wǎng)的分布式數(shù)據(jù)記錄模型。系統(tǒng)采用以太網(wǎng)將本機(jī)與其他嵌入式設(shè)備連接,建立局域網(wǎng)內(nèi)的服務(wù)器/客戶(hù)端網(wǎng)絡(luò)架構(gòu)。其他嵌入式設(shè)備將運(yùn)行數(shù)據(jù)通過(guò)以太網(wǎng)送至本系統(tǒng),由系統(tǒng)進(jìn)行數(shù)據(jù)分析和狀態(tài)解讀等操作,最后交由工程人員處理。

      圖1 分布式數(shù)據(jù)記錄模型

      1.2 數(shù)據(jù)記錄軟硬件簡(jiǎn)介

      考慮處理能力和處理器功耗因素,系統(tǒng)選用基于A(yíng)RM架構(gòu)的S3C2440處理器作為主處理單元。該處理器基于A(yíng)RM920T核心,具有5級(jí)流水線(xiàn)和哈佛結(jié)構(gòu),兼有優(yōu)異的浮點(diǎn)和定點(diǎn)數(shù)據(jù)處理能力。

      嵌入式操作系統(tǒng)是連接軟件和硬件的重要模塊,向上提供與應(yīng)用程序的接口,向下提供與硬件設(shè)備交互的接口。系統(tǒng)選用嵌入式Linux系統(tǒng)作為操作系統(tǒng),它既繼承了開(kāi)放的源代碼資源,又具有完善的軟件生態(tài)環(huán)境、資源的統(tǒng)一接口、優(yōu)異的可擴(kuò)展性等優(yōu)勢(shì)。

      作為數(shù)據(jù)記錄的核心構(gòu)件,系統(tǒng)選用SQLite數(shù)據(jù)庫(kù)進(jìn)行運(yùn)行數(shù)據(jù)記錄。該數(shù)據(jù)庫(kù)是由D.Richard Hipp開(kāi)發(fā)的應(yīng)用于嵌入式系統(tǒng)的輕量級(jí)數(shù)據(jù)庫(kù),是應(yīng)用非常廣泛的開(kāi)源項(xiàng)目。該數(shù)據(jù)庫(kù)具有以下特性:

      (1)數(shù)據(jù)庫(kù)被集成在程序中,不需專(zhuān)門(mén)配置和管理,單表運(yùn)行速度快;

      (2)代碼規(guī)模小,編譯后不大于256 KB,運(yùn)行時(shí)占用緩存小;

      (3)在系統(tǒng)崩潰或掉電后,可以自動(dòng)完成啟動(dòng)初始化和數(shù)據(jù)恢復(fù)。

      2 系統(tǒng)設(shè)計(jì)

      系統(tǒng)采用ARM-Linux平臺(tái),通過(guò)以太網(wǎng)進(jìn)行數(shù)據(jù)傳輸,以SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)記錄,具體的系統(tǒng)架構(gòu)如圖2所示。

      圖2 運(yùn)行數(shù)據(jù)記錄系統(tǒng)

      3 系統(tǒng)實(shí)現(xiàn)步驟

      3.1 Linux系統(tǒng)內(nèi)核移植

      軟件嵌入式系統(tǒng)內(nèi)核的移植,就是根據(jù)目標(biāo)板的具體配置,在獲取操作系統(tǒng)源碼的基礎(chǔ)上,對(duì)其進(jìn)行必要的修改,添加設(shè)備驅(qū)動(dòng),最終由交叉編譯環(huán)境生成Image文件的過(guò)程。本系統(tǒng)采用Linux 2.6.29內(nèi)核,已集成了硬件平臺(tái)的大部分驅(qū)動(dòng),但由于在硬件設(shè)計(jì)階段添加了LCD顯示模塊,因此需要將LCD驅(qū)動(dòng)集成到Linux內(nèi)核中,并對(duì)內(nèi)核部分具體配置做出修改。

      本系統(tǒng)選用LCD廠(chǎng)商提供的默認(rèn)驅(qū)動(dòng),根據(jù)硬件配置修改驅(qū)動(dòng)文件后編譯進(jìn)內(nèi)核中。具體步驟如下:

      (1)在內(nèi)核中添加FrameBuffer以及LCD的注冊(cè)信息;

      (2)在內(nèi)核中添加LCD平臺(tái)信息;

      (3)將LCD平臺(tái)初始操作方式添加到參數(shù)實(shí)現(xiàn)文件中。

      添加完成后,根據(jù)目標(biāo)板硬件設(shè)置配置Linux內(nèi)核,需要配置的參數(shù)有CPU平臺(tái)、LCD參數(shù)、網(wǎng)絡(luò)設(shè)置、串口設(shè)置、MTD設(shè)備支持、內(nèi)部存儲(chǔ)單元加載方式等,具體配置方式需要參照硬件設(shè)計(jì)和元器件的器件手冊(cè)。

      圖3所示是其Linux的內(nèi)核編譯圖。內(nèi)核參數(shù)配置完成后,需要在交叉編譯環(huán)境下將該內(nèi)核文件進(jìn)行生成操作,生成可在目標(biāo)板上執(zhí)行的Image文件。

      圖3 Linux內(nèi)核編譯

      3.2 Linux根文件系統(tǒng)的構(gòu)建

      文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)。內(nèi)核Image文件啟動(dòng)后運(yùn)行的首個(gè)程序、提供參數(shù)配置等系統(tǒng)啟動(dòng)所必須的文件合稱(chēng)為根文件系統(tǒng)。

      系統(tǒng)選用Nand Flash作為存儲(chǔ)介質(zhì),因此使用yaffs2文件系統(tǒng)作為根文件系統(tǒng),該文件系統(tǒng)是專(zhuān)為Nand Flash設(shè)計(jì)的基于日志結(jié)構(gòu)的嵌入式文件系統(tǒng),提供了損耗平衡和掉電保護(hù),系統(tǒng)結(jié)構(gòu)按層次結(jié)構(gòu)設(shè)計(jì),簡(jiǎn)化了接口,而且轉(zhuǎn)載時(shí)間明顯快于其他文件系統(tǒng)。

      系統(tǒng)在構(gòu)建yaffs2文件系統(tǒng)時(shí),首先需要載入yaffs2代碼,并使用Busybox工具包進(jìn)行構(gòu)建。具體步驟如下:

      (1)建立基本目錄樹(shù),修改Makefile文件,添加文件類(lèi)型支持,并修改配置Busybox;

      (2)修改Fstab、Inittab和MakeFile文件,并建立設(shè)備節(jié)點(diǎn);

      (3)使用mkyaffs2image工具編譯,生成的Image文件鏡像文件如圖4所示。

      圖4 mkyaffs2image工具生成Image文件

      3.3 SQLite數(shù)據(jù)庫(kù)的構(gòu)建

      系統(tǒng)使用SQLite數(shù)據(jù)庫(kù)的版本號(hào)為SQLite 3.3.8,針對(duì)特定的嵌入式硬件和操作系統(tǒng),需要對(duì)數(shù)據(jù)庫(kù)中部分參數(shù)進(jìn)行修改,使其可以應(yīng)用于本軟硬件平臺(tái)上。具體步驟如下:

      (1)新建一個(gè)和SQLite目錄平行的同級(jí)目錄,并安裝與ARM架構(gòu)處理器適配的交叉編譯工具arm-linux-gcc;

      (2)打開(kāi)sqlite/src/sqliteInt.h,找到如圖5所示的部分代碼,并在這段代碼前加上#define SQLITE_PTR_SZ 4語(yǔ)句;

      圖5 sqlite/src/sqliteInt.h中的部分代碼圖

      (3)注釋掉SQLite目錄下的配置文件中的交叉編譯環(huán)境校驗(yàn)語(yǔ)句。然后執(zhí)行配置命令,在build目錄下生成Makefile和libtool腳本文件;

      (4)修改Makefile文件,將SQLite編譯成靜態(tài)鏈接的形式,然后執(zhí)行make命令,生成sqlite、libsqlite.a、libsqlite.so等文件;

      (5)使用Ftp方式將SQLite拷貝到硬件平臺(tái)上,這樣SQLite數(shù)據(jù)庫(kù)已經(jīng)可以在A(yíng)RM-Linux平臺(tái)下運(yùn)行;

      (6)使用標(biāo)準(zhǔn)SQL語(yǔ)句編寫(xiě)程序,實(shí)現(xiàn)運(yùn)行數(shù)據(jù)的存儲(chǔ)和篩選功能。

      4 結(jié) 語(yǔ)

      本文將ARM-Linux平臺(tái)和SQLite數(shù)據(jù)庫(kù)結(jié)合,設(shè)計(jì)了一種用于多嵌入式設(shè)備系統(tǒng)中的運(yùn)行數(shù)據(jù)記錄系統(tǒng)。該系統(tǒng)通過(guò)以太網(wǎng)與其他設(shè)備連接,可有效地架構(gòu)于計(jì)算機(jī)網(wǎng)絡(luò)上。該方案擴(kuò)展了嵌入式設(shè)備狀態(tài)監(jiān)控的應(yīng)用范圍,具有良好的工程應(yīng)用性。

      參 考 文 獻(xiàn)

      [1]胡偉.SQLite在嵌入式系統(tǒng)上的實(shí)現(xiàn)研究[J].計(jì)算機(jī)與數(shù)字工程,2009(2):163-168.

      [2]蔣晶,于平,韓菲.SQLite在嵌入式系統(tǒng)Wince中的應(yīng)用[J].微型機(jī)與應(yīng)用,2011(14):86-87.

      [3]張廣斌,宮金林,陳爽.SQLite嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(6):12-14.

      [4]路旋.嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)SQLite的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2009.

      [5]黃東.基于SQLite的移動(dòng)嵌入式數(shù)據(jù)庫(kù)同步系統(tǒng)的研究和開(kāi)發(fā)[D].武漢:華中師范大學(xué),2009.

      摘 要:嵌入式系統(tǒng)作為近年最為熱門(mén)的技術(shù)之一,被廣泛應(yīng)用于過(guò)程控制、工業(yè)儀表等領(lǐng)域。文中介紹了在多嵌入式設(shè)備系統(tǒng)中,設(shè)備運(yùn)行數(shù)據(jù)記錄系統(tǒng)的設(shè)計(jì)方法,包括Linux系統(tǒng)在A(yíng)RM架構(gòu)下的移植、根文件系統(tǒng)的建立、SQLite數(shù)據(jù)庫(kù)的移植和設(shè)計(jì)等,并給出相關(guān)結(jié)果。

      關(guān)鍵詞:嵌入式技術(shù);ARM-Linux平臺(tái);SQLite數(shù)據(jù)庫(kù);數(shù)據(jù)記錄系統(tǒng)

      中圖法分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2014)04-0035-02

      0 引 言

      隨著嵌入式技術(shù)的迅猛發(fā)展,嵌入式設(shè)備已經(jīng)廣泛應(yīng)用于信息處理的各領(lǐng)域中。在多嵌入式設(shè)備并存的系統(tǒng)中,工程人員常需要對(duì)系統(tǒng)的運(yùn)行狀態(tài)、處理信息的正確性等運(yùn)行數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控和記錄,但現(xiàn)有的運(yùn)行數(shù)據(jù)多由各嵌入式設(shè)備進(jìn)行本地化存儲(chǔ),無(wú)法實(shí)時(shí)對(duì)整個(gè)系統(tǒng)狀態(tài)進(jìn)行記錄和分析。

      針對(duì)這個(gè)問(wèn)題,本文提出了一種基于SQLite數(shù)據(jù)庫(kù)的嵌入式數(shù)據(jù)記錄模型,在此基礎(chǔ)上通過(guò)構(gòu)建嵌入式硬件平臺(tái)與移植操作系統(tǒng),并將SQLite數(shù)據(jù)庫(kù)嵌入到軟硬件平臺(tái),使工程人員能夠從單一終端獲取系統(tǒng)各設(shè)備的運(yùn)行數(shù)據(jù)。

      1 設(shè)計(jì)原理

      1.1 嵌入式數(shù)據(jù)記錄模型

      圖1所示是一個(gè)分布式數(shù)據(jù)記錄模型,本文設(shè)計(jì)的就是這種基于以太網(wǎng)的分布式數(shù)據(jù)記錄模型。系統(tǒng)采用以太網(wǎng)將本機(jī)與其他嵌入式設(shè)備連接,建立局域網(wǎng)內(nèi)的服務(wù)器/客戶(hù)端網(wǎng)絡(luò)架構(gòu)。其他嵌入式設(shè)備將運(yùn)行數(shù)據(jù)通過(guò)以太網(wǎng)送至本系統(tǒng),由系統(tǒng)進(jìn)行數(shù)據(jù)分析和狀態(tài)解讀等操作,最后交由工程人員處理。

      圖1 分布式數(shù)據(jù)記錄模型

      1.2 數(shù)據(jù)記錄軟硬件簡(jiǎn)介

      考慮處理能力和處理器功耗因素,系統(tǒng)選用基于A(yíng)RM架構(gòu)的S3C2440處理器作為主處理單元。該處理器基于A(yíng)RM920T核心,具有5級(jí)流水線(xiàn)和哈佛結(jié)構(gòu),兼有優(yōu)異的浮點(diǎn)和定點(diǎn)數(shù)據(jù)處理能力。

      嵌入式操作系統(tǒng)是連接軟件和硬件的重要模塊,向上提供與應(yīng)用程序的接口,向下提供與硬件設(shè)備交互的接口。系統(tǒng)選用嵌入式Linux系統(tǒng)作為操作系統(tǒng),它既繼承了開(kāi)放的源代碼資源,又具有完善的軟件生態(tài)環(huán)境、資源的統(tǒng)一接口、優(yōu)異的可擴(kuò)展性等優(yōu)勢(shì)。

      作為數(shù)據(jù)記錄的核心構(gòu)件,系統(tǒng)選用SQLite數(shù)據(jù)庫(kù)進(jìn)行運(yùn)行數(shù)據(jù)記錄。該數(shù)據(jù)庫(kù)是由D.Richard Hipp開(kāi)發(fā)的應(yīng)用于嵌入式系統(tǒng)的輕量級(jí)數(shù)據(jù)庫(kù),是應(yīng)用非常廣泛的開(kāi)源項(xiàng)目。該數(shù)據(jù)庫(kù)具有以下特性:

      (1)數(shù)據(jù)庫(kù)被集成在程序中,不需專(zhuān)門(mén)配置和管理,單表運(yùn)行速度快;

      (2)代碼規(guī)模小,編譯后不大于256 KB,運(yùn)行時(shí)占用緩存??;

      (3)在系統(tǒng)崩潰或掉電后,可以自動(dòng)完成啟動(dòng)初始化和數(shù)據(jù)恢復(fù)。

      2 系統(tǒng)設(shè)計(jì)

      系統(tǒng)采用ARM-Linux平臺(tái),通過(guò)以太網(wǎng)進(jìn)行數(shù)據(jù)傳輸,以SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)記錄,具體的系統(tǒng)架構(gòu)如圖2所示。

      圖2 運(yùn)行數(shù)據(jù)記錄系統(tǒng)

      3 系統(tǒng)實(shí)現(xiàn)步驟

      3.1 Linux系統(tǒng)內(nèi)核移植

      軟件嵌入式系統(tǒng)內(nèi)核的移植,就是根據(jù)目標(biāo)板的具體配置,在獲取操作系統(tǒng)源碼的基礎(chǔ)上,對(duì)其進(jìn)行必要的修改,添加設(shè)備驅(qū)動(dòng),最終由交叉編譯環(huán)境生成Image文件的過(guò)程。本系統(tǒng)采用Linux 2.6.29內(nèi)核,已集成了硬件平臺(tái)的大部分驅(qū)動(dòng),但由于在硬件設(shè)計(jì)階段添加了LCD顯示模塊,因此需要將LCD驅(qū)動(dòng)集成到Linux內(nèi)核中,并對(duì)內(nèi)核部分具體配置做出修改。

      本系統(tǒng)選用LCD廠(chǎng)商提供的默認(rèn)驅(qū)動(dòng),根據(jù)硬件配置修改驅(qū)動(dòng)文件后編譯進(jìn)內(nèi)核中。具體步驟如下:

      (1)在內(nèi)核中添加FrameBuffer以及LCD的注冊(cè)信息;

      (2)在內(nèi)核中添加LCD平臺(tái)信息;

      (3)將LCD平臺(tái)初始操作方式添加到參數(shù)實(shí)現(xiàn)文件中。

      添加完成后,根據(jù)目標(biāo)板硬件設(shè)置配置Linux內(nèi)核,需要配置的參數(shù)有CPU平臺(tái)、LCD參數(shù)、網(wǎng)絡(luò)設(shè)置、串口設(shè)置、MTD設(shè)備支持、內(nèi)部存儲(chǔ)單元加載方式等,具體配置方式需要參照硬件設(shè)計(jì)和元器件的器件手冊(cè)。

      圖3所示是其Linux的內(nèi)核編譯圖。內(nèi)核參數(shù)配置完成后,需要在交叉編譯環(huán)境下將該內(nèi)核文件進(jìn)行生成操作,生成可在目標(biāo)板上執(zhí)行的Image文件。

      圖3 Linux內(nèi)核編譯

      3.2 Linux根文件系統(tǒng)的構(gòu)建

      文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)。內(nèi)核Image文件啟動(dòng)后運(yùn)行的首個(gè)程序、提供參數(shù)配置等系統(tǒng)啟動(dòng)所必須的文件合稱(chēng)為根文件系統(tǒng)。

      系統(tǒng)選用Nand Flash作為存儲(chǔ)介質(zhì),因此使用yaffs2文件系統(tǒng)作為根文件系統(tǒng),該文件系統(tǒng)是專(zhuān)為Nand Flash設(shè)計(jì)的基于日志結(jié)構(gòu)的嵌入式文件系統(tǒng),提供了損耗平衡和掉電保護(hù),系統(tǒng)結(jié)構(gòu)按層次結(jié)構(gòu)設(shè)計(jì),簡(jiǎn)化了接口,而且轉(zhuǎn)載時(shí)間明顯快于其他文件系統(tǒng)。

      系統(tǒng)在構(gòu)建yaffs2文件系統(tǒng)時(shí),首先需要載入yaffs2代碼,并使用Busybox工具包進(jìn)行構(gòu)建。具體步驟如下:

      (1)建立基本目錄樹(shù),修改Makefile文件,添加文件類(lèi)型支持,并修改配置Busybox;

      (2)修改Fstab、Inittab和MakeFile文件,并建立設(shè)備節(jié)點(diǎn);

      (3)使用mkyaffs2image工具編譯,生成的Image文件鏡像文件如圖4所示。

      圖4 mkyaffs2image工具生成Image文件

      3.3 SQLite數(shù)據(jù)庫(kù)的構(gòu)建

      系統(tǒng)使用SQLite數(shù)據(jù)庫(kù)的版本號(hào)為SQLite 3.3.8,針對(duì)特定的嵌入式硬件和操作系統(tǒng),需要對(duì)數(shù)據(jù)庫(kù)中部分參數(shù)進(jìn)行修改,使其可以應(yīng)用于本軟硬件平臺(tái)上。具體步驟如下:

      (1)新建一個(gè)和SQLite目錄平行的同級(jí)目錄,并安裝與ARM架構(gòu)處理器適配的交叉編譯工具arm-linux-gcc;

      (2)打開(kāi)sqlite/src/sqliteInt.h,找到如圖5所示的部分代碼,并在這段代碼前加上#define SQLITE_PTR_SZ 4語(yǔ)句;

      圖5 sqlite/src/sqliteInt.h中的部分代碼圖

      (3)注釋掉SQLite目錄下的配置文件中的交叉編譯環(huán)境校驗(yàn)語(yǔ)句。然后執(zhí)行配置命令,在build目錄下生成Makefile和libtool腳本文件;

      (4)修改Makefile文件,將SQLite編譯成靜態(tài)鏈接的形式,然后執(zhí)行make命令,生成sqlite、libsqlite.a、libsqlite.so等文件;

      (5)使用Ftp方式將SQLite拷貝到硬件平臺(tái)上,這樣SQLite數(shù)據(jù)庫(kù)已經(jīng)可以在A(yíng)RM-Linux平臺(tái)下運(yùn)行;

      (6)使用標(biāo)準(zhǔn)SQL語(yǔ)句編寫(xiě)程序,實(shí)現(xiàn)運(yùn)行數(shù)據(jù)的存儲(chǔ)和篩選功能。

      4 結(jié) 語(yǔ)

      本文將ARM-Linux平臺(tái)和SQLite數(shù)據(jù)庫(kù)結(jié)合,設(shè)計(jì)了一種用于多嵌入式設(shè)備系統(tǒng)中的運(yùn)行數(shù)據(jù)記錄系統(tǒng)。該系統(tǒng)通過(guò)以太網(wǎng)與其他設(shè)備連接,可有效地架構(gòu)于計(jì)算機(jī)網(wǎng)絡(luò)上。該方案擴(kuò)展了嵌入式設(shè)備狀態(tài)監(jiān)控的應(yīng)用范圍,具有良好的工程應(yīng)用性。

      參 考 文 獻(xiàn)

      [1]胡偉.SQLite在嵌入式系統(tǒng)上的實(shí)現(xiàn)研究[J].計(jì)算機(jī)與數(shù)字工程,2009(2):163-168.

      [2]蔣晶,于平,韓菲.SQLite在嵌入式系統(tǒng)Wince中的應(yīng)用[J].微型機(jī)與應(yīng)用,2011(14):86-87.

      [3]張廣斌,宮金林,陳爽.SQLite嵌入式數(shù)據(jù)庫(kù)系統(tǒng)的研究與實(shí)現(xiàn)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(6):12-14.

      [4]路旋.嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)SQLite的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2009.

      [5]黃東.基于SQLite的移動(dòng)嵌入式數(shù)據(jù)庫(kù)同步系統(tǒng)的研究和開(kāi)發(fā)[D].武漢:華中師范大學(xué),2009.

      猜你喜歡
      嵌入式技術(shù)
      基于S3C2440處理器系統(tǒng)的數(shù)字圖像處理技術(shù)和嵌入式技術(shù)結(jié)合機(jī)制
      遠(yuǎn)程監(jiān)控工作中嵌入式技術(shù)應(yīng)用
      基于視覺(jué)反饋的智能環(huán)境偵察車(chē)的研究
      嵌入式技術(shù)與工程裝備智能信息化研究
      基于嵌入式Web技術(shù)的監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
      基于嵌入式技術(shù)的農(nóng)村醫(yī)療系統(tǒng)設(shè)計(jì)
      凤山市| 林甸县| 德阳市| 林西县| 绥中县| 庄河市| 铜山县| 衢州市| 淮北市| 沙坪坝区| 武宁县| 吉水县| 云阳县| 定结县| 尼玛县| 金溪县| 黎平县| 沾化县| 宣武区| 称多县| 泸溪县| 德昌县| 道孚县| 拉萨市| 樟树市| 滦平县| 隆林| 婺源县| 定西市| 郑州市| 南康市| 炎陵县| 灌云县| 安塞县| 达日县| 天柱县| 平武县| 邳州市| 河西区| 平安县| 黑水县|