《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于高頻RFID的微處理器IAP技術(shù)
基于高頻RFID的微處理器IAP技術(shù)
來源:電子技術(shù)應(yīng)用2013年第4期
劉根賢1,,龔雪容2,,生擁宏2,,邢 勇3
1.清華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)系,,北京100084,; 2.解放軍信息工程大學(xué),,河南 鄭州450004,; 3.第二炮兵裝備研究院 中試中心,,北京100085
摘要: 針對(duì)應(yīng)用高頻RFID的嵌入式設(shè)備設(shè)計(jì)了一種IAP方案,,通過大容量高頻RFID對(duì)系統(tǒng)進(jìn)行軟件升級(jí),確保系統(tǒng)無論升級(jí)是否成功都可以維持正常工作,。該技術(shù)基于IAP11F62X和STM32F103單片機(jī)硬件平臺(tái)進(jìn)行了驗(yàn)證,。
中圖分類號(hào): TP368.1
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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è)備的運(yùn)行維護(hù)在嵌入式系統(tǒng)生命周期中占有絕大部分時(shí)間,,因此研究一種能使現(xiàn)場(chǎng)工程師方便快捷地升級(jí)軟件而又絕不破壞設(shè)備可用性的技術(shù)方案是十分必要的。隨著物流網(wǎng)及相關(guān)領(lǐng)域的技術(shù)發(fā)展,,RFID技術(shù)已經(jīng)得到廣泛應(yīng)用[1],。

    本文針對(duì)應(yīng)用高頻RFID技術(shù)的嵌入式設(shè)備設(shè)計(jì)了一種基于IAP技術(shù)的運(yùn)行時(shí)軟件升級(jí)方案,利用高頻大容量RFID對(duì)系統(tǒng)進(jìn)行軟件升級(jí),。軟件架構(gòu)上設(shè)計(jì)引導(dǎo)程序,、應(yīng)用程序、升級(jí)程序,。該方案確保系統(tǒng)無論升級(jí)是否成功都可以維持正常工作,。
    該技術(shù)在基于IAP11F62X單片機(jī)和FM1702SL非接觸卡讀寫控制器的水控器硬件平臺(tái),以及基于STM32F-
103RC單片機(jī)和FM1701非接觸卡讀寫控制器的加油機(jī)控制板硬件平臺(tái)上進(jìn)行驗(yàn)證,。投入批量運(yùn)行兩年多來,,極大降低了現(xiàn)場(chǎng)維護(hù)成本。
    本文首先介紹基于高頻RFID系統(tǒng)的IAP方案軟件架構(gòu),、引導(dǎo)程序設(shè)計(jì)及應(yīng)用程序設(shè)計(jì),,然后在硬件平臺(tái)上進(jìn)行了驗(yàn)證。
1 IAP方案設(shè)計(jì)
    為了不破壞設(shè)備的可用性,,又可以便捷地對(duì)系統(tǒng)進(jìn)行升級(jí),,方案設(shè)計(jì)時(shí)將軟件系統(tǒng)劃分為引導(dǎo)程序、應(yīng)用程序,、升級(jí)程序,、用戶數(shù)據(jù)和IAP參數(shù)區(qū),如圖1所示,。

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

 


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

    為了確保系統(tǒng)可用型,,升級(jí)過程中先要備份當(dāng)前版本應(yīng)用程序,通過一個(gè)緩存頁面,,升級(jí)程序和應(yīng)用程序按Flash頁塊進(jìn)行交換,,復(fù)制次序如圖2(b)所示,確保升級(jí)過程既不破壞原有版本程序代碼,,也不丟失新版本程序,。
    根據(jù)Flash按頁擦除、字節(jié)寫入的特性,,在IAP參數(shù)區(qū),,用8 B共64 bit代表64個(gè)頁面,初始化時(shí)為0xff,,完成一頁則依次清除一位,,這種寫模式下不需要擦除頁面即可記錄升級(jí)進(jìn)度。一旦升級(jí)過程發(fā)生斷電等意外,,開機(jī)重啟后可以檢測(cè)到升級(jí)斷點(diǎn),,繼續(xù)升級(jí)。
    如果升級(jí)后應(yīng)用程序功能不穩(wěn)定,,還可以在應(yīng)用程序中通過管理卡設(shè)置,,回滾恢復(fù)到原來版本。這個(gè)過程和升級(jí)新版本軟件過程一樣,,只是不需要讀取升級(jí)卡,,僅需通過管理卡設(shè)置回滾標(biāo)志,通知引導(dǎo)程序“升級(jí)”(恢復(fù))到原來版本應(yīng)用程序,。
1.2 應(yīng)用程序設(shè)計(jì)
    應(yīng)用程序完成所需設(shè)備功能后,還需要實(shí)現(xiàn)讀取升級(jí)卡寫入升級(jí)程序區(qū),,或者通過管理卡設(shè)置回滾標(biāo)志,,在應(yīng)用程序的卡處理過程中增加升級(jí)卡處理,應(yīng)用程序流程如圖3(a)所示,。

    在應(yīng)用程序檢測(cè)到有卡時(shí),,執(zhí)行卡事件處理流程中,如圖3(b)所示,,識(shí)別卡的類型如果是消費(fèi)卡或管理卡,,則進(jìn)入相應(yīng)功能處理。管理卡與程序版本相關(guān)的只有版本選擇參數(shù),,置位時(shí)寫入IAP參數(shù)區(qū),,由引導(dǎo)程序交換應(yīng)用程序和升級(jí)程序,主要用于升級(jí)后的版本回退,。
    識(shí)別到升級(jí)卡時(shí),,讀取升級(jí)卡格式數(shù)據(jù)塊,。如果當(dāng)前已經(jīng)讀取過升級(jí)卡并寫過升級(jí)程序區(qū),則升級(jí)卡版本信息必須與已經(jīng)寫入的升級(jí)卡版本一致才能繼續(xù)讀入,。確認(rèn)校驗(yàn)數(shù)據(jù)完整性后,,根據(jù)數(shù)據(jù)地址信息寫入升級(jí)程序區(qū),否則提示拒絕該卡,,確保升級(jí)卡版本一致,。如果尚未讀取過升級(jí)卡,則先讀取并判斷升級(jí)卡版本,。如果與應(yīng)用程序或升級(jí)程序版本重復(fù),,則提示已經(jīng)升級(jí);如果為新版本軟件,,則需要先擦除升級(jí)程序區(qū)Flash,,再根據(jù)升級(jí)卡頭信息寫入升級(jí)程序區(qū)。如果本套升級(jí)卡已經(jīng)全部讀取并寫入升級(jí)程序區(qū),,則更新IAP參數(shù),,軟件復(fù)位跳轉(zhuǎn)到引導(dǎo)程序。
2 IAP硬件平臺(tái)設(shè)計(jì)
    目前支持IAP的51單片機(jī)有STC的IAP11F系列以及新茂,、新唐(華邦)和SST等很多型號(hào),,而基于ARM的單片機(jī)基本都支持IAP功能,這里以兩種典型應(yīng)用為例介紹IAP系統(tǒng)設(shè)計(jì),。
2.1 51單片機(jī)系統(tǒng)
    水控器是應(yīng)用于飲用水或浴室等用水管理的設(shè)備,,通過控制電磁閥管理出水,通過定時(shí)器計(jì)時(shí)收費(fèi),,通過脈沖式流量傳感器計(jì)量收費(fèi),,或者通過RTC時(shí)鐘包時(shí)收費(fèi)。
    系統(tǒng)采用STC公司的IAP11F60X單片機(jī),,具有62 KB程序空間,,引導(dǎo)程序占1 KB,應(yīng)用程序和升級(jí)程序各占28 KB,,IAP參數(shù)占1 KB(2頁),,其余為用戶數(shù)據(jù)區(qū)[2]。
    射頻模塊為FM1702SL,,單片機(jī)通過模擬SPI與之連接,,可以讀取ISO14442A標(biāo)準(zhǔn)系列非接觸卡。具體功能模塊見圖4,。

    在項(xiàng)目設(shè)置中需要設(shè)置應(yīng)用程序起始地址,,例如在本系統(tǒng)中起始地址設(shè)為0x0400,此外需要特別處理中斷向量。51單片機(jī)的中斷向量為固定地址,,此時(shí)中斷向量都在引導(dǎo)程序中,,而中斷服務(wù)函數(shù)均在應(yīng)用程序中,因此需要在引導(dǎo)程序中設(shè)置中斷跳轉(zhuǎn)到應(yīng)用程序中,,舉例如下:
,;-----定時(shí)中斷0----------------
    ORG        000BH
    LJMP    AP_ADDR+0BH
;-----定時(shí)中斷1----------------
    ORG        001BH
    LJMP    AP_ADDR+1BH
,;-----------------------------
    AP_ADDR 定義為應(yīng)用程序起始地址,,而在應(yīng)用程序中依然通過以下語法實(shí)現(xiàn)中斷函數(shù):
    void timer0_ISR(void) interrupt 1 using 1
    void timer1_ISR(void) interrupt 3 using 1
    使用IAP11F62X單片機(jī),在處理完升級(jí)卡后可以通過給IAP_CONTR賦值0x20強(qiáng)制軟件復(fù)位跳轉(zhuǎn)到引導(dǎo)程序,,引導(dǎo)程序完成升級(jí),。然后通過LJMP AP_ADDR 指令跳轉(zhuǎn)到應(yīng)用程序,完成IAP過程并繼續(xù)運(yùn)行,。
2.2 STM32單片機(jī)系統(tǒng)IAP
    某型非接觸卡加油機(jī)控制板采用STM32F103RC處理器,,具有256 KB Flash,讀卡電路采用性價(jià)比更高的FM1701,,由軟件實(shí)現(xiàn)FM1208 CPU卡的加密認(rèn)證讀取,,通過車號(hào)識(shí)別模塊識(shí)別車輛,并可以通過串口攝像模塊拍照,,與加油記錄一起保存在大容量串口Flash中,,其結(jié)構(gòu)框圖如圖5所示。

    STM32位處理器IAP功能與51單片機(jī)系統(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,,可以讀入升級(jí)卡全部數(shù)據(jù),校驗(yàn)正確后寫入Flash,。
    引導(dǎo)程序完成升級(jí)程序代碼復(fù)制交換后,通過絕對(duì)地址跳轉(zhuǎn)語句即可跳轉(zhuǎn)到指定地址的應(yīng)用程序執(zhí)行,。應(yīng)用程序也通過相同語句跳轉(zhuǎn)到引導(dǎo)程序執(zhí)行,,僅地址不同。
3 主機(jī)寫升級(jí)卡軟件
    主機(jī)寫卡軟件讀取HEX格式或者BIN格式程序文件,,按IC卡容量分割后寫入升級(jí)卡,。由于RFID卡數(shù)據(jù)容量有限,升級(jí)程序可能需要寫入多張升級(jí)卡。
    規(guī)劃卡數(shù)據(jù)的存放時(shí),,必須考慮升級(jí)時(shí)的卡類型識(shí)別以及版本控制,、數(shù)據(jù)完整性等,因此需要設(shè)計(jì)格式頭,,如圖6所示,。

    識(shí)別碼用于確認(rèn)該卡為本設(shè)備所用;類型碼用于判定識(shí)別卡類型屬于消費(fèi)卡,、管理卡或升級(jí)卡,;版本為本卡內(nèi)應(yīng)用程序版本號(hào);起始地址和數(shù)據(jù)長(zhǎng)度為卡內(nèi)數(shù)據(jù)在升級(jí)程序空間內(nèi)的起始地址和數(shù)據(jù)字節(jié)數(shù),;卡數(shù)說明升級(jí)程序共包含多少張卡,;卡序則是說明當(dāng)前卡為第幾張卡;數(shù)據(jù)校驗(yàn)用于驗(yàn)證卡內(nèi)數(shù)據(jù)的完整性,。主機(jī)寫卡軟件根據(jù)應(yīng)用程序大小計(jì)算所需升級(jí)卡數(shù)量,,并依次寫入升級(jí)卡格式以及數(shù)據(jù)[4]。
4 功能驗(yàn)證
    該升級(jí)方案應(yīng)用于某型非接觸卡水控器,,采用4 KB數(shù)據(jù)容量的FM11F32卡作為升級(jí)介質(zhì),,單片機(jī)為IAP11F62X。一套升級(jí)卡一直控制在7張卡以內(nèi),。某型非接觸卡加油機(jī)控制板也采用這一方案,,采用8 KB數(shù)據(jù)容量的FM1208 CPU卡作為升級(jí)介質(zhì),單片機(jī)為STM32-
F103RC,。由于加油站現(xiàn)場(chǎng)環(huán)境限制,,這種升級(jí)方式更易于接受[5]。
    在設(shè)備運(yùn)行的近2年時(shí)間時(shí),,由于修復(fù)BUG,、調(diào)整功能等需求,設(shè)備進(jìn)行了十多次升級(jí),,正因?yàn)椴捎眠@種方式,,沒有給用戶和維護(hù)人員帶來額外負(fù)擔(dān)。
    本設(shè)計(jì)采用大容量RFID卡作為升級(jí)介質(zhì),,無須下載線,,更不必拆開設(shè)備,就可以進(jìn)行現(xiàn)場(chǎng)升級(jí),,極大降低了維護(hù)難度,。雖然由于目前非接觸卡存儲(chǔ)容量有限,可能需要多張IC卡才能完成升級(jí),,但由于設(shè)備讀卡速度快,,整個(gè)軟件升級(jí)過程也不過兩三分鐘時(shí)間,。實(shí)際應(yīng)用證明,這種升級(jí)方式無論用戶還是現(xiàn)場(chǎng)維護(hù)人員都易于接受,,具有較高的應(yīng)用價(jià)值,。
參考文獻(xiàn)
[1] 王愛英.智能卡技術(shù)[M].北京:清華大學(xué)出版社,2009.
[2] 丁向榮.STC系列增強(qiáng)型8051單片機(jī)原理與應(yīng)用[M].北京:電子工業(yè)出版社,,2011.
[3] 李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,,2008.
[4] 鄭群星.RFID原理[M].臺(tái)北:全華圖書股份有限公司,2011.
[5] 王幸之.單片機(jī)應(yīng)用系統(tǒng)電磁干擾與抗干擾技術(shù)[M].北京:北京航空航天大學(xué)出版社,,2006.

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