《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于高頻RFID的微處理器IAP技術(shù)
基于高頻RFID的微處理器IAP技術(shù)
來源:電子技術(shù)應(yīng)用2013年第4期
劉根賢1,龔雪容2,生擁宏2,邢 勇3
1.清華大學(xué) 計算機科學(xué)與技術(shù)系,北京100084; 2.解放軍信息工程大學(xué),河南 鄭州450004; 3.第二炮兵裝備研究院 中試中心,北京100085
摘要: 針對應(yīng)用高頻RFID的嵌入式設(shè)備設(shè)計了一種IAP方案,通過大容量高頻RFID對系統(tǒng)進行軟件升級,確保系統(tǒng)無論升級是否成功都可以維持正常工作。該技術(shù)基于IAP11F62X和STM32F103單片機硬件平臺進行了驗證。
中圖分類號: TP368.1
文獻標(biāo)識碼: A
文章編號: 0258-7998(2013)04-0029-03
Microprocessor IAP technology based on high frequency RFID
Liu Genxian1,Gong Xuerong2,Sheng Yonghong2,Xing Yong3
1.Department of Computer Science and Technology, Tsinghua University, Beijing 100084,China; 2.PLA Information Engineering University, Zhengzhou 450004,China; 3.Equipment Research Institute of the Second Artillery, Beijing 100085,China
Abstract: This paper proposes an IAP solution for embedded system based on high-frequency RFID via high-capacity tag. This technology makes sure that system run smoothly no matter the upgrade operation is success or not. The technology is verified on IAP11F62X and STM32F103RC hardware platforms.
Key words : microprocessor;RFID;IAP;interrupt vector;embedded system

    設(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所示。

    引導(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)所示。

    為了確保系統(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è)置回滾標(biāo)志,通知引導(dǎo)程序“升級”(恢復(fù))到原來版本應(yīng)用程序。
1.2 應(yīng)用程序設(shè)計
    應(yīng)用程序完成所需設(shè)備功能后,還需要實現(xiàn)讀取升級卡寫入升級程序區(qū),或者通過管理卡設(shè)置回滾標(biāo)志,在應(yīng)用程序的卡處理過程中增加升級卡處理,應(yīng)用程序流程如圖3(a)所示。

    在應(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標(biāo)準(zhǔn)系列非接觸卡。具體功能模塊見圖4。

    在項目設(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所示。

    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所示。

    識別碼用于確認該卡為本設(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)用價值。
參考文獻
[1] 王愛英.智能卡技術(shù)[M].北京:清華大學(xué)出版社,2009.
[2] 丁向榮.STC系列增強型8051單片機原理與應(yīng)用[M].北京:電子工業(yè)出版社,2011.
[3] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2008.
[4] 鄭群星.RFID原理[M].臺北:全華圖書股份有限公司,2011.
[5] 王幸之.單片機應(yīng)用系統(tǒng)電磁干擾與抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。