基於TinyXml的嵌入式Linux

2021-04-28 17:53:58 字數 2915 閱讀 4007

引 言

用自動化抄表代替人工抄表是實現智慧型樓宇的重要手段。傳統的ic卡預付費方式雖然實施方便,但會有卡槽汙染、卡易磨損以及安全性差等缺點,同時也無法實時地監控使用者的用電情況;廉價方便的雙向電力線載波抄表方式由於受電網汙染的影響,難以大面積推廣;專用有線網路實現遠端抄表方式,則會帶來投資規模大、施工時間長、維護困難等問題。

廣告插播資訊

維庫最新熱賣晶元: ad828an

74hc4046ad

mac97a8

an983b

pic12f508-i/sn

sn74hct04pwr

hc125

irfu9120

max194bcpe

max4126esa

針對上述問題,本文提出了一種基於嵌入式linux系統的居民用電管理解決方案,系統結構如圖1所示。整個居民用電管理系統從結構上看分為4層:第1層為主站,負責遠端抄表和控制,為供電部門和小區物業提供資料訪問服務;第2層為管理終端,完成資料的遠端接收和**,並對其下的管理終端進行管理;第3層為抄表終端,用於採集現場的電表資料,通過zigbee協議傳送到管理終端;第4層為電表。管理終端作業系統選用嵌入式linux,同時搭配微控制器實現與採集終端之間的無線通訊。

主站和管理終端之間的報文傳輸遵循《電力負荷管理系統資料傳輸規約》。根據該規約,主站會向管理終端下達一些引數設定的命令,管理終端在接到命令後應記錄下該引數,並根據最新的引數來執行任務;在終端掉電重啟後,引數設定依然有效。傳統的引數配置基本採用兩類方法:配置檔案法(如.ini檔案)和資料庫法。由於本系統需要管理的引數條目不多,使用資料庫占用的空間太大;.ini檔案雖輕巧但上下文相關,不易維護和管理。xml檔案則能克服以上缺點。 xml(extensible markup language)是由全球資訊網協會(w3c)設計,特別為web應用服務的sgml的乙個重要分支。它具有簡單、開放、高效且可擴充、國際化的特性。 xml語言具有很多優秀的特性:①具有嚴格、良好的層次結構,實現了資料內容和表現形式的分離,使得配置檔案結構清晰,可讀性強;②具有跨平台、自解釋等諸多優點;③現在各種經過測試的、效能優越的xml直譯器非常多,避免了自己開發xml直譯器,從而可以大大提高軟體的生產率和健壯性。在眾多的xml直譯器中,通過比較選擇了ti-nyxml。

1 tinyxml的特點

tinyxml是乙個簡單、小巧的c++xml直譯器。tinyxml具有以下特點:

① tinyxml最大的特點就是體積小,速度快,而且只有2個頭檔案和3個原始檔,總共144 kb,十分適合嵌入式系統應用。

② 功能完善,簡單易用,為使用者提供了豐富的api。tinyxml是一種基於dom模型的直譯器。基於dom模型是指在分析時,一次性對整個xml文件進行分析,並在記憶體中形成對應的樹結構;同時,向使用者提供一系列的介面來訪問和編輯該樹結構。這種方式占用記憶體大,速度往往較慢,但可以給使用者提供乙個物件導向的訪問介面,對使用者更為友好。在本專案中需要存放的引數不是很多,因而不會占用系統很多的記憶體。

③ 原始碼開放,無須付費。開放的原始碼不僅可以降低產品的生產成本,更為重要的是為產品的維護完善和穩定執行提供了最為徹底的保障。

④ 易於移植。tinyxml與作業系統無關,可以方便地移植到各種系統平台。源**中已經提供了乙份make-file檔案,稍加改造就可以移植到我們的嵌入式linux下。

2 tinyxml在嵌入式linux下的移植

(1) 建立arm-linux交叉編譯環境

將tinyxml移植到嵌入式linux下首先必須搭建交叉編譯環境。本文採用嵌入式linux,版本為2.4.18;安裝的交叉編譯器arm-linux版本為2.95.3。

(3) 生成動態鏈結庫libtinyxml.so

首先修改 makefile檔案:

① 將cxx:=g++改為cxx:=arm-linux-g++,即將編譯器由g++改為交叉編譯器。

② 將output:=xmltest改為output:=libtinyxml.so,即將原來生成演示程式改為生成動態鏈結庫libtinyxml.so。

③ 將xmltest.cpp從srcs:=tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp中刪除,注釋掉xmltest.o:tinyxml.h tinystr.h。因為不需要將演示程式新增到動態庫中。 ④ 在$-o$@$$$語句的${ld)後新增-shared,用於生成動態庫。

修改完成後,執行make命令就可以在當前目錄生成需要的動態鏈結庫檔案libtinyxml.so,也可以根據需要把tinyxml編譯成靜態庫檔案。

3 tinyxml的應用程式設計

為了清晰地描述引數,定義了兩個xml檔案:乙個用來定義配置檔案的資料結構和型別;另乙個用來存放具體的配置資料。處理方法舉例如下:

對《電力負荷管理系統資料傳輸規約》的引數設定命令f7,即終端抄表日設定。具體描述如表1所列。

終端抄表日期:d0~d30對應每月1日~31日,置1為有效,置0為無效。

資料格式19如表2所列。

對於上述表中的資料,其配置資料的結構和型別的xml檔案構建如下(檔名:param.xsd):

對於具體的配置資料xml檔案構建如下(檔名param.xml):

4 結 論

本文提出了一種基於嵌入式linux系統的居民用電管理解決方案,並利用tinyxml實現具體功能,其引數配置方法可以用於其他嵌入式系統。

Tinyxml的嵌入式Linux實現

這兩天專案需要在嵌入式linux系統上實現tinyxml解析簡單的xml檔案,於是在網上查詢並收集了一點資料,現在補充完善!版本 tinyxml 2 6 2.zip 首先修改 makefile檔案 1 將 cxx g 改為 cxx arm linux g cc arm linux gcc ld ar...

基於ARM CLinux嵌入式系統

32位arm嵌入式處理器具有高效能 低軾耗的特性,已被廣泛應用於消費電子產品 無線通訊和網路通訊等領域。clinux是專門為無mmu處理器設計的嵌入式作業系統,支援arm motorola等微處理器。目前國內外採用arm clinux作為嵌入式系統非常普遍。而嵌入式系統的啟動引導技術是嵌入式系統開發...

基於ARM的Qt Creator嵌入式開發環境搭建

平台 ubnutu10.04 交叉編譯器 arm linux gcc 3.4.1 在qtqt everywhere opensource src 4.8.1.tar 解壓為3 份,可分別命名為 qt x11 qt x86 qt armqt x11版本可以產生 qt開發工具 designer qt介面...