久久精品亚洲中文字幕无码麻豆-好吊色青青草视频在线-国产一区二区三区久久精品-日韩精品极品视频在线观看免费-欧美成人一区二免费视频软件-中文字幕精品亚洲无线码一区-亚洲欧美一区二区三区国产精图文-国产日韩欧美啊啊啊-蹂躏美女校花大学生翘臀

物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

基于高頻RFID的微處理器IAP技術(shù)

作者:劉根賢 龔雪容 生擁宏 邢 勇
來源:RFID世界網(wǎng)
日期:2015-01-12 10:23:57
摘要:針對應(yīng)用高頻RFID的嵌入式設(shè)備設(shè)計了一種IAP方案,通過大容量高頻RFID對系統(tǒng)進行軟件升級,確保系統(tǒng)無論升級是否成功都可以維持正常工作。該技術(shù)基于IAP11F62X和STM32F103單片機硬件平臺進行了驗證。
關(guān)鍵詞:RFID微處理器IAP

  設(shè)備的運行維護在嵌入式系統(tǒng)生命周期中占有絕大部分時間,因此研究一種能使現(xiàn)場工程師方便快捷地升級軟件而又絕不破壞設(shè)備可用性的技術(shù)方案是十分必要的。隨著物流網(wǎng)及相關(guān)領(lǐng)域的技術(shù)發(fā)展,RFID技術(shù)已經(jīng)得到廣泛應(yīng)用[1]。

  本文針對應(yīng)用高頻RFID技術(shù)的嵌入式設(shè)備設(shè)計了一種基于IAP技術(shù)的運行時軟件升級方案,利用高頻大容量RFID對系統(tǒng)進行軟件升級。軟件架構(gòu)上設(shè)計引導(dǎo)程序、應(yīng)用程序、升級程序。該方案確保系統(tǒng)無論升級是否成功都可以維持正常工作。

  該技術(shù)在基于IAP11F62X單片機和FM1702SL非接觸卡讀寫控制器的水控器硬件平臺,以及基于STM32F-

  103RC單片機和FM1701非接觸卡讀寫控制器的加油機控制板硬件平臺上進行驗證。投入批量運行兩年多來,極大降低了現(xiàn)場維護成本。

  本文首先介紹基于高頻RFID系統(tǒng)的IAP方案軟件架構(gòu)、引導(dǎo)程序設(shè)計及應(yīng)用程序設(shè)計,然后在硬件平臺上進行了驗證。

  1 IAP方案設(shè)計

  為了不破壞設(shè)備的可用性,又可以便捷地對系統(tǒng)進行升級,方案設(shè)計時將軟件系統(tǒng)劃分為引導(dǎo)程序、應(yīng)用程序、升級程序、用戶數(shù)據(jù)和IAP參數(shù)區(qū),如圖1所示。

基于高頻RFID的微處理器IAP技術(shù)

  引導(dǎo)程序負責(zé)檢查應(yīng)用程序和升級程序的數(shù)據(jù)完整性,決定是否升級軟件或者恢復(fù)舊版本軟件,最后運行應(yīng)用程序。應(yīng)用程序和升級程序都是當(dāng)前設(shè)備的應(yīng)用軟件,兩者僅版本不同:一個為當(dāng)前版本,一個為待升級版本。在應(yīng)用程序和升級程序中包含IAP功能,從RFID中讀取升級數(shù)據(jù)寫入相應(yīng)升級程序區(qū)域。

  1.1 引導(dǎo)程序設(shè)計

  設(shè)備上電或復(fù)位時首先運行引導(dǎo)程序,工作時不依賴任何外部功能。程序進行硬件自檢,設(shè)置中斷向量,檢查應(yīng)用程序和升級程序的數(shù)據(jù)完整性,并根據(jù)IAP參數(shù)的設(shè)置決定是需要升級程序還是回滾恢復(fù)舊版本應(yīng)用程序,再判斷升級過程是否被中斷并決定是否繼續(xù)升級。引導(dǎo)程序流程如圖2(a)所示。

基于高頻RFID的微處理器IAP技術(shù)

  為了確保系統(tǒng)可用型,升級過程中先要備份當(dāng)前版本應(yīng)用程序,通過一個緩存頁面,升級程序和應(yīng)用程序按Flash頁塊進行交換,復(fù)制次序如圖2(b)所示,確保升級過程既不破壞原有版本程序代碼,也不丟失新版本程序。

  根據(jù)Flash按頁擦除、字節(jié)寫入的特性,在IAP參數(shù)區(qū),用8 B共64 bit代表64個頁面,初始化時為0xff,完成一頁則依次清除一位,這種寫模式下不需要擦除頁面即可記錄升級進度。一旦升級過程發(fā)生斷電等意外,開機重啟后可以檢測到升級斷點,繼續(xù)升級。

  如果升級后應(yīng)用程序功能不穩(wěn)定,還可以在應(yīng)用程序中通過管理卡設(shè)置,回滾恢復(fù)到原來版本。這個過程和升級新版本軟件過程一樣,只是不需要讀取升級卡,僅需通過管理卡設(shè)置回滾標志,通知引導(dǎo)程序“升級”(恢復(fù))到原來版本應(yīng)用程序。

  1.2 應(yīng)用程序設(shè)計

  應(yīng)用程序完成所需設(shè)備功能后,還需要實現(xiàn)讀取升級卡寫入升級程序區(qū),或者通過管理卡設(shè)置回滾標志,在應(yīng)用程序的卡處理過程中增加升級卡處理,應(yīng)用程序流程如圖3(a)所示。

基于高頻RFID的微處理器IAP技術(shù)

  在應(yīng)用程序檢測到有卡時,執(zhí)行卡事件處理流程中,如圖3(b)所示,識別卡的類型如果是消費卡或管理卡,則進入相應(yīng)功能處理。管理卡與程序版本相關(guān)的只有版本選擇參數(shù),置位時寫入IAP參數(shù)區(qū),由引導(dǎo)程序交換應(yīng)用程序和升級程序,主要用于升級后的版本回退。

  識別到升級卡時,讀取升級卡格式數(shù)據(jù)塊。如果當(dāng)前已經(jīng)讀取過升級卡并寫過升級程序區(qū),則升級卡版本信息必須與已經(jīng)寫入的升級卡版本一致才能繼續(xù)讀入。確認校驗數(shù)據(jù)完整性后,根據(jù)數(shù)據(jù)地址信息寫入升級程序區(qū),否則提示拒絕該卡,確保升級卡版本一致。如果尚未讀取過升級卡,則先讀取并判斷升級卡版本。如果與應(yīng)用程序或升級程序版本重復(fù),則提示已經(jīng)升級;如果為新版本軟件,則需要先擦除升級程序區(qū)Flash,再根據(jù)升級卡頭信息寫入升級程序區(qū)。如果本套升級卡已經(jīng)全部讀取并寫入升級程序區(qū),則更新IAP參數(shù),軟件復(fù)位跳轉(zhuǎn)到引導(dǎo)程序。

  2 IAP硬件平臺設(shè)計

  目前支持IAP的51單片機有STC的IAP11F系列以及新茂、新唐(華邦)和SST等很多型號,而基于ARM的單片機基本都支持IAP功能,這里以兩種典型應(yīng)用為例介紹IAP系統(tǒng)設(shè)計。

  2.1 51單片機系統(tǒng)

  水控器是應(yīng)用于飲用水或浴室等用水管理的設(shè)備,通過控制電磁閥管理出水,通過定時器計時收費,通過脈沖式流量傳感器計量收費,或者通過RTC時鐘包時收費。

  系統(tǒng)采用STC公司的IAP11F60X單片機,具有62 KB程序空間,引導(dǎo)程序占1 KB,應(yīng)用程序和升級程序各占28 KB,IAP參數(shù)占1 KB(2頁),其余為用戶數(shù)據(jù)區(qū)[2]。

  射頻模塊為FM1702SL,單片機通過模擬SPI與之連接,可以讀取ISO14442A標準系列非接觸卡。具體功能模塊見圖4。

基于高頻RFID的微處理器IAP技術(shù)

  在項目設(shè)置中需要設(shè)置應(yīng)用程序起始地址,例如在本系統(tǒng)中起始地址設(shè)為0x0400,此外需要特別處理中斷向量。51單片機的中斷向量為固定地址,此時中斷向量都在引導(dǎo)程序中,而中斷服務(wù)函數(shù)均在應(yīng)用程序中,因此需要在引導(dǎo)程序中設(shè)置中斷跳轉(zhuǎn)到應(yīng)用程序中,舉例如下:

  ;-----定時中斷0----------------

  ORG 000BH

  LJMP AP_ADDR+0BH

  ;-----定時中斷1----------------

  ORG 001BH

  LJMP AP_ADDR+1BH

  ;-----------------------------

  AP_ADDR 定義為應(yīng)用程序起始地址,而在應(yīng)用程序中依然通過以下語法實現(xiàn)中斷函數(shù):

  void timer0_ISR(void) interrupt 1 using 1

  void timer1_ISR(void) interrupt 3 using 1

  使用IAP11F62X單片機,在處理完升級卡后可以通過給IAP_CONTR賦值0x20強制軟件復(fù)位跳轉(zhuǎn)到引導(dǎo)程序,引導(dǎo)程序完成升級。然后通過LJMP AP_ADDR 指令跳轉(zhuǎn)到應(yīng)用程序,完成IAP過程并繼續(xù)運行。

  2.2 STM32單片機系統(tǒng)IAP

  某型非接觸卡加油機控制板采用STM32F103RC處理器,具有256 KB Flash,讀卡電路采用性價比更高的FM1701,由軟件實現(xiàn)FM1208 CPU卡的加密認證讀取,通過車號識別模塊識別車輛,并可以通過串口攝像模塊拍照,與加油記錄一起保存在大容量串口Flash中,其結(jié)構(gòu)框圖如圖5所示。

基于高頻RFID的微處理器IAP技術(shù)

  STM32位處理器IAP功能與51單片機系統(tǒng)大體相似,需要設(shè)置程序起始位置,引導(dǎo)程序必須設(shè)置為Flash基地址(0x08000000),而應(yīng)用程序地址則是0x0800-2000。不同之處在于STM32的中斷向量表可以通過NVIC_Set-VectorTable函數(shù)設(shè)置到0x08002000,而不必通過引導(dǎo)程序跳轉(zhuǎn)[3]。此外,STM32F103RC具有48 KB SRAM,可以讀入升級卡全部數(shù)據(jù),校驗正確后寫入Flash。

  引導(dǎo)程序完成升級程序代碼復(fù)制交換后,通過絕對地址跳轉(zhuǎn)語句即可跳轉(zhuǎn)到指定地址的應(yīng)用程序執(zhí)行。應(yīng)用程序也通過相同語句跳轉(zhuǎn)到引導(dǎo)程序執(zhí)行,僅地址不同。

  3 主機寫升級卡軟件

  主機寫卡軟件讀取HEX格式或者BIN格式程序文件,按IC卡容量分割后寫入升級卡。由于RFID卡數(shù)據(jù)容量有限,升級程序可能需要寫入多張升級卡。

  規(guī)劃卡數(shù)據(jù)的存放時,必須考慮升級時的卡類型識別以及版本控制、數(shù)據(jù)完整性等,因此需要設(shè)計格式頭,如圖6所示。

基于高頻RFID的微處理器IAP技術(shù)

  識別碼用于確認該卡為本設(shè)備所用;類型碼用于判定識別卡類型屬于消費卡、管理卡或升級卡;版本為本卡內(nèi)應(yīng)用程序版本號;起始地址和數(shù)據(jù)長度為卡內(nèi)數(shù)據(jù)在升級程序空間內(nèi)的起始地址和數(shù)據(jù)字節(jié)數(shù);卡數(shù)說明升級程序共包含多少張卡;卡序則是說明當(dāng)前卡為第幾張卡;數(shù)據(jù)校驗用于驗證卡內(nèi)數(shù)據(jù)的完整性。主機寫卡軟件根據(jù)應(yīng)用程序大小計算所需升級卡數(shù)量,并依次寫入升級卡格式以及數(shù)據(jù)[4]。

  4 功能驗證

  該升級方案應(yīng)用于某型非接觸卡水控器,采用4 KB數(shù)據(jù)容量的FM11F32卡作為升級介質(zhì),單片機為IAP11F62X。一套升級卡一直控制在7張卡以內(nèi)。某型非接觸卡加油機控制板也采用這一方案,采用8 KB數(shù)據(jù)容量的FM1208 CPU卡作為升級介質(zhì),單片機為STM32-

  F103RC。由于加油站現(xiàn)場環(huán)境限制,這種升級方式更易于接受[5]。

  在設(shè)備運行的近2年時間時,由于修復(fù)BUG、調(diào)整功能等需求,設(shè)備進行了十多次升級,正因為采用這種方式,沒有給用戶和維護人員帶來額外負擔(dān)。

  本設(shè)計采用大容量RFID卡作為升級介質(zhì),無須下載線,更不必拆開設(shè)備,就可以進行現(xiàn)場升級,極大降低了維護難度。雖然由于目前非接觸卡存儲容量有限,可能需要多張IC卡才能完成升級,但由于設(shè)備讀卡速度快,整個軟件升級過程也不過兩三分鐘時間。實際應(yīng)用證明,這種升級方式無論用戶還是現(xiàn)場維護人員都易于接受,具有較高的應(yīng)用價值。