






摘 要:通過研究醫療檢測設備儀器中用于體外診斷樣本數據追蹤功能的RFID讀卡器在讀樣本標簽數據時出現讀卡失敗的情況,對在線射頻讀卡器硬件組成和軟件系統程序邏輯設計,以及讀卡器和標簽中的密鑰存儲位置和交互驗證過程進行分析,同時對實際讀寫卡過程中的軟件操作方式及讀卡器和標簽的應答模式進行總結,通過對比編輯器產生的.map文件,查詢并驗證導致存儲區域密鑰常量發生修改的根本原因。結果表明,在程序跳轉過程中,由于引導程序中定時器中斷向量未及時關閉,導致變化的中斷運行變量將系統密鑰內存常量進行修改,出現密鑰驗證失敗導致讀卡數據失敗的問題,通過及時關相應中斷的方法,解決讀卡數據失敗的問題,保證診斷檢測設備數據追蹤的穩定運行。
關鍵詞:RFID;射頻讀卡器;在線升級;密鑰;.map文件
中圖分類號:TP391 文獻標志碼: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
無線射頻識別技術(Radio Frequency Idenfication,RFID)是一種非接觸的自動識別技術,其基本原理是利用射頻信號在空間耦合(電感或電磁耦合)或雷達反射的傳輸特性,實現對被識別物體的自動識別和數據傳輸。RFID系統至少包含讀卡器和電子標簽2個部分。其中,讀卡器包含MCU控制單元和射頻發射天線,電子標簽是射頻識別系統的數據載體。電子標簽由標簽天線和標簽專用芯片組成。讀卡器和電子標簽通過輸入密鑰或讀取存儲在設備中的密鑰進行身份的認證。
1 系統設計
根據ISO規范,通信距離小于10 cm的讀卡器和智能卡簡稱為PCD和PICC,本設計PCD部分采用STM32系列MCU與復旦微射頻芯片FM17520通過,SPI通信接口進行控制信息交互,PCD控制單元包含供電模塊、通信模塊、聲光報警模塊和射頻天線4個部分,射頻芯片和天線之間包含發射電路和接收電路2個部分,硬件系統連接如圖1所示。PCD和PICC之間采用ISO 14443-A操作幀格式進行通信,PICC支持的卡格式為S50標簽,通信載波頻率為13.56 MHz。程序讀標簽交互流程如圖2所示。
PCD控制芯片采用BOOT和IAP程序架構,將程序存儲FLASH進行分區配置,可支持串口在線程序升級。當程序剛開始上電時只在BOOT程序段運行,上位機發送跳轉指令后進行跳轉,然后進入正式IAP運行程序中運行檢測。
2 RFID密鑰存儲
S50卡內部為1 KB存儲空間,卡片內部以扇區為單位,共有16個扇區,每個扇區分為4塊,每塊有16 B。扇區0是固化廠商的信息,不可存儲信息使用,其他15個扇區為可使用存儲扇區,每個扇區的最后一塊為密鑰塊。S50卡的密鑰是對扇區有效的,在讀寫任何扇區數據前都要先驗證密鑰,且扇區密鑰相互獨立,卡片的默認密鑰都是6個字節的0xFF,用戶可根據自身保護需求,按照特定的密鑰編寫機制進行密鑰設置。只有密鑰通過驗證后才能讀寫對應塊數據。S50卡扇區結構如圖3所示。
3 .map文件的作用
程序編譯器在生成MCU可執行hex文件的過程中,會產生一些中間文件如(.o、.axf、.map等),.map文件是編譯器鏈接時生成的一個文件,其主要包含了交叉鏈接信息。通過.map文件,可以知道整個工程的函數調用關系、FLASH和RAM占用情況及其詳細匯總信息,能具體到單個源文件(.c/.s)的占用情況,根據這些信息,可以對代碼進行優化。
.map文件可以分為以下5個組成部分:①程序段交叉引用關系(Section Cross References);②刪除映像未使用的程序段(Removing Unused input sections from the image);③映像符號表(Image Symbol Table);④映像內存分布圖(Memory .map of the image);⑤映像組件大小(Image component sizes)。
其中,映像內存分布圖描述了被引用的各個符號(程序段/數據)在存儲器中的存儲地址、類型、大小及作用域等信息。
4 問題原因分析
在醫學檢驗儀器RFID讀卡器進行樣本標簽讀取過程中,讀卡器中原始16組密鑰中0xXX,0xXX,0xXX,0xXX,0xXX,0xXX……0xXX,0xXX被修改,讀卡器重新上電后正常,設計測試程序進行FLASH密鑰數據監測,連續運行后發現密鑰被修改為0xXX,0xXX,0xXX,0xXX,0x00,0x00,0x00,0x00,0xXX……0xXX,其中被修改的密鑰為后4個Byte內存地址數據。
IAP程序中密鑰KEY_A格式為16×6的無符號char型數組,MCU上電后將數組保存在內存中,程序運行過程中可能導致值變化的原因:①數據越界;②指針偏移量錯誤。分析后無數據越界風險和指針偏移量錯誤。
使用測試程序對程序調用密鑰時間及密鑰內存位置修改進行監控,監控發現修改的密鑰為4個Byte內存地址數據。研究儀器運行邏輯后,發現密鑰修改時間為串口跳轉指令發出后,即程序跳轉時密鑰數據被改變。進行程序.map分析,IAP程序中的密鑰內存地址和BOOT程序的Timer_1ms變量內存地址一致,懷疑為此變量值變化覆蓋導致,BOOT和IAP程序.map文件如圖4所示。
Timer_1ms為無符號整型變量,占用4字節數,內存保存地址為0x2000003C—0x2000003F,和密鑰KEY_A內存保存0x20000038—0x20000097地址重合,參數占用地址及字節數見表1。判斷為跳轉指令發送時BOOT程序定時器中斷中毫秒定時器變量覆蓋IAP內存常量導致密鑰數據出錯。
驗證過程如下,增加跳轉延遲時間至500 ms后進行FLASH偏移,監控程序運行后記錄密鑰被修改位置為0x01,0xF3轉換為十進制499,為設置的延時時間,即跳轉后毫秒定時器中斷進入了499次,然后進行中斷向量偏移,延時跳轉程序如圖5所示。
5 解決措施
分析測試后得出,Timer_1ms變量只在BOOT程序中定時器中斷使用,未在IAP正式程序中使用,不能簡單地進行關總中斷操作。修改程序并實測,結果分析如下:當關總中斷時,會導致程序不響應中斷,但是中斷標志位會依然置位,當正式程序IAP運行并打開總中斷時,程序會立即響應中斷,但是部分中斷無法找到中斷處理函數,程序卡死,導致程序無法運行,所以不能簡單地進行開關總中斷處理。
單獨關斷變量所在定時器中斷,經測試驗證后得出:在跳轉函數指針之前需要將引起IAP中內存變量變化的中斷源進行關閉,上述問題中的中斷源為定時器4,即跳轉函數指針前將定時器4失能,經測試驗證后問題得到解決,疲勞測試無異常。失能程序如圖6所示。
6 結束語
在包含有BOOT和IAP程序的嵌入式系統中,在正常使用或程序在線升級完畢需要跳轉時,當BOOT程序接收到跳轉指令后程序進行跳轉函數指針偏移前,需要將可能會觸發中斷的中斷源進行關閉,然后在正式IAP程序中重新進行初始化使用,否則會導致在跳轉過程中進入部分中斷,中斷中所產生的變量值變化會導致IAP程序中的常量值發生改變,從而引發系統工作異常。
參考文獻:
[1] 譚澤斌.基于STM32的智能卡讀寫器的設計[D].北京:北京郵電大學,2020.
[2] 謝東江,劉奭奭,李劼科.基于RFID技術的智能輸送線系統設計[J].機電工程技術,2023,52(10):170-173.
[3] 戴彩艷,蔡堅勇,陳銀燕,等.13.56MHz RFID讀寫器天線的設計與仿真[J].無線電工程,2013,43(1):42-45.
[4] 許鍇.基于RFID技術的圖書館智能管理系統[J].現代電子技術,2020,43(23):6-10.
[5] 星翼電子科技有限公司(正點原子).STM32 MAP文件淺析[Z].
[6] 李婷.RFID關鍵技術及其應用研究[D].南京:南京郵電大學,2017.
[7] 岳濤.RFID關鍵技術及其在現代物流中的應用研究[D].武漢:武漢理工大學,2010.
[8] 童冠,趙葉,佘帆.基于RFID技術的電力企業物資倉儲管理優化方案[J].海峽科學,2023(10):46-48,85.
[9] 謝斐.RFID技術在醫院設備管理中的應用探析[J].科技創新與應用,2020(34):165-166.
[10] 陳爍維,徐煒琳,王文娟.RFID射頻技術在冷鏈物流倉儲中的應用[J].內蒙古科技與經濟,2023(12):101-103.
[11] 郭夢伊.基于RFID技術的物流倉儲體系研究[J].電子測試,2022(15):137-139.
[12] 薛竹溪.基于RFID技術的富士康倉儲管理應用研究[D].太原:山西財經大學,2023.
[13] 王思文.基于RFID技術的備件倉儲管理系統設計與實現[D].大連:大連海事大學,2019.
[14] 徐明.RFID技術在供應鏈領域的應用探究[J].物流工程與管理,2023,45(5):64-66.