0 引 言
M CF52233是飛思卡爾公司推出一款主要用于工業(yè)控制的32位芯片[ 1] , 具有穩(wěn)定性好、可靠性高、接口豐富、存儲空間大等優(yōu)點, 并且集成了網(wǎng)絡(luò)模塊, 已經(jīng)廣泛應(yīng)用于工業(yè)控制領(lǐng)域。射頻識別是一種非接觸式的自動識別技術(shù), 目前已廣泛應(yīng)用于物流、制造、公共信息服務(wù)等行業(yè)[ 2]。
本系統(tǒng)通過射頻模塊讀取二代身份證的序列號, 然后對該序列號作如下處理: 第一, 使用快速查詢方法, 查詢MCF52233的Flash中已存儲的序列號。若查詢成功, 電子門自動打開, 授權(quán)刷卡人員進入, 具有門禁的功能。第二, 若門禁控制器處于脫機工作狀態(tài), 則ID序列號暫存于Flash 中, 等聯(lián)機后再把ID序列號和刷卡時間上傳到服務(wù)器; 若門禁控制器處于聯(lián)機工作狀態(tài), 則把ID 序列號和刷卡時間直接通過網(wǎng)絡(luò)或USB 接口上傳到服務(wù)器。
1 系統(tǒng)總體架構(gòu)
基于二代身份證的RFID門禁考勤系統(tǒng)(以下簡稱門禁考勤系統(tǒng))由二代身份證ID采集器、門禁控制器、服務(wù)器管理軟件和可控電子門組成, 使用二代居民身份證作為電子標簽, 無須購買專門的射頻卡, 為用戶節(jié)省成本, 使用方便。
由于門禁控制器脫機工作時, 能夠獨立識別ID 序列號,因此要預(yù)先把ID序列號下載到門禁控制器的F lash 中, 此時需要使用ID采集器預(yù)先進行ID序列號的采集。門禁控制器具有以太網(wǎng)和USB接口, 同時支持Type A標準(M ifire 1卡)和Type B 標準(二代身份證) 射頻卡, 能根據(jù)射頻卡上的信息自動識別持卡人是否被授權(quán)進入, 從而控制電子門的開和閉; 另外, 它還能記錄持卡人進出時間, 具備考勤的功能。圖1所示為門禁考勤系統(tǒng)的執(zhí)行過程。
圖1 門禁考勤系統(tǒng)總體框圖
2 系統(tǒng)硬件組成
本系統(tǒng)選擇80引腳的M CF52233作為主控芯片, 主要是由于該芯片引腳功能比較豐富, 同時包含網(wǎng)絡(luò)模塊、IIC 模塊( 用于對時鐘芯片PCF8563進行數(shù)據(jù)傳輸)和QSPI模塊(用于對液晶進行控制)。該芯片雖不包含USB模塊, 但可使用飛思卡爾生產(chǎn)的M 68HC908JB8的USB 接口。本系統(tǒng)需實現(xiàn)的功能模塊包括: GPIO、UART、QSPI、IIC、PIT、Flash及USB模塊[ 1] 。圖2 為系統(tǒng)硬件組成框圖。
圖2 系統(tǒng)硬件組成框圖
刷卡記錄包括刷卡時間和卡號, 因此使用PCF8563時鐘芯片保存系統(tǒng)時間, 同時使用MCF52233內(nèi)部的定時器( PIT) 模塊計時, 以延長PCF8563使用的紐扣電池的壽命。
3 系統(tǒng)軟件設(shè)計
3. 1 MCU方軟件設(shè)計
M CU 方軟件主要分為兩大部分: 身份證信息采集軟件和門禁控制器軟件。
身份證信息采集軟件的主要功能: 對ID序列號進行采集,并上傳到服務(wù)器方的數(shù)據(jù)庫中。
門禁控制器軟件的主要功能: ID 索引表和序列號的寫入功能、配置參數(shù)信息的寫入功能、刷卡識別并開門功能和刷卡信息上傳功能。
為了能夠在主控芯片的F lash 中快速查詢到ID序列號, 本系統(tǒng)對Flash區(qū)域進行了重新劃分(下文介紹), 其中兩區(qū)域分別用于存儲ID索引表和ID序列號。身份證信息的寫入程序主要是將ID索引表和ID 序列號兩部分信息寫入到門禁控制器中。該信息的寫入都要通過握手信號, 以確保正確的信息寫入到MCF52233的Flash中。下面主要介紹ID 序列號寫入F lash的過程。圖3所示為ID序列號寫入F lash的執(zhí)行過程。
圖3 ID序列號的寫入流程圖
配置參數(shù)信息的寫入流程與ID序列號的寫入流程一致, 這里不再描述。
刷卡識別并開門程序主要實現(xiàn)以下功能: 將當前刷卡的ID序列號讀出; 檢查該ID 序列號的有效性; 若ID序列號有效, 則開電子門并將該刷卡記錄存入到Flash中。檢查身份證ID有效性的程序主要包括三部分函數(shù): 總的查詢函數(shù)、根據(jù)特征值(由ID序列號累加求和取模得到) 到ID 索引表中取得分組首末地址函數(shù)和在分組中查詢ID序列號函數(shù)。圖4所示為查詢ID 序列號的總流程圖。
圖4 查詢ID 序列號的總流程圖
刷卡信息上傳程序主要是將刷卡的信息上傳到服務(wù)器方入庫, 以備查詢使用。上傳的信息主要包含刷卡時間和ID 序列號。如果每刷一條信息就寫入F lash, 則必定對F lash要進行頻繁的擦寫, 這樣會降低系統(tǒng)的效率。為了提高系統(tǒng)效率, 采用臨時緩沖區(qū)的方法, 只有當刷卡記錄滿一頁, 才寫入到Flash中。圖5所示為刷卡信息上傳流程圖。
圖5 刷卡信息上傳流程圖
3. 2 服務(wù)器方軟件設(shè)計
服務(wù)器方軟件主要實現(xiàn)以下的功能: ID序列號采集功能,對門禁控制器的操作, 人員信息和刷卡信息的數(shù)據(jù)庫操作功能。
ID序列號采集功能是采集ID序列號并保存到服務(wù)器的數(shù)據(jù)庫上。
門禁控制器的操作主要有以下幾個方面: 門禁控制器系統(tǒng)時間的設(shè)置、人員信息的下載、配置參數(shù)的下載和刷卡記錄的上傳等。
人員信息的數(shù)據(jù)庫操作主要包括: 人員信息的添加、修改、查詢和刪除操作。
刷卡信息的數(shù)據(jù)庫操作主要包括:刷卡記錄的查詢和刪除操作。
3. 3 服務(wù)器方數(shù)據(jù)庫設(shè)計
本系統(tǒng)的服務(wù)器方數(shù)據(jù)庫主要包含以下兩個表: 人員信息表和刷卡信息表。
人員信息表用于保存人員的基本信息, 必需包含字段: 人員編號、姓名、性別、ID序列號, 其中人員編號是主鍵, 用于唯一標識每條記錄。各字段的長度如下: 人員編號10字節(jié), 姓名10 字節(jié), 性別1字節(jié), ID序列號16字節(jié)。
刷卡信息表用于保存刷卡信息。刷卡記錄通過以下方式獲得: 服務(wù)器讀取門禁控制器中的刷卡信息(僅包含ID序列號和刷卡時間), 根據(jù)ID序列號查詢?nèi)藛T信息表, 獲得人員編號和姓名,然后同刷卡時間一并存入到刷卡信息表中。刷卡信息表包含以下字段: 人員編號10字節(jié), 姓名10字節(jié), 刷卡時間(日期型)。
4 設(shè)計要點的討論
4. 1 F lash分配設(shè)計
M CF52233是Co ldFire 的一款芯片, 其可尋址4GB 的地址空間, 地址范圍為0x00000000 ~ 0xFFFFFFFF。該芯片具有256KB的F lash和32KB的SRAM, 其Flash存儲器的地址范圍是0x00000000~ 0x0003FFFF[3] 。本系統(tǒng)的Flash 存儲器劃分為5大部分: 程序區(qū)域、門禁控制器配置區(qū)域、ID索引表區(qū)域、ID 序列號區(qū)域和刷卡記錄信息區(qū)域, 具體的劃分如表1所示。
表1 Flash區(qū)域劃分
ID 索引表每項為8字節(jié), 分別存放每組的起始地址和結(jié)束地址; 每個ID序列號為16個字節(jié), 存放8字節(jié)的ID 號和預(yù)留8字節(jié); 每條刷卡記錄信息為16個字節(jié), 存放8 字節(jié)的刷卡時間和8字節(jié)的ID序列號。
4. 2 ID序列號查詢過程
為了能夠在MCF52233的Flash中快速查找到匹配的ID序列號, 作者對幾種常用的查詢方法進行比較, 發(fā)現(xiàn)異或和累加和取模的查詢效率比較高。通過高端軟件模擬大量數(shù)據(jù), 計算標準差偏移程度, 最終得到累加和取模的效率更高。因此, 本系統(tǒng)采用累加和取模的方法得到該ID序列號的特征值, 在Flash中把ID序列號分為兩部分存儲: ID索引表和ID序列號表。ID索引表中存儲的是模相同的ID 序列號在Flash中的起始地址和結(jié)束地址。圖6所示為查詢ID序列號的詳細執(zhí)行過程。
圖6 ID序列號的查詢流程圖
ID序列號查詢過程調(diào)用以下函數(shù):
u int8 SelectID( u int8 personID[ ], u int8 n leng th)
其功能為: 根據(jù)給定的ID 序列號, 查詢Flash的ID序列號表中是否存在該ID序列號。參數(shù)personID為要查詢的ID序列號數(shù)組; n length為ID序列號的字節(jié)數(shù)。
SelectID內(nèi)部又調(diào)用以下兩個函數(shù):
( 1) u int8 FetchIDGroupAddressFrom IDIndex ( uint8 nIndexVa lue, uint32* pH eadAddr, u int32* pEndAddr)。
其功能為: 根據(jù)ID序列號的特征值取得該ID序列號所在分組的首末地址。參數(shù)nIndexValue 為ID 序列號的特征值;pH eadAddr為ID 序列號所在分組的首地址; pEndAddr為ID 序列號所在分組的末地址。
( 2) uin t8 Se lec tIDFrom IDGroup( uin t8* pH eadlAddr, u int8* pEndAddr, u int8 pe rsonID[ ], u int8 nLeng th)。
其功能為在ID序列號分組中查詢是否存在指定的ID序列號。參數(shù)pH ead lAddr為ID分組的首地址; pEndAddr為ID分組的末地址; personID為要查詢的ID 序列號的數(shù)組; leng th 為ID序列號的字節(jié)數(shù)。
5 結(jié)束語
本系統(tǒng)采用全國統(tǒng)一發(fā)行的第二代身份證作為RFID識別的電子標簽, 集成了以太網(wǎng)和USB 接口, 具有“脫機”和“聯(lián)機”兩種工作狀態(tài), 同時具有門禁和考勤的功能。本系統(tǒng)經(jīng)半年的實際使用表明能夠在現(xiàn)場高效、穩(wěn)定地運行。本文對局域網(wǎng)內(nèi)的嵌入式系統(tǒng)應(yīng)用、現(xiàn)有只讀卡系統(tǒng)的升級換代以及二代身份證的應(yīng)用擴展具有參考價值。