摘 要:通過研究醫(yī)療檢測設(shè)備儀器中用于體外診斷樣本數(shù)據(jù)追蹤功能的RFID讀卡器在讀樣本標(biāo)簽數(shù)據(jù)時出現(xiàn)讀卡失敗的情況,對在線射頻讀卡器硬件組成和軟件系統(tǒng)程序邏輯設(shè)計,以及讀卡器和標(biāo)簽中的密鑰存儲位置和交互驗證過程進(jìn)行分析,同時對實際讀寫卡過程中的軟件操作方式及讀卡器和標(biāo)簽的應(yīng)答模式進(jìn)行總結(jié),通過對比編輯器產(chǎn)生的.map文件,查詢并驗證導(dǎo)致存儲區(qū)域密鑰常量發(fā)生修改的根本原因。結(jié)果表明,在程序跳轉(zhuǎn)過程中,由于引導(dǎo)程序中定時器中斷向量未及時關(guān)閉,導(dǎo)致變化的中斷運行變量將系統(tǒng)密鑰內(nèi)存常量進(jìn)行修改,出現(xiàn)密鑰驗證失敗導(dǎo)致讀卡數(shù)據(jù)失敗的問題,通過及時關(guān)相應(yīng)中斷的方法,解決讀卡數(shù)據(jù)失敗的問題,保證診斷檢測設(shè)備數(shù)據(jù)追蹤的穩(wěn)定運行。
關(guān)鍵詞:RFID;射頻讀卡器;在線升級;密鑰;.map文件
中圖分類號:TP391 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-2945(2024)24-0138-04
Abstract: By studying the failure of the RFID card reader used for in vitro diagnostic sample data tracking in medical testing equipment when reading sample label data, the hardware composition of the online RF card reader and the program logic design of the software system, as well as the key storage location and interactive verification process in the card reader and label are analyzed. At the same time, the software operation mode and the response mode of card reader and label are summarized in the actual process of card reading and writing. By comparing the .map file generated By the editor, the root cause of the change of the key constant of the storage area is queried and verified. The results show that in the process of program jump, as the timer interrupt vector in the boot program is not closed in time, the changed interrupt operation variable modifies the system key memory constant, and the failure of key verification leads to the failure of card reading data. By turning off the corresponding interrupt in time, the problem of failure of card reading data is solved to ensure the stable operation of data tracking of diagnosis and detection equipment.
Keywords: RFID; RF card reader; online upgrade; key; .map file
無線射頻識別技術(shù)(Radio Frequency Idenfication,RFID)是一種非接觸的自動識別技術(shù),其基本原理是利用射頻信號在空間耦合(電感或電磁耦合)或雷達(dá)反射的傳輸特性,實現(xiàn)對被識別物體的自動識別和數(shù)據(jù)傳輸。RFID系統(tǒng)至少包含讀卡器和電子標(biāo)簽2個部分。其中,讀卡器包含MCU控制單元和射頻發(fā)射天線,電子標(biāo)簽是射頻識別系統(tǒng)的數(shù)據(jù)載體。電子標(biāo)簽由標(biāo)簽天線和標(biāo)簽專用芯片組成。讀卡器和電子標(biāo)簽通過輸入密鑰或讀取存儲在設(shè)備中的密鑰進(jìn)行身份的認(rèn)證。
1 系統(tǒng)設(shè)計
根據(jù)ISO規(guī)范,通信距離小于10 cm的讀卡器和智能卡簡稱為PCD和PICC,本設(shè)計PCD部分采用STM32系列MCU與復(fù)旦微射頻芯片F(xiàn)M17520通過,SPI通信接口進(jìn)行控制信息交互,PCD控制單元包含供電模塊、通信模塊、聲光報警模塊和射頻天線4個部分,射頻芯片和天線之間包含發(fā)射電路和接收電路2個部分,硬件系統(tǒng)連接如圖1所示。PCD和PICC之間采用ISO 14443-A操作幀格式進(jìn)行通信,PICC支持的卡格式為S50標(biāo)簽,通信載波頻率為13.56 MHz。程序讀標(biāo)簽交互流程如圖2所示。
PCD控制芯片采用BOOT和IAP程序架構(gòu),將程序存儲FLASH進(jìn)行分區(qū)配置,可支持串口在線程序升級。當(dāng)程序剛開始上電時只在BOOT程序段運行,上位機發(fā)送跳轉(zhuǎn)指令后進(jìn)行跳轉(zhuǎn),然后進(jìn)入正式IAP運行程序中運行檢測。
2 RFID密鑰存儲
S50卡內(nèi)部為1 KB存儲空間,卡片內(nèi)部以扇區(qū)為單位,共有16個扇區(qū),每個扇區(qū)分為4塊,每塊有16 B。扇區(qū)0是固化廠商的信息,不可存儲信息使用,其他15個扇區(qū)為可使用存儲扇區(qū),每個扇區(qū)的最后一塊為密鑰塊。S50卡的密鑰是對扇區(qū)有效的,在讀寫任何扇區(qū)數(shù)據(jù)前都要先驗證密鑰,且扇區(qū)密鑰相互獨立,卡片的默認(rèn)密鑰都是6個字節(jié)的0xFF,用戶可根據(jù)自身保護(hù)需求,按照特定的密鑰編寫機制進(jìn)行密鑰設(shè)置。只有密鑰通過驗證后才能讀寫對應(yīng)塊數(shù)據(jù)。S50卡扇區(qū)結(jié)構(gòu)如圖3所示。
3 .map文件的作用
程序編譯器在生成MCU可執(zhí)行hex文件的過程中,會產(chǎn)生一些中間文件如(.o、.axf、.map等),.map文件是編譯器鏈接時生成的一個文件,其主要包含了交叉鏈接信息。通過.map文件,可以知道整個工程的函數(shù)調(diào)用關(guān)系、FLASH和RAM占用情況及其詳細(xì)匯總信息,能具體到單個源文件(.c/.s)的占用情況,根據(jù)這些信息,可以對代碼進(jìn)行優(yōu)化。
.map文件可以分為以下5個組成部分:①程序段交叉引用關(guān)系(Section Cross References);②刪除映像未使用的程序段(Removing Unused input sections from the image);③映像符號表(Image Symbol Table);④映像內(nèi)存分布圖(Memory .map of the image);⑤映像組件大?。↖mage component sizes)。
其中,映像內(nèi)存分布圖描述了被引用的各個符號(程序段/數(shù)據(jù))在存儲器中的存儲地址、類型、大小及作用域等信息。
4 問題原因分析
在醫(yī)學(xué)檢驗儀器RFID讀卡器進(jìn)行樣本標(biāo)簽讀取過程中,讀卡器中原始16組密鑰中0xXX,0xXX,0xXX,0xXX,0xXX,0xXX……0xXX,0xXX被修改,讀卡器重新上電后正常,設(shè)計測試程序進(jìn)行FLASH密鑰數(shù)據(jù)監(jiān)測,連續(xù)運行后發(fā)現(xiàn)密鑰被修改為0xXX,0xXX,0xXX,0xXX,0x00,0x00,0x00,0x00,0xXX……0xXX,其中被修改的密鑰為后4個Byte內(nèi)存地址數(shù)據(jù)。
IAP程序中密鑰KEY_A格式為16×6的無符號char型數(shù)組,MCU上電后將數(shù)組保存在內(nèi)存中,程序運行過程中可能導(dǎo)致值變化的原因:①數(shù)據(jù)越界;②指針偏移量錯誤。分析后無數(shù)據(jù)越界風(fēng)險和指針偏移量錯誤。
使用測試程序?qū)Τ绦蛘{(diào)用密鑰時間及密鑰內(nèi)存位置修改進(jìn)行監(jiān)控,監(jiān)控發(fā)現(xiàn)修改的密鑰為4個Byte內(nèi)存地址數(shù)據(jù)。研究儀器運行邏輯后,發(fā)現(xiàn)密鑰修改時間為串口跳轉(zhuǎn)指令發(fā)出后,即程序跳轉(zhuǎn)時密鑰數(shù)據(jù)被改變。進(jìn)行程序.map分析,IAP程序中的密鑰內(nèi)存地址和BOOT程序的Timer_1ms變量內(nèi)存地址一致,懷疑為此變量值變化覆蓋導(dǎo)致,BOOT和IAP程序.map文件如圖4所示。
Timer_1ms為無符號整型變量,占用4字節(jié)數(shù),內(nèi)存保存地址為0x2000003C—0x2000003F,和密鑰KEY_A內(nèi)存保存0x20000038—0x20000097地址重合,參數(shù)占用地址及字節(jié)數(shù)見表1。判斷為跳轉(zhuǎn)指令發(fā)送時BOOT程序定時器中斷中毫秒定時器變量覆蓋IAP內(nèi)存常量導(dǎo)致密鑰數(shù)據(jù)出錯。
驗證過程如下,增加跳轉(zhuǎn)延遲時間至500 ms后進(jìn)行FLASH偏移,監(jiān)控程序運行后記錄密鑰被修改位置為0x01,0xF3轉(zhuǎn)換為十進(jìn)制499,為設(shè)置的延時時間,即跳轉(zhuǎn)后毫秒定時器中斷進(jìn)入了499次,然后進(jìn)行中斷向量偏移,延時跳轉(zhuǎn)程序如圖5所示。
5 解決措施
分析測試后得出,Timer_1ms變量只在BOOT程序中定時器中斷使用,未在IAP正式程序中使用,不能簡單地進(jìn)行關(guān)總中斷操作。修改程序并實測,結(jié)果分析如下:當(dāng)關(guān)總中斷時,會導(dǎo)致程序不響應(yīng)中斷,但是中斷標(biāo)志位會依然置位,當(dāng)正式程序IAP運行并打開總中斷時,程序會立即響應(yīng)中斷,但是部分中斷無法找到中斷處理函數(shù),程序卡死,導(dǎo)致程序無法運行,所以不能簡單地進(jìn)行開關(guān)總中斷處理。
單獨關(guān)斷變量所在定時器中斷,經(jīng)測試驗證后得出:在跳轉(zhuǎn)函數(shù)指針之前需要將引起IAP中內(nèi)存變量變化的中斷源進(jìn)行關(guān)閉,上述問題中的中斷源為定時器4,即跳轉(zhuǎn)函數(shù)指針前將定時器4失能,經(jīng)測試驗證后問題得到解決,疲勞測試無異常。失能程序如圖6所示。
6 結(jié)束語
在包含有BOOT和IAP程序的嵌入式系統(tǒng)中,在正常使用或程序在線升級完畢需要跳轉(zhuǎn)時,當(dāng)BOOT程序接收到跳轉(zhuǎn)指令后程序進(jìn)行跳轉(zhuǎn)函數(shù)指針偏移前,需要將可能會觸發(fā)中斷的中斷源進(jìn)行關(guān)閉,然后在正式IAP程序中重新進(jìn)行初始化使用,否則會導(dǎo)致在跳轉(zhuǎn)過程中進(jìn)入部分中斷,中斷中所產(chǎn)生的變量值變化會導(dǎo)致IAP程序中的常量值發(fā)生改變,從而引發(fā)系統(tǒng)工作異常。
參考文獻(xiàn):
[1] 譚澤斌.基于STM32的智能卡讀寫器的設(shè)計[D].北京:北京郵電大學(xué),2020.
[2] 謝東江,劉奭奭,李劼科.基于RFID技術(shù)的智能輸送線系統(tǒng)設(shè)計[J].機電工程技術(shù),2023,52(10):170-173.
[3] 戴彩艷,蔡堅勇,陳銀燕,等.13.56MHz RFID讀寫器天線的設(shè)計與仿真[J].無線電工程,2013,43(1):42-45.
[4] 許鍇.基于RFID技術(shù)的圖書館智能管理系統(tǒng)[J].現(xiàn)代電子技術(shù),2020,43(23):6-10.
[5] 星翼電子科技有限公司(正點原子).STM32 MAP文件淺析[Z].
[6] 李婷.RFID關(guān)鍵技術(shù)及其應(yīng)用研究[D].南京:南京郵電大學(xué),2017.
[7] 岳濤.RFID關(guān)鍵技術(shù)及其在現(xiàn)代物流中的應(yīng)用研究[D].武漢:武漢理工大學(xué),2010.
[8] 童冠,趙葉,佘帆.基于RFID技術(shù)的電力企業(yè)物資倉儲管理優(yōu)化方案[J].海峽科學(xué),2023(10):46-48,85.
[9] 謝斐.RFID技術(shù)在醫(yī)院設(shè)備管理中的應(yīng)用探析[J].科技創(chuàng)新與應(yīng)用,2020(34):165-166.
[10] 陳爍維,徐煒琳,王文娟.RFID射頻技術(shù)在冷鏈物流倉儲中的應(yīng)用[J].內(nèi)蒙古科技與經(jīng)濟,2023(12):101-103.
[11] 郭夢伊.基于RFID技術(shù)的物流倉儲體系研究[J].電子測試,2022(15):137-139.
[12] 薛竹溪.基于RFID技術(shù)的富士康倉儲管理應(yīng)用研究[D].太原:山西財經(jīng)大學(xué),2023.
[13] 王思文.基于RFID技術(shù)的備件倉儲管理系統(tǒng)設(shè)計與實現(xiàn)[D].大連:大連海事大學(xué),2019.
[14] 徐明.RFID技術(shù)在供應(yīng)鏈領(lǐng)域的應(yīng)用探究[J].物流工程與管理,2023,45(5):64-66.