基于ARM控制器LPC2214的税控收款机系统的设计与实现
图2 税控收款机IC卡接口
业务处理层设计
业务处理层是税控收款机软件架构中的最上层,与具体的硬件平台无关,作为一个应用软件可方便地移植到不同的硬件平台上。该层用于实现商务和税控两大主要功能,由4个模块组成。
主 程序(主控模块)进行系统自检、软硬件的初始化、调度运行业务处理层的其它模块以及处理掉电数据恢复、数据整理,并控制整个软件的流程;税控功能模块实现 GB18240-2003国家标准中的税控功能,负责机器初始化和注册、发票的购买分发、开发票(包括退票、废票处理)、税控数据申报、监控数据回送、税 务核查等;商务功能模块由销售子模块、统计分析(报表)子模块、设置管理子模块以及其它一些功能子模块组成;通讯模块负责与运行在上位机(PC)上的税控 收款机管理系统进行数据通信。
接口层设计
接口层作为一个抽象层仅提供应用程序接口,不对具体硬件操作,也不处理具体业务,是针对复杂设备设计的管理程序,主要包括IC卡管理、存储器管理、USB通讯管理等。以下详细介绍存储器管理中的发票存储管理模块。
税控收款机要求能够可靠存储大量发票数据,因此发票存储管理模块是本系统的一个关键模块。为了节约存储空间,本系统中发票存储系统采用了变长滚动存储方法。
变 长即指发票长度因各发票头部和其所含明细的不同,占用的存储空间大小也不同。本系统中发票头部分别可能占用32、64、96字节,发票最大明细数为8,每 笔明细占用32字节。这样,每张发票所占存储空间为1个~11个32字节。发票在存储器中的存储位置也是以32字节为单位对齐的,两张发票之间位置首尾相 连,没有冗余空间。
滚动存储即指在存储空间固定的情况下,循环利用这部分存储空间,当所存储的发票占用到了足够大的空间时,新的发票可能会覆盖掉最早存储的发票位置。
由 于发票变长存储,所占空间大小不一,为了达到随机访问的目的,需要建立一张位置索引表,表中的每项指明发票的实际存储位置,比如,位置索引表中的第n项就 是第n张发票在存储器中的位置。同时,为了加快通过发票号查找发票详细信息的查找速度,要最大可能地减少对存储器的访问次数,这是提高查找速度的关键。本 系统采用Hash索引表来快速定位所要查找的发票,为了解决该算法的Hash值计算冲突,另外建立了一张Hash链接表,此表的长度和位置索引表相同,表 中每个值代表Hash值冲突的下一张发票的位置。
设备驱动层设计
设备驱动层包括直接操作外设的驱动,如IC卡、Flash、LCD、 VFD、打印机、USB、键盘、时钟等外设的驱动;另外还包括LPC2214内部配置驱动,如内部寄存器配置、UART配置、GPIO设置、RTC读写、 TIMER设置等。其中ISO7816标准IC卡驱动是一个关键部分,它包含插卡检测、卡上下电、卡复位和卡命令等功能。
IC卡与LPC2214 微控制器的数据传输方式为异步半双工字符传输模式,本系统使用软件实现该功能。利用LPC2214的GPIO来软件模拟IC卡的读写操作时序,进行数据交 换:接收数据时将LPC2214的GPIO设置为输入模式,使用中断程序对I/O数据线进行采样;发送数据时将LPC2214的GPIO设置为输出模式, 在中断程序中直接输出需要发送的数据位。
异常情况处理
当异常情况(如断电、拔卡等)发生时,税控收款机应保证数据不丢失、无差错。本系统 从两方面保证了数据的可靠性。一方面,在初始化、分发发票、录入发票、开票、报税及完税等关键步骤前先检测电源是否正常,如已经发生掉电,系统停止工作; 否则置标志,开始正常的步骤操作,步骤完成后,清除标志。如果步骤未完成前发生断电或IC卡意外拔出等事件,则在下一次上电或重新操作该步骤时系统会检测 到标志,软件将自动调用恢复机制,完成剩余操作,恢复丢失的数据。
另一方面,在发票打印的过程中如果出现掉电的情况,则需做掉电续打处理。在发票 开始打印前先保存发票明细数据,置“打印未完成”标志;在打印一行数据过程中若发生掉电,掉电保护电路发出一个中断,调用中断例程,利用掉电保护电路所维 持的工作时间保存当前打印位置,系统停止工作;待重新上电后检测到“打印未完成”标志,则读出最后一张发票明细数据,从断电时记录的位置继续打印出一张完 整的发票,并清除标志。
数据安全性处理
税控收款机集商务、税控、管理等功能于一体,对数据的传输和存储要求相当高,需要能够正确地传输、存储、生成及反馈数据,因此,对安全性的要求也相当高。本系统的安全性设计从以下几个方面来体现。
系 统中采取了用户权限分级管理的方法,设置了三种具有不同操作权限的角色:系统管理员、收款员、税务稽查员。用户与角色关联,用户密码采用6位~8位数字, 密码以密文形式存储在Flash内。进入相应的用户模式都要通过对应的密码校验,才能够登录税控收款机,执行本用户级的相应操作。
系统会对Flash的数据写入操作做读校验,在读写存储器中的关键数据时比较、保存校验和;在开机自检和使用税控数据时对税控数据作数据完整性校验。
另外,在执行关键操作、外部通讯、代码维护等操作前系统要对用户进行身份鉴别,并对操作对应的事件产生审计记录。
电子技术,半导体集成电路,电子工程师,互动交流 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)