• 
    

    
    

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

      ?

      STM32F205VB在遠(yuǎn)程系統(tǒng)升級(jí)中的應(yīng)用

      2014-06-01 09:20:08丁鵬飛
      自動(dòng)化儀表 2014年5期
      關(guān)鍵詞:用戶程序系統(tǒng)升級(jí)存儲(chǔ)器

      丁鵬飛 法 林

      (西安郵電大學(xué)電子工程學(xué)院,陜西 西安 710121)

      0 引言

      隨著嵌入式終端技術(shù)的發(fā)展,嵌入式系統(tǒng)在化工、機(jī)電、國防等領(lǐng)域的應(yīng)用越來越廣泛,嵌入式系統(tǒng)在現(xiàn)代工業(yè)中無處不在[1]。在石油化工行業(yè)中,用于設(shè)備運(yùn)行狀態(tài)檢測和數(shù)據(jù)采集的智能儀器儀表的內(nèi)部軟件需要定期或不定期地進(jìn)行升級(jí)[2],用于滿足電網(wǎng)中配電變壓器的自動(dòng)化裝置對(duì)系統(tǒng)的遠(yuǎn)程升級(jí)與維護(hù)提出的要求[3]。遠(yuǎn)程升級(jí)技術(shù)通過遠(yuǎn)程升級(jí)儀器的應(yīng)用程序,滿足應(yīng)用過程提出的新的應(yīng)用要求,降低系統(tǒng)升級(jí)的成本。

      本文利用通用無線分組業(yè)務(wù)(general packet radio service,GPRS),設(shè)計(jì)了基于 STM32F205VB處理器的遠(yuǎn)程升級(jí)系統(tǒng)。系統(tǒng)使用GPRS模塊實(shí)現(xiàn)升級(jí)代碼的傳輸,具有價(jià)格低廉、網(wǎng)絡(luò)覆蓋范圍廣、無線傳輸?shù)忍攸c(diǎn)[4]。系統(tǒng)通過升級(jí)程序?qū)⒔邮盏纳?jí)代碼寫入程序存儲(chǔ)區(qū),實(shí)現(xiàn)系統(tǒng)的遠(yuǎn)程升級(jí),避免了工作人員到現(xiàn)場進(jìn)行設(shè)備的升級(jí),節(jié)約了時(shí)間和人力。

      1 遠(yuǎn)程系統(tǒng)升級(jí)原理

      在微處理器中,程序存儲(chǔ)器的編程方法通常有3種[5]:并行編程模式、通過串口或JTAG等接口進(jìn)行編程的在系統(tǒng)編程(in system programming,ISP)模式,以及在應(yīng)用程序控制下的在應(yīng)用編程(in application programming,IAP)模式。

      并行編程是較早單片機(jī)的編程方式。該模式通過專用的編程器對(duì)單片機(jī)進(jìn)行程序的燒寫,需要額外的編程器,且花費(fèi)較多的開發(fā)時(shí)間,這種單片機(jī)已被淘汰。ISP編程模式由于其調(diào)試的方便性得到眾多廠家的廣泛支持。IAP是應(yīng)用Flash程序存儲(chǔ)器的一種編程模式[6]。IAP模式是將Flash程序存儲(chǔ)區(qū)化分為兩個(gè)不同程序區(qū)域(程序區(qū)域1和程序區(qū)域2)。運(yùn)行于程序區(qū)域1的應(yīng)用程序?yàn)橐龑?dǎo)加載程序,即Bootloader程序;運(yùn)行于程序區(qū)域2的應(yīng)用程序?yàn)橛脩魬?yīng)用程序。Bootloader程序是一段引導(dǎo)程序,它駐留在處理器的程序存儲(chǔ)器,當(dāng)處理器上電或復(fù)位后在用戶應(yīng)用程序之前運(yùn)行。Bootloader程序檢測升級(jí)標(biāo)志位確定是否需要對(duì)用戶應(yīng)用程序進(jìn)行升級(jí)。如果不需要升級(jí)應(yīng)用程序時(shí),直接運(yùn)行用戶應(yīng)用程序;如果需要升用戶級(jí)應(yīng)用程序時(shí),Bootloader程序通過Flash存儲(chǔ)器的擦除、讀、寫機(jī)制對(duì)程序區(qū)域2進(jìn)行擦除,并將需要更新的程序?qū)懭氤绦騾^(qū)域2,即寫入應(yīng)用程序區(qū)域。當(dāng)程序區(qū)域2的應(yīng)用程序更新完畢后,跳轉(zhuǎn)到程序區(qū)域2運(yùn)行新用戶程序,從而實(shí)現(xiàn)程序的升級(jí)。

      2 遠(yuǎn)程升級(jí)功能的實(shí)現(xiàn)

      本文針對(duì)意法半導(dǎo)體(ST)公司所開發(fā)的基于ARM Cortex-M3內(nèi)核的STM32F205VB處理器,研究遠(yuǎn)程升級(jí)功能的實(shí)現(xiàn)方法。該方法將STM32F205VB處理器的 Flash存儲(chǔ)器分為3個(gè)區(qū):升級(jí)引導(dǎo)程序(Bootloader)區(qū)、用戶應(yīng)用程序區(qū)以及升級(jí)代碼+升級(jí)標(biāo)志區(qū)。每次上電后,Bootloader根據(jù)升級(jí)標(biāo)志判斷是否需要升級(jí)用戶程序。當(dāng)需要升級(jí)應(yīng)用程序時(shí),Bootloader將接收的升級(jí)代碼寫入用戶程序區(qū),并刪除升級(jí)標(biāo)志并運(yùn)行用戶應(yīng)用程序;當(dāng)不需要升級(jí)應(yīng)用程序時(shí),直接運(yùn)行用戶應(yīng)用程序。STM32F205VB處理器通過GPRS模塊與遠(yuǎn)程控制中心實(shí)現(xiàn)無線連接,并通過GPRS模塊接收控制中心的控制命令和升級(jí)代碼。遠(yuǎn)程升級(jí)的連接框圖如圖1所示。

      圖1 遠(yuǎn)程升級(jí)連接框圖Fig.1 Block diagram of the remote upgrading system

      2.1 STM32F205VB 處理器

      STM32F205VB處理器是意法半導(dǎo)體公司生產(chǎn)的基于ARM 32位Cortex-M3內(nèi)核的處理器,其自適應(yīng)實(shí)時(shí)加速器使Flash存儲(chǔ)器的程序無等待執(zhí)行,時(shí)鐘頻率高達(dá)120 MHz。該處理器集成了3路12位A/D轉(zhuǎn)換器、2路12位D/A轉(zhuǎn)換器、通用DMA控制器、高達(dá)17個(gè)定時(shí)器,支持串行線調(diào)試(serial wire debug,SWD)和聯(lián)合測試測試行動(dòng)小組(joint test action group,JTAG)接口協(xié)議。該處理器具有128 kB程序存儲(chǔ)器和64 kB SRAM,支持I2C、SPI、CAN等通信方式。

      2.2 Flash程序存儲(chǔ)器的劃分

      STM32F205VB處理器有1片統(tǒng)存儲(chǔ)器區(qū),地址為:0x1FFF0000~0x1FFF7A0F。該存儲(chǔ)器區(qū)域?yàn)樘幚砥鞯囊龑?dǎo)空間,即通過串口下載用戶程序的內(nèi)置引導(dǎo)程序。處理器的引導(dǎo)模式選擇管腳(BOOT1、BOOT0)決定處理器的啟動(dòng)模式。當(dāng)BOOT1=X、BOOT0=0時(shí),運(yùn)行用戶程序;當(dāng) BOOT1=0、BOOT0=1時(shí),運(yùn)行內(nèi)置引導(dǎo)程序?qū)崿F(xiàn)應(yīng)用程序的下載;當(dāng)BOOT1=1、BOOT0=1時(shí),運(yùn)行內(nèi)置SRAM中的程序。運(yùn)行用戶應(yīng)用程序時(shí),BOOT0=0;運(yùn)行內(nèi)置引導(dǎo)程序下載用戶應(yīng)用程序時(shí),BOOT0=1。因此,通過內(nèi)置引導(dǎo)程序升級(jí)用戶程序時(shí)必須改變BOOT0管腳的電平,而當(dāng)程序下載完成時(shí)需再次改變BOOT0管腳的電平。應(yīng)用內(nèi)置引導(dǎo)程序進(jìn)行程序的下載需要對(duì)BOOT0關(guān)鍵進(jìn)行短接,而“短接”動(dòng)作與“遠(yuǎn)程”直接矛盾[7]。因此,基于STM32F205VB處理器應(yīng)用系統(tǒng)的遠(yuǎn)程升級(jí)必須通過自己的引導(dǎo)程序?qū)崿F(xiàn)應(yīng)用程序的更新。

      為實(shí)現(xiàn)應(yīng)用系統(tǒng)的遠(yuǎn)程升級(jí),將STM32F205VB處理的程序分為用于實(shí)現(xiàn)用戶應(yīng)用程序升級(jí)的Bootloader程序和用戶應(yīng)用程序。在升級(jí)應(yīng)用程序前,需要接收用于系統(tǒng)升級(jí)的程序代碼。因此,實(shí)現(xiàn)遠(yuǎn)程升級(jí)功能涉及Bootloader程序、用戶應(yīng)用程序的設(shè)計(jì)和升級(jí)代碼的存儲(chǔ)。充分考慮STM32F205VB存儲(chǔ)器內(nèi)置了128 kB的Flash存儲(chǔ)器,將Flash存儲(chǔ)器劃分為Bootloader程序存儲(chǔ)區(qū)、用戶程序存儲(chǔ)區(qū)和升級(jí)代碼存儲(chǔ)區(qū)。STM32F205VB將Flash存儲(chǔ)器將存儲(chǔ)區(qū)劃分為5個(gè)扇區(qū),存儲(chǔ)地址從0x80000000開始,第0~3扇區(qū)分別為16 kB,第4扇區(qū)為64 kB,共128 kB(如果需要更多的存儲(chǔ)空間,可以選擇Flash存儲(chǔ)空間更大的處理器,如STM32F205ZG的Flash存儲(chǔ)空間為1 MB)。扇區(qū)的擦除是以扇區(qū)為單位進(jìn)行的。為此,根據(jù)Bootloader和用戶程序的大小,將Flash存儲(chǔ)器空間進(jìn)行分配,分配值如表1所示。

      表1 STM32F205VB Flash存儲(chǔ)器分配Tab.1 STM32F205VB Flash memory allocation

      2.3 系統(tǒng)升級(jí)程序設(shè)計(jì)

      系統(tǒng)升級(jí)程序設(shè)計(jì)成用于接收升級(jí)代碼的升級(jí)代碼接收程序和更新應(yīng)用程序的Bootloader兩個(gè)部分。系統(tǒng)升級(jí)程序的流程圖如圖2所示。系統(tǒng)上電后,首先運(yùn)行Bootloader程序,Bootloader程序通過讀取升級(jí)標(biāo)志位確認(rèn)是否對(duì)系統(tǒng)程序進(jìn)行升級(jí)。當(dāng)升級(jí)標(biāo)志位置位時(shí),Bootloader讀取升級(jí)代碼并將升級(jí)代碼寫入用戶程序區(qū),升級(jí)代碼寫入完畢后,啟動(dòng)應(yīng)用程序。當(dāng)應(yīng)用程序接收到升級(jí)代碼時(shí),應(yīng)用程序接收升級(jí)代碼并存儲(chǔ)到升級(jí)代碼區(qū),升級(jí)代碼接收完畢后判斷接收代碼是否完整、正確。當(dāng)判斷升級(jí)代碼接收完畢且完整無誤時(shí),置位升級(jí)標(biāo)志位并復(fù)位處理器。處理器復(fù)位后運(yùn)行Bootloader將接收的升級(jí)代碼寫入用戶程序區(qū)實(shí)現(xiàn)系統(tǒng)程序的升級(jí)。

      圖2 系統(tǒng)升級(jí)程序流程圖Fig.2 Flowchart of the system upgrading program

      Bootloader設(shè)計(jì)是遠(yuǎn)程升級(jí)的重點(diǎn),如何避免升級(jí)過程中出現(xiàn)的各種意外情況,是遠(yuǎn)程升級(jí)的基礎(chǔ)。很多遠(yuǎn)程升級(jí)系統(tǒng)通過Bootloader接收升級(jí)程序數(shù)據(jù)[6-9],而在升級(jí)程序數(shù)據(jù)傳輸過程中有以下兩種常見的原因?qū)е聜鬏敃r(shí)間較長:①由于傳輸傳輸鏈路不穩(wěn)定可能導(dǎo)致同一包數(shù)據(jù)需要多次發(fā)送;②升級(jí)程序數(shù)據(jù)量大,而傳輸速率較低。這種遠(yuǎn)程升級(jí)系統(tǒng)方案在升級(jí)過程中應(yīng)用程序停止運(yùn)行,用戶應(yīng)用程序因較長時(shí)間不能處理設(shè)備的任務(wù)而不能滿足實(shí)時(shí)性要求較高的場合。本文通過改變以往遠(yuǎn)程升級(jí)的數(shù)據(jù)傳輸方式,通過用戶升級(jí)代碼接收程序接收升級(jí)代碼。升級(jí)代碼數(shù)據(jù)準(zhǔn)確接收后,設(shè)置程序升級(jí)標(biāo)志,并重啟處理器由Bootloader完成應(yīng)用程序的升級(jí),從而減少升級(jí)任務(wù)的處理時(shí)間,滿足系統(tǒng)實(shí)時(shí)性的要求。Bootloader程序流程圖如圖3所示。

      圖3 Bootloader程序流程圖Fig.3 Flowchart of the Bootloader

      升級(jí)代碼接收程序完成升級(jí)代碼的接收。該程序通過接收數(shù)據(jù)中斷啟動(dòng),不影響應(yīng)用程序的正常運(yùn)行,保證了升級(jí)代碼接收階段系統(tǒng)的正常運(yùn)行。升級(jí)代碼接收程序的流程圖如圖4所示。

      圖4 升級(jí)代碼接收程序流程圖Fig.4 Flowchart of the upgrading code receiving program

      3 系統(tǒng)升級(jí)的可靠性設(shè)計(jì)

      系統(tǒng)應(yīng)用程序的升級(jí)必須保證升級(jí)數(shù)據(jù)的正確性和升級(jí)代碼的完整性。不完整的升級(jí)代碼或不正確的升級(jí)代碼都將使系統(tǒng)癱瘓。通過遠(yuǎn)程升級(jí)的抗掉電、抗誤碼和合法性等措施,保證了系統(tǒng)升級(jí)的可靠性和安全性。

      3.1 遠(yuǎn)程升級(jí)抗掉電設(shè)計(jì)

      在進(jìn)行升級(jí)的過程中,難免會(huì)出現(xiàn)突然掉電的情況,所以必須有可靠的機(jī)制避免因突然掉電而導(dǎo)致程序升級(jí)失敗的情況。在程序升級(jí)的過程中,突然掉電可能發(fā)生在以下兩種情況:①數(shù)據(jù)接收過程中;②數(shù)據(jù)已接收完畢,Bootloader正將升級(jí)程序復(fù)制到應(yīng)用程序區(qū)。在第一種情況下,應(yīng)用程序不會(huì)置位升級(jí)標(biāo)志位,原來的應(yīng)用程序區(qū)域保持不變,重新上電后,處理器運(yùn)行老的應(yīng)用程序,不會(huì)出現(xiàn)因升級(jí)的應(yīng)用程序不完整而使系統(tǒng)癱瘓的情況。在第二種情況下,重新上電后,Bootloader讀取升級(jí)標(biāo)志位并重新復(fù)制應(yīng)用程序,完成應(yīng)用程序的升級(jí),從而保證寫入程序存儲(chǔ)區(qū)的程序是完整的。

      升級(jí)代碼接收程序?qū)⑸?jí)代碼存儲(chǔ)到Flash存儲(chǔ)器,充分保證在第二種情況發(fā)生時(shí)能進(jìn)行應(yīng)用程序的正常升級(jí)。在接收升級(jí)代碼期間,系統(tǒng)應(yīng)用程序正常工作,大大減少了因系統(tǒng)升級(jí)而不能工作的時(shí)間。

      3.2 遠(yuǎn)程升級(jí)抗誤碼設(shè)計(jì)

      升級(jí)代碼接收程序接收的升級(jí)代碼數(shù)據(jù)是處理器運(yùn)行的代碼,很小的傳輸錯(cuò)誤都會(huì)造成升級(jí)后的系統(tǒng)癱瘓。因此,消除升級(jí)錯(cuò)誤傳輸碼的升級(jí)程序是保證系統(tǒng)升級(jí)后正常運(yùn)行的關(guān)鍵,為此,采用帶CRC校驗(yàn)的通信協(xié)議解決。

      為保證接收數(shù)據(jù)的正確性,設(shè)計(jì)升級(jí)代碼的傳輸幀格式表2所示。

      表2 升級(jí)代碼的傳輸幀格式Tab.2 The transmission frame format of upgrading code B

      表2中,起始標(biāo)志表示幀頭;功能碼表示該幀是升級(jí)命令幀,收到該幀數(shù)據(jù)表示接收的數(shù)據(jù)為遠(yuǎn)程升級(jí)代碼;總幀數(shù)表示升級(jí)代碼的總幀數(shù);當(dāng)前幀表示當(dāng)前為升級(jí)代碼的第幾幀;數(shù)據(jù)表示升級(jí)代碼數(shù)據(jù);校驗(yàn)位表示數(shù)據(jù)幀中前1028個(gè)數(shù)據(jù)的CRC校驗(yàn)碼。當(dāng)傳輸最后一幀數(shù)據(jù)時(shí),有可能升級(jí)代碼不足1024 B,不足的字節(jié)在數(shù)據(jù)幀中用0xff填充,從而保證所有幀中數(shù)據(jù)的個(gè)數(shù)為1024 B。發(fā)送升級(jí)代碼端在發(fā)送完一幀數(shù)據(jù)后等待下位機(jī)的應(yīng)答數(shù)據(jù)幀,若收到正確的回應(yīng)幀,則繼續(xù)發(fā)送下一幀數(shù)據(jù);若收到請(qǐng)求重發(fā)回應(yīng)幀,則重發(fā)剛才發(fā)送的數(shù)據(jù)幀;3次等待超時(shí)則停止發(fā)送。

      3.3 升級(jí)程序合法性檢查

      在遠(yuǎn)程升級(jí)的控制中心,可能因?yàn)椴僮魅藛T的誤操作將非升級(jí)代碼的BIN文件當(dāng)作升級(jí)程序文件進(jìn)行了升級(jí)操縱。在誤發(fā)送升級(jí)代碼的情況下,接收端在升級(jí)了錯(cuò)誤的升級(jí)代碼后導(dǎo)致系統(tǒng)癱瘓,必須由技術(shù)人員到現(xiàn)場進(jìn)行修復(fù)。因此,升級(jí)程序合法性檢查是保證系統(tǒng)升級(jí)后正常運(yùn)行的重要手段。為此,采取以下方式保證升級(jí)程序的合法。

      ①對(duì)發(fā)送升級(jí)代碼端的應(yīng)用程序設(shè)置登錄密碼,并設(shè)置登錄人員的使用權(quán)限。只有授權(quán)進(jìn)行遠(yuǎn)程升級(jí)的用戶,才能進(jìn)行遠(yuǎn)程升級(jí)操作。

      ②在應(yīng)用程序設(shè)計(jì)過程中,定義用于程序合法性的字符串常量,并將該常量定位到某個(gè)固定的地址,當(dāng)控制中心打開升級(jí)代碼的BIN文件時(shí),檢查固定地址的合法性字符串常量。當(dāng)檢測到字符串為非法時(shí),拒絕執(zhí)行遠(yuǎn)程升級(jí)操作;當(dāng)字符串合法時(shí),才允許操作人員執(zhí)行遠(yuǎn)程升級(jí)操作。

      通過升級(jí)程序合法性檢查措施,杜絕了因操作人員的非法操縱或誤操作導(dǎo)致的系統(tǒng)癱瘓,大大提高了遠(yuǎn)程升級(jí)的安全性和可靠性。

      4 結(jié)束語

      本文所設(shè)計(jì)的基于STM32F205VB的遠(yuǎn)程升級(jí)技術(shù),通過Flash存儲(chǔ)器的合理劃分、抗掉電設(shè)計(jì)、抗誤碼設(shè)計(jì)和程序合法性檢查等手段,保證了該升級(jí)技術(shù)的高度穩(wěn)定性和可靠性。該設(shè)計(jì)方案巧妙地將升級(jí)代碼接收程序作為系統(tǒng)應(yīng)用程序的一部分并通過中斷方式啟動(dòng),在升級(jí)代碼接收結(jié)束后運(yùn)行Bootloade實(shí)現(xiàn)系統(tǒng)的升級(jí),解決了升級(jí)過程中系統(tǒng)長時(shí)間不能工作的難題,滿足了系統(tǒng)實(shí)時(shí)性的要求。該遠(yuǎn)程升級(jí)技術(shù)可以應(yīng)用于其他控制系統(tǒng),具有廣泛的應(yīng)用前景和較高的使用價(jià)值。

      [1]Shi Wenchang.Implementing operating system support for extended trusted path in TPM-capable environments[J].Journal of Natural Sciences,2006,11(6):1493 -1497.

      [2]張宏建,蒙建波.自動(dòng)檢測技術(shù)與裝置[M].北京:化學(xué)工業(yè)出版社,2004.

      [3]韋文詳,劉曉莉,張桂玉.一種嵌入式遠(yuǎn)程配變監(jiān)控終端的研究與設(shè)計(jì)[J].自動(dòng)化儀表,2007,28(3):13 -16.

      [4]陳新,劉慧威,趙彥平,等.單片機(jī)程序遠(yuǎn)程升級(jí)的研究與實(shí)現(xiàn)[J].電子質(zhì)量,2011(12):53 -56,78.

      [5]田日才,王國鵬,梁學(xué)東.ATMEGA128單片機(jī)的軟件遠(yuǎn)程升級(jí)[J].電子技術(shù)應(yīng)用,2003(11):23-25.

      [6]李衛(wèi)紅,張凌云,陳天喜,等.基于IAP程序遠(yuǎn)程更新設(shè)計(jì)在車載乘客信息顯示中的應(yīng)用[J].機(jī)車電傳動(dòng),2012(2):79-81.

      [7]尹恒,嚴(yán)華.一種針對(duì)嵌入式遠(yuǎn)程升級(jí)安全的存儲(chǔ)解決方案[J].計(jì)算機(jī)應(yīng)用,2011,31(4):942 -944,998.

      [8]孫鋼,朱忠常,景振興.煤礦安全監(jiān)控分站遠(yuǎn)程升級(jí)方案[J].工礦自動(dòng)化,2012(3):58 -60.

      [9]楊晶,何鵬舉,朱升林,等.具有遠(yuǎn)程升級(jí)功能的網(wǎng)絡(luò)化智能溫控器[J].測控技術(shù),2012,31(11):6-10.

      猜你喜歡
      用戶程序系統(tǒng)升級(jí)存儲(chǔ)器
      靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
      變速箱控制系統(tǒng)Bootloader設(shè)計(jì)與實(shí)現(xiàn)
      嵌入式設(shè)備遠(yuǎn)程升級(jí)方案設(shè)計(jì)
      甘肅省高速公路通信系統(tǒng)升級(jí)改造解決方案
      高速公路監(jiān)控系統(tǒng)升級(jí)探究
      “一張網(wǎng)”收費(fèi)系統(tǒng)升級(jí)改造項(xiàng)目探析
      存儲(chǔ)器——安格爾(墨西哥)▲
      C8051F410單片機(jī)BootLoader的實(shí)現(xiàn)
      基于Nand Flash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)
      觸摸屏項(xiàng)目移植在自動(dòng)化系統(tǒng)升級(jí)中的應(yīng)用
      织金县| 兴和县| 桃江县| 南阳市| 克山县| 鹰潭市| 晋宁县| 灌云县| 鸡西市| 阜平县| 临沂市| 临高县| 巴马| 抚顺县| 肃宁县| 托里县| 澄迈县| 叙永县| 宁国市| 富平县| 台南市| 临汾市| 开封市| 贡嘎县| 贵南县| 天台县| 安达市| 黔南| 儋州市| 东丽区| 清丰县| 来宾市| 科尔| 慈利县| 太和县| 柘城县| 荆门市| 任丘市| 长垣县| 秭归县| 贵溪市|