• 
    

    
    

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

      基于構(gòu)件的自動(dòng)氣象站嵌入式程序遠(yuǎn)程更新※*

      2015-09-12 06:42:58茅正沖葉臻黃芳
      關(guān)鍵詞:氣象站采集器字節(jié)

      茅正沖,葉臻,黃芳

      (江南大學(xué) 物聯(lián)網(wǎng)學(xué)院,無錫214122)

      茅正沖(副教授)、葉臻(碩士研究生),主要從事嵌入式軟件構(gòu)件技術(shù)方向的研究;黃芳(講師),主要從事工業(yè)控制方向的研究。

      引 言

      為了確保氣象數(shù)據(jù)的準(zhǔn)確可靠,需要每隔一定距離架設(shè)一個(gè)自動(dòng)氣象站,與中心站形成一個(gè)自動(dòng)氣象站網(wǎng)。因此,自動(dòng)氣象站數(shù)量多、分布廣,而且很多是架設(shè)在無人值守地區(qū)。由于業(yè)務(wù)上的需求,采集器時(shí)常需要進(jìn)行應(yīng)用程序更新。目前的程序更新方式比較傳統(tǒng):首先由開發(fā)人員修改源代碼,編譯生成單塊式的應(yīng)用程序,然后由維護(hù)人員帶至現(xiàn)場進(jìn)行更新。這樣的更新方式需要耗費(fèi)大量的人力物力,而且在一些環(huán)境、氣候惡劣的情況下還難以進(jìn)行。

      本文提出的基于構(gòu)件的遠(yuǎn)程更新方案如圖1所示。

      1 硬件結(jié)構(gòu)

      遠(yuǎn)程更新系統(tǒng)的硬件結(jié)構(gòu)如圖2所示。遠(yuǎn)程更新系統(tǒng)由客戶端和服務(wù)器端兩部分組成??蛻舳擞刹杉骱虶PRS模塊兩部分組成,安裝在自動(dòng)氣象站采集箱內(nèi);上位機(jī)作為遠(yuǎn)程更新服務(wù)器,軟件維護(hù)人員可通過上位機(jī)上的遠(yuǎn)程更新控制軟件與采集器連接,進(jìn)行程序更新。

      圖1 基于構(gòu)件的遠(yuǎn)程更新方案

      采 集 器 采 用ARM 處理器和嵌入式 Linux 操 作 系統(tǒng)。/mnt/data1/和/mnt/data2/目 錄 采用的是yaffs文件系統(tǒng),用于保存用戶數(shù)據(jù);其他目錄采用的是ramdisk文件系統(tǒng),用于保存系統(tǒng)文件,系統(tǒng)重啟后,保存的內(nèi)容消失,數(shù)據(jù)重新加載,可以防止系統(tǒng)文件被篡改。GPRS模塊使用的是宏電公司的H7118GPRS DTU,用串行通信數(shù)據(jù)線將其與采集器的串行接口連接,即可使采集器通過其與上位機(jī)通信。上位機(jī)上的遠(yuǎn)程更新控制軟件是基于宏電公司提供的數(shù)據(jù)中心開發(fā)包和微軟的MFC類庫開發(fā)的。

      圖2 遠(yuǎn)程更新系統(tǒng)硬件結(jié)構(gòu)

      2 文件傳輸協(xié)議

      2.1 網(wǎng)絡(luò)通信協(xié)議的選擇

      在自動(dòng)氣象站嵌入式程序遠(yuǎn)程更新系統(tǒng)中,需要傳輸?shù)氖怯蒐inux共享庫文件、ARM 可執(zhí)行文件、xml文件以及更新配置文件經(jīng)壓縮形成的壓縮包文件,若傳輸?shù)臄?shù)據(jù)發(fā)生任何錯(cuò)誤、丟包等現(xiàn)象,都有可能導(dǎo)致更新包失效,程序更新無法進(jìn)行。由此可見,本應(yīng)用對(duì)數(shù)據(jù)傳輸?shù)目煽啃砸蠛芨?,?duì)傳輸速率的要求相對(duì)較低,因此應(yīng)該選用TCP協(xié)議進(jìn)行傳輸。

      2.2 文件傳輸數(shù)據(jù)包格式

      對(duì)TCP包的封包和解包都由DTU 和配套的數(shù)據(jù)中心開發(fā)包中的函數(shù)實(shí)現(xiàn),所以只需設(shè)計(jì)基于串行接口的文件傳輸數(shù)據(jù)包格式,采集器和上位機(jī)根據(jù)約定的數(shù)據(jù)包格式進(jìn)行文件的傳輸。

      為了保證文件傳輸與數(shù)據(jù)采集可以同時(shí)進(jìn)行,在此設(shè)計(jì)了一種與自動(dòng)氣象站通信協(xié)議兼容的文件傳輸數(shù)據(jù)包格式。

      服務(wù)器端發(fā)送的數(shù)據(jù)包的基本格式為:

      PU[……]↙

      那么,什么是“創(chuàng)造力”?德國學(xué)者海納特在《創(chuàng)造力》一書中指出:“創(chuàng)造力”一詞來源于拉丁語,大意是創(chuàng)造、創(chuàng)建、生產(chǎn)、造成。它與“成長”詞義相近。從詞源上看,“創(chuàng)造力”指在原先一無所有的情況下,創(chuàng)造出新東西。青年時(shí)代是質(zhì)疑、求索和發(fā)現(xiàn)的時(shí)代,是一個(gè)發(fā)展創(chuàng)造力和實(shí)現(xiàn)創(chuàng)造的階段?!皠?chuàng)造”本來就包含著“成長”的意思。每個(gè)青年在求學(xué)期間,既是在求知,也是在增強(qiáng)創(chuàng)造力,是知識(shí)和能力成長的時(shí)期。

      “PU”為包頭,“↙”表示換行符,“[……]”為數(shù)據(jù)包的具體內(nèi)容。下面對(duì)不同類型數(shù)據(jù)包的格式做詳細(xì)介紹。

      文件名包:

      PU[Nn……n[cc]]↙

      “N”為文件名包的標(biāo)識(shí);“n……n”為文件名,長度不定,不超過64字節(jié);“cc”為校驗(yàn)和,占兩字節(jié),計(jì)算方法是求出文件名中每個(gè)字符ASCII碼之和,保留最低字節(jié),再轉(zhuǎn)換為十六進(jìn)制數(shù)對(duì)應(yīng)的兩字節(jié)ASCII碼。

      校驗(yàn)包:

      PU[Cm……mcc]↙

      “C”為校驗(yàn)包的標(biāo)識(shí),“m……m”為md5信息摘要的字符串形式,占32字節(jié);“cc”為校驗(yàn)和,占兩字節(jié),計(jì)算方法是求出32字節(jié)信息摘要之和,保留最低字節(jié),再轉(zhuǎn)換為十六進(jìn)制數(shù)對(duì)應(yīng)的兩字節(jié)ASCII碼。校驗(yàn)包的作用是保證文件內(nèi)容的準(zhǔn)確無誤,這對(duì)提高遠(yuǎn)程更新的可靠性至關(guān)重要,會(huì)在后面的內(nèi)容中詳細(xì)闡述。

      PU[Dnnd……dcc]↙

      “D”為文件內(nèi)容包的標(biāo)識(shí);“nn”為包號(hào),占兩字節(jié),為一字節(jié)包號(hào)對(duì)應(yīng)十六進(jìn)制數(shù)的ASCII碼?!癲……d”為文件內(nèi)容,占512字節(jié),為256字節(jié)二進(jìn)制數(shù)據(jù)對(duì)應(yīng)十六進(jìn)制數(shù)的ASCII碼;“cc”為校驗(yàn)和,占兩字節(jié),計(jì)算方法是求出512字節(jié)數(shù)據(jù)之和,保留最低字節(jié),再轉(zhuǎn)換為十六進(jìn)制數(shù)對(duì)應(yīng)的兩字節(jié)ASCII碼。更新包中的內(nèi)容就是通過此類數(shù)據(jù)包發(fā)送的。其他內(nèi)容包消息略——編者注。

      客戶端在收到服務(wù)器端發(fā)送的其他消息后,會(huì)根據(jù)情況給服務(wù)器端回復(fù)ASCII碼表中定義的ACK、NAK 或者CAN 信號(hào)。

      2.3 文件傳輸流程

      文件傳輸流程如圖3所示。上位機(jī)依次發(fā)送文件名包、校驗(yàn)包、文件內(nèi)容包、文件內(nèi)容包結(jié)束消息、傳輸結(jié)束消息,根據(jù)采集器回復(fù)的信號(hào)決定重發(fā)、發(fā)送下一個(gè)包或者終止發(fā)送。若收到NAK 信號(hào)或者超過設(shè)置的超時(shí)時(shí)間后還未收到信號(hào),則會(huì)進(jìn)行重發(fā)。重發(fā)超過設(shè)置的次數(shù)之后,將會(huì)終止發(fā)送。這樣可以防止因?yàn)橐恍┨厥馇闆r導(dǎo)致不斷重發(fā)、浪費(fèi)流量的情況。

      2.4 更新包的組成

      更新包為壓縮文件,壓縮文件中至少應(yīng)包含ARM 可執(zhí)行文件、Linux共享庫文件、xml文件中的一種,更新配置文件必不可少。更新配置文件記錄更新包中的文件名稱以及對(duì)應(yīng)的類型,采集器接收到更新包后,解壓更新包,然后根據(jù)更新配置文件中的配置信息進(jìn)行相應(yīng)的操作。

      構(gòu)件式的數(shù)據(jù)采集程序由框架構(gòu)件、功能構(gòu)件、解析器和配置構(gòu)件4個(gè)部分組成,對(duì)應(yīng)更新包中的ARM 可執(zhí)行文件、Linux共享庫文件和xml文件。

      2.5 斷點(diǎn)續(xù)傳的實(shí)現(xiàn)

      為了防止GPRS信號(hào)不穩(wěn)定造成通信鏈路中斷、更新包傳輸失敗,從而導(dǎo)致整個(gè)更新包重新傳輸、浪費(fèi)通信流量、增加傳輸時(shí)間,設(shè)計(jì)了一種斷點(diǎn)續(xù)傳機(jī)制,下面詳細(xì)介紹其實(shí)現(xiàn)方法。

      在采集器中創(chuàng)建一個(gè)更新包信息記錄文件來記錄未接收完畢的更新包信息,如文件名、信息摘要、接收時(shí)間、斷點(diǎn)位置等。在發(fā)送更新包之前,上位機(jī)會(huì)首先發(fā)送獲取待續(xù)傳文件信息消息給采集器,若采集器中有未接收完成的臨時(shí)文件,則會(huì)返回待續(xù)傳文件信息給上位機(jī)。上位機(jī)從接收到的斷點(diǎn)位置開始發(fā)送文件,采集器在接收過程中,每收到一個(gè)正確的數(shù)據(jù)包,就會(huì)把新的斷點(diǎn)位置同步到更新包信息記錄文件中。若更新包接收成功,則會(huì)從更新包信息記錄文件中刪除對(duì)應(yīng)的信息。這樣,無論是什么原因?qū)е碌膫鬏斨袛?,在下一次傳輸時(shí),都能保證采集器從斷點(diǎn)處開始接收更新包。

      圖3 文件傳輸流程

      2.6 更新包正確性的保證

      為了確保更新包的內(nèi)容在傳輸過程中沒有發(fā)生改變,使用了md5算法來驗(yàn)證服務(wù)器端發(fā)送的更新包與客戶端接收到的更新包的一致性。

      md5算法是一種不可逆的字符串變換算法,經(jīng)過它計(jì)算得到的md5信息摘要是唯一的,不管字符串發(fā)生了什么變化,計(jì)算得出的md5信息摘要都是不一樣的。通過這種機(jī)制,既保證了更新包內(nèi)容的正確性,又大大提高了更新成功的幾率。

      3 自動(dòng)更新的實(shí)現(xiàn)

      3.1 應(yīng)用程序目錄結(jié)構(gòu)

      應(yīng)用程序目錄結(jié)構(gòu)如圖4 所 示。在/mnt/data1/目 錄 下 有data、info、program_a、program_b、program_download 幾 個(gè)子目錄以及采集程序、更新控制程序和啟動(dòng)腳本。data目錄用于存放采集進(jìn)程生成的氣象數(shù)據(jù)文件;info目錄用于存放應(yīng)用程序的配置文件;program_a與program_b目錄用于存放兩個(gè)版本的應(yīng)用采集程序,以確保更新的可靠性;program_download用于保存接收到的更新包;更新程序、采集程序和啟動(dòng)腳本的作用將在下一節(jié)詳細(xì)介紹。

      圖4 應(yīng)用程序目錄結(jié)構(gòu)

      3.2 更新機(jī)制

      采集器啟動(dòng)后首先會(huì)運(yùn)行啟動(dòng)腳本,啟動(dòng)腳本根據(jù)加載位置配置文件,從program_a或program_b目錄加載采集程序,然后加載更新控制程序。啟動(dòng)腳本執(zhí)行完畢后,采集控制程序和更新進(jìn)程就同時(shí)存在于內(nèi)存之中了。

      上位機(jī)發(fā)送更新包時(shí),采集進(jìn)程會(huì)根據(jù)2.2節(jié)規(guī)定的數(shù)據(jù)包格式解析數(shù)據(jù)包,進(jìn)行數(shù)據(jù)包的校驗(yàn)、文件信息的存儲(chǔ)、文件內(nèi)容的存儲(chǔ)以及應(yīng)答信號(hào)的發(fā)送。更新包接收完畢并確保正確后,若用戶發(fā)送“更新程序消息”,采集進(jìn)程則會(huì)通過消息隊(duì)列發(fā)送消息給更新進(jìn)程,通知更新控制進(jìn)程進(jìn)行采集程序的更新。

      更新控制程序流程圖如圖5所示。采集進(jìn)程啟動(dòng)后,會(huì)進(jìn)入阻塞狀態(tài),直至被消息隊(duì)列傳來更新控制程序請(qǐng)求喚醒。接著更新進(jìn)程會(huì)終止當(dāng)前正在運(yùn)行的采集進(jìn)程,解壓更新包,根據(jù)更新配置文件中的配置信息將可執(zhí)行程序、共享庫文件或xml文件移動(dòng)到相應(yīng)的目錄,覆蓋舊版的文件。

      然后更新控制進(jìn)程清空消息隊(duì)列,啟動(dòng)新版采集程序。若新版采集程序運(yùn)行成功,則會(huì)向消息隊(duì)列發(fā)送新版采集進(jìn)程信息,在一定時(shí)間內(nèi),若更新進(jìn)程從消息隊(duì)列中接收到新版采集進(jìn)程信息,則更新成功,否則更新失敗。若更新成功,則修改加載位置配置文件,使加載位置指向新版采集程序的目錄;若更新失敗,則啟動(dòng)舊版采集程序。

      通過此種機(jī)制,提高了更新的可靠性,即使更新包存在問題、導(dǎo)致新版采集程序運(yùn)行失敗,也可以運(yùn)行舊版采集程序,保證數(shù)據(jù)采集的連續(xù)性。由于自動(dòng)氣象站需要不間斷地進(jìn)行數(shù)據(jù)采集,因此這種保證是至關(guān)重要的。

      圖5 更新控制程序流程圖

      4 實(shí)驗(yàn)結(jié)果

      圖6為根據(jù)此套方案開發(fā)的自動(dòng)氣象站嵌入式程序遠(yuǎn)程更新系統(tǒng)服務(wù)器,使用此程序與配套的客戶端程序進(jìn)行了多次遠(yuǎn)程更新測試。測試結(jié)果表明,此套方案可以成功地實(shí)現(xiàn)采集程序的遠(yuǎn)程更新。采集程序維護(hù)人員首先通過服務(wù)器設(shè)置配置IP地址和端口號(hào),DTU 模塊會(huì)自動(dòng)進(jìn)行連接。連接成功后即可選擇更新包發(fā)送,發(fā)送成功后單擊“更新程序”按鈕即可控制采集器自動(dòng)進(jìn)行程序更新。

      圖6 自動(dòng)氣象站嵌入式程序遠(yuǎn)程更新服務(wù)器

      本方案最大的優(yōu)點(diǎn)是基于構(gòu)件,更新時(shí),只需發(fā)送由若干構(gòu)件組成的更新包,與傳統(tǒng)的單塊式嵌入式應(yīng)用程序相比,大大節(jié)省了傳輸?shù)牧髁?,提高了更新的效率。?gòu)件化前后的文件大小表略——編者注。

      構(gòu)件化之后,雖然文件的總大小191.4KB略大于構(gòu)件化之前的大小175.6KB,但是最大構(gòu)件只有31.8KB,遠(yuǎn)小于單塊式采集程序的大小171.1KB。而在更新時(shí),更新包中往往只有一個(gè)或幾個(gè)構(gòu)件,因此絕大多數(shù)情況下,構(gòu)件化采集程序更新時(shí)需要耗費(fèi)的流量遠(yuǎn)小于單塊式采集程序,更新成本更低,效率更高。

      結(jié) 語

      本文基于嵌入式Linux操作系統(tǒng)以及嵌入式文件系統(tǒng),設(shè)計(jì)了自動(dòng)氣象站采集程序遠(yuǎn)程更新方案,創(chuàng)新點(diǎn)是以構(gòu)件的形式進(jìn)行更新,更加節(jié)省流量。實(shí)驗(yàn)表明,該方案取得了良好的效果。下一步的工作目標(biāo)是優(yōu)化文件傳輸協(xié)議和壓縮算法,進(jìn)一步提高更新包傳輸?shù)男省p少流量的消耗。

      編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。

      [1]朱偉斌,張濤,顧海濤,等.基于網(wǎng)絡(luò)的嵌入式設(shè)備遠(yuǎn)程升級(jí)系統(tǒng)[J].電子技術(shù)與應(yīng)用,2014(2):135-138.

      [2]李鐵男.基于嵌入式Linux的無線文件傳輸系統(tǒng)的實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(6):1979-1986.

      [3]劉明,方嬌莉,尹業(yè)華,等.嵌入式監(jiān)控系統(tǒng)中斷點(diǎn)續(xù)傳的設(shè)計(jì)與實(shí)現(xiàn),[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(2):192-197.

      [4]朱孟江,聶云杰.嵌入式終端IAP 斷點(diǎn)續(xù)傳的研究與實(shí)現(xiàn),[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014,14(1):7-9.

      [5]趙炯,賈培源,李中山,林旺城.嵌入式設(shè)備遠(yuǎn)程在線升級(jí)技術(shù)[J].計(jì)算機(jī)工程,2012,36(12):262-264.

      [6]李俊,王金海.基于TFTP 協(xié)議的ARM 軟件遠(yuǎn)程更新系統(tǒng)[J].工礦自動(dòng)化,2010,36(7):22-25.

      [7]王江波,楊仁剛.基于GPRS的配變監(jiān)控終端遠(yuǎn)程更新和管理維護(hù)的研究[J].電測與儀表,2009,46(11):9-12.

      [8]李桂新,蔣敏玉,黃軍.基于現(xiàn)場總線實(shí)現(xiàn)遠(yuǎn)程在線更新程序的技術(shù)[J].信息化研究,2009,35(6):11-14.

      [9]徐立松,郭曉金.嵌入式Linux中安全文件傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].數(shù)字通信,2009,36(6):78-81.

      [10]劉生華,何鵬舉,鄢化彪.基于TCP/IP 的單片機(jī)軟件遠(yuǎn)程升級(jí)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(12):21-23.

      [11]王恒,王颋,王泉,等.基于Bootloader的可靠嵌入式軟件遠(yuǎn)程更新機(jī)制[J].微計(jì)算機(jī)信息,2007(20):57-59.

      [12]王恒,王颋,李敏,等.一種高可靠的嵌入式軟件遠(yuǎn)程自更新機(jī)制的研究與實(shí)現(xiàn)[J].工業(yè)控制計(jì)算機(jī),2007,20(9):39-40.

      猜你喜歡
      氣象站采集器字節(jié)
      珠峰上架起世界最高氣象站
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      COVID-19大便標(biāo)本采集器的設(shè)計(jì)及應(yīng)用
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      心靈氣象站
      趣味(語文)(2019年3期)2019-06-12 08:50:14
      簡談MC7字節(jié)碼
      基于ZigBee的大型公共建筑能耗采集器設(shè)計(jì)
      基于LabVIEW的多數(shù)據(jù)采集器自動(dòng)監(jiān)控軟件設(shè)計(jì)與開發(fā)
      自動(dòng)氣象站應(yīng)該注意的一些防雷問題
      自動(dòng)氣象站常見故障判斷與維護(hù)
      河南科技(2014年12期)2014-02-27 14:10:40
      碌曲县| 曲麻莱县| 临泉县| 阿克陶县| 永修县| 曲松县| 馆陶县| 襄汾县| 孝感市| 崇阳县| 湟源县| 双桥区| 马龙县| 囊谦县| 平顶山市| 邵阳县| 荣昌县| 防城港市| 灵山县| 湘潭县| 南皮县| 河西区| 贺兰县| 习水县| 遂溪县| 七台河市| 邹平县| 东台市| 临邑县| 沈阳市| 乌恰县| 金阳县| 杭州市| 颍上县| 东莞市| 宿州市| 鄢陵县| 西盟| 濉溪县| 普兰县| 锡林浩特市|