基于ARM控制器LPC2214的稅控收款機系統(tǒng)的設計
引言
稅控收款機是指具有特定稅控功能的電子收款機,它是集軟硬件為一體的嵌入式系統(tǒng),硬件設計考慮高性價比和高可靠性,軟件設計考慮系統(tǒng)的穩(wěn)定性和可靠性。根據這一原則,本文介紹了一種基于ARM控制器LPC2214的稅控收款機的設計方案。
稅控收款機硬件系統(tǒng)的設計與實現(xiàn)
稅控收款機的硬件組成框圖如圖1所示,其硬件系統(tǒng)由中央處理模塊、顯示模塊、打印模塊、電源模塊、時鐘模塊、IC卡接口、外部通訊接口(包括RS232串行接口、網絡接口、USB接口等)、蜂鳴器,以及輸入鍵盤、電子鎖、條碼掃描儀和手寫板等幾部分組成。
圖1 稅控收款機硬件框圖
中央處理模塊
中央處理模塊采用飛利浦公司基于32位ARM7TDMI-S內核的低功耗ARM處理器LPC2214。該處理器是飛利浦公司為嵌入式應用提供的高性價比微控制器解決方案,通過在ARM7TDMI-S內容基礎上擴展一系列的通用外圍器件,使系統(tǒng)費用降至最低,增強了系統(tǒng)對外部設備的支持能力。由于LPC2114集成了豐富的片上資源,所以系統(tǒng)本身的擴展大大減少,這不但減小了產品的體積,而且便于維護。
顯示模塊
作為人機交互的顯示模塊包括一個LCD主顯示屏和一個9位的VFD用戶顯示屏,其中LCD采用內置KS0107/KS0108控制器的圖形點陣式液晶,顯示分辨率為192×64,可顯示16×5個11×12點陣的漢字;VFD通過具有SPI接口的芯片HT16512進行驅動。
打印模塊
系統(tǒng)選用EPSON公司的MU110II打印機頭,供電電壓為DC24V。電機驅動采用MTD2003F,針驅動采用MTA001M,由LPC2214的通用I/O口進行控制。
電源管理模塊
系統(tǒng)采用開關電源為LPC2214提供5V電源。由于稅控收款機對掉電保護有嚴格要求,所以在電源管理模塊中設計了掉電保護電路,可以在掉電時維持系統(tǒng)正常工作一定時間。掉電時該電路會發(fā)送給處理器一個中斷,使系統(tǒng)進入掉電中斷處理程序,進行相應的掉電保護工作。
時鐘模塊
時鐘模塊采用I2C總線時鐘芯片P8563AP,在后備電池的支持下,能保證系統(tǒng)掉電后片內時鐘繼續(xù)運行。
稅控存儲器
稅控收款機需要記錄大量的數據信息,本系統(tǒng)采用了ATMEL公司具有SPI接口的Flash存儲器AT45DB321,由于LPC2214微控制器具有SPI的接口,所以能夠方便地同它相連接。設計上采用可插拔式模塊,將數據存儲模塊與系統(tǒng)主板分離。此設計的特點是當系統(tǒng)出錯時,能夠將重要數據及時轉移,降低了數據發(fā)生錯誤的幾率,提高了數據的完整性和可靠性。在稅控卡的配合下,可以將相關的數據信息轉移到另一正常工作的機器中繼續(xù)進行工作,保證數據存儲的時效性。另外,也可以在維護和檢修時采用替換法,這體現(xiàn)出很強的實用性和可操作性。
IC卡接口
通常的設計中會使用專用IC卡讀寫芯片為系統(tǒng)提供ISO7816的接口,如CTS56I01、WatchCore、TDA8020等。本系統(tǒng)沒有進行硬件擴展,充分利用LPC2214的性能特性,實現(xiàn)了符合ISO7816標準的IC卡接口功能。
智能卡芯片的接口信號包括:電源電壓(VCC)、地(GND)、復位(RST)、時鐘(CLK)、編程電壓(VPP)、輸入輸出(I/O)。如圖2所示,I/O、RST由LPC2214微控制器的通用I/O口(GPIO)來控制,通過軟件模擬數據讀寫操作時序,實現(xiàn)數據的交換,其中I/O上信號的傳輸是雙向的,所以要利用軟件根據時序不斷轉換輸入輸出的狀態(tài)。此方法具有成本低、方便靈活等特點。
其它模塊
鍵盤控制芯片采用具有SPI串行接口的ZLG7289B,該芯片可連接多達64鍵的鍵盤矩陣,可滿足本系統(tǒng)的設計要求。
由于LPC2214未集成USB控制器,因此系統(tǒng)中采用了CYPRESS公司內含USB主/從控制器、可支持全速數據傳輸的USB控制芯片SL811HS,以支持U盤和移動硬盤讀寫操作。此外,本系統(tǒng)采用RTL8019以太網控制器擴展31個以太網接口,稅控收款機相互之間可以通過網絡接口進行數據通信,并且可以和PC機的數據庫系統(tǒng)進行數據交換。
稅控收款機軟件系統(tǒng)的設計與實現(xiàn)
稅控收款機軟件結構
稅控收款機軟件采用分層次結構化、模塊化設計,依次分為業(yè)務處理層、接口層、設備驅動層和硬件平臺等4個層次。其中業(yè)務處理層完成稅控收款機具體的業(yè)務處理;接口層作為業(yè)務處理層與設備驅動層的橋梁,提供與具體硬件平臺無關的應用程序接口(API),其主要功能是對下層設備驅動程序進行封裝,并提供一些公共的函數庫;設備驅動層即BSP(Board Support Package,板級支持包),包含具體硬件平臺的各種設備驅動程序。
采用如上架構的系統(tǒng)軟件層次結構清晰,直接相鄰的上下層之間存在依賴關系,不相鄰的上下層之間沒有依賴關系。同層各模塊之間的調用通過預定義的模塊輸出接口函數實現(xiàn),各模塊之間的耦合度低,具有良好的可移植性和可擴充性。如果要針對不同的行業(yè)設計不同的機型或根據需要擴充系統(tǒng)功能時,只需修改業(yè)務處理層,接口層和設備驅動層均無需修改;如果是變換了硬件平臺,則只需修改設備驅動層和接口層,業(yè)務處理層無需修改。
圖2 稅控收款機IC卡接口
業(yè)務處理層設計
業(yè)務處理層是稅控收款機軟件架構中的最上層,與具體的硬件平臺無關,作為一個應用軟件可方便地移植到不同的硬件平臺上。該層用于實現(xiàn)商務和稅控兩大主要功能,由4個模塊組成。
主程序(主控模塊)進行系統(tǒng)自檢、軟硬件的初始化、調度運行業(yè)務處理層的其它模塊以及處理掉電數據恢復、數據整理,并控制整個軟件的流程;稅控功能模塊實現(xiàn)GB18240-2003國家標準中的稅控功能,負責機器初始化和注冊、發(fā)票的購買分發(fā)、開發(fā)票(包括退票、廢票處理)、稅控數據申報、監(jiān)控數據回送、稅務核查等;商務功能模塊由銷售子模塊、統(tǒng)計分析(報表)子模塊、設置管理子模塊以及其它一些功能子模塊組成;通訊模塊負責與運行在上位機(PC)上的稅控收款機管理系統(tǒng)進行數據通信。
接口層設計
接口層作為一個抽象層僅提供應用程序接口,不對具體硬件操作,也不處理具體業(yè)務,是針對復雜設備設計的管理程序,主要包括IC卡管理、存儲器管理、USB通訊管理等。以下詳細介紹存儲器管理中的發(fā)票存儲管理模塊。
稅控收款機要求能夠可靠存儲大量發(fā)票數據,因此發(fā)票存儲管理模塊是本系統(tǒng)的一個關鍵模塊。為了節(jié)約存儲空間,本系統(tǒng)中發(fā)票存儲系統(tǒng)采用了變長滾動存儲方法。
變長即指發(fā)票長度因各發(fā)票頭部和其所含明細的不同,占用的存儲空間大小也不同。本系統(tǒng)中發(fā)票頭部分別可能占用32、64、96字節(jié),發(fā)票最大明細數為8,每筆明細占用32字節(jié)。這樣,每張發(fā)票所占存儲空間為1個~11個32字節(jié)。發(fā)票在存儲器中的存儲位置也是以32字節(jié)為單位對齊的,兩張發(fā)票之間位置首尾相連,沒有冗余空間。
滾動存儲即指在存儲空間固定的情況下,循環(huán)利用這部分存儲空間,當所存儲的發(fā)票占用到了足夠大的空間時,新的發(fā)票可能會覆蓋掉最早存儲的發(fā)票位置。
由于發(fā)票變長存儲,所占空間大小不一,為了達到隨機訪問的目的,需要建立一張位置索引表,表中的每項指明發(fā)票的實際存儲位置,比如,位置索引表中的第n項就是第n張發(fā)票在存儲器中的位置。同時,為了加快通過發(fā)票號查找發(fā)票詳細信息的查找速度,要最大可能地減少對存儲器的訪問次數,這是提高查找速度的關鍵。本系統(tǒng)采用Hash索引表來快速定位所要查找的發(fā)票,為了解決該算法的Hash值計算沖突,另外建立了一張Hash鏈接表,此表的長度和位置索引表相同,表中每個值代表Hash值沖突的下一張發(fā)票的位置。
設備驅動層設計
設備驅動層包括直接操作外設的驅動,如IC卡、Flash、LCD、VFD、打印機、USB、鍵盤、時鐘等外設的驅動;另外還包括LPC2214內部配置驅動,如內部寄存器配置、UART配置、GPIO設置、RTC讀寫、TIMER設置等。其中ISO7816標準IC卡驅動是一個關鍵部分,它包含插卡檢測、卡上下電、卡復位和卡命令等功能。
IC卡與LPC2214微控制器的數據傳輸方式為異步半雙工字符傳輸模式,本系統(tǒng)使用軟件實現(xiàn)該功能。利用LPC2214的GPIO來軟件模擬IC卡的讀寫操作時序,進行數據交換:接收數據時將LPC2214的GPIO設置為輸入模式,使用中斷程序對I/O數據線進行采樣;發(fā)送數據時將LPC2214的GPIO設置為輸出模式,在中斷程序中直接輸出需要發(fā)送的數據位。
異常情況處理
當異常情況(如斷電、拔卡等)發(fā)生時,稅控收款機應保證數據不丟失、無差錯。本系統(tǒng)從兩方面保證了數據的可靠性。一方面,在初始化、分發(fā)發(fā)票、錄入發(fā)票、開票、報稅及完稅等關鍵步驟前先檢測電源是否正常,如已經發(fā)生掉電,系統(tǒng)停止工作;否則置標志,開始正常的步驟操作,步驟完成后,清除標志。如果步驟未完成前發(fā)生斷電或IC卡意外拔出等事件,則在下一次上電或重新操作該步驟時系統(tǒng)會檢測到標志,軟件將自動調用恢復機制,完成剩余操作,恢復丟失的數據。
另一方面,在發(fā)票打印的過程中如果出現(xiàn)掉電的情況,則需做掉電續(xù)打處理。在發(fā)票開始打印前先保存發(fā)票明細數據,置“打印未完成”標志;在打印一行數據過程中若發(fā)生掉電,掉電保護電路發(fā)出一個中斷,調用中斷例程,利用掉電保護電路所維持的工作時間保存當前打印位置,系統(tǒng)停止工作;待重新上電后檢測到“打印未完成”標志,則讀出最后一張發(fā)票明細數據,從斷電時記錄的位置繼續(xù)打印出一張完整的發(fā)票,并清除標志。
數據安全性處理
稅控收款機集商務、稅控、管理等功能于一體,對數據的傳輸和存儲要求相當高,需要能夠正確地傳輸、存儲、生成及反饋數據,因此,對安全性的要求也相當高。本系統(tǒng)的安全性設計從以下幾個方面來體現(xiàn)。
系統(tǒng)中采取了用戶權限分級管理的方法,設置了三種具有不同操作權限的角色:系統(tǒng)管理員、收款員、稅務稽查員。用戶與角色關聯(lián),用戶密碼采用6位~8位數字,密碼以密文形式存儲在Flash內。進入相應的用戶模式都要通過對應的密碼校驗,才能夠登錄稅控收款機,執(zhí)行本用戶級的相應操作。
系統(tǒng)會對Flash的數據寫入操作做讀校驗,在讀寫存儲器中的關鍵數據時比較、保存校驗和;在開機自檢和使用稅控數據時對稅控數據作數據完整性校驗。
另外,在執(zhí)行關鍵操作、外部通訊、代碼維護等操作前系統(tǒng)要對用戶進行身份鑒別,并對操作對應的事件產生審計記錄。
結語
本系統(tǒng)充分利用LPC2214本身的硬件資源,通過軟件實現(xiàn)了符合ISO7816標準的智能IC卡接口,系統(tǒng)設計符合稅控收款機國家標準GB18240-2003。整個系統(tǒng)設計結構簡潔,便于提高性能和與各種外設的連接擴展,極具競爭優(yōu)勢,產品得到了市場的認可。
參考文獻:
1.Cpc2114/2124/2212/2214 Vser Manual.philips Semicondudor,2004
2.杜春雷編著,ARM體系結構與編程,北京清華大學出版社,2002