李小魁,韩大伟
(河南工程学院,郑州451191)
POS系统广泛应用于商场、超市、专卖店、餐饮等连锁企业的实时业务处理和信息管理中.目前,主流的有线通信线路POS系统有两个缺点:一是ATM机和POS机的架设受线路约束,无法实现灵活部署;二是有线线路提供的是专用信道,而业务数据属于突发流量,信道利用率低,通信成本高[1].
本文提出一种基于S3C2440硬件平台与 Windows CE操作系统的无线POS机的系统设计方案,采用Wi-Fi和GPRS相结合的方式,可解决传统的POS机只能在固定场合使用的问题,使POS终端不再受有限通信网的限制.
本系统利用Windows CE典型的并行开发方法[2]进行设计,如图1所示.
采用结构化的设计思想及相应技术,将复杂的系统设计转化为各模块设计和数据结构设计.硬件开发、系统定制、应用程序开发三个阶段[3]的工作都分别完成后,将定制的操作系统和开发的应用程序最终再移植到定制的设备硬件上进行综合测试和调试.
图1 Windows CE的并行开发过程
硬件部分的设计包括S3C2440最小化系统、无线通信模块、磁卡采集模块、微型打印机模块、液晶显示模块的设计[4],总体框图如图2所示.
图2 系统总体框图
1.1.1 S3C2440硬件平台
S3C2440是三星公司推出的基于ARM920T的嵌入式处理器,主频高达400MHz,最高可达533MHz.该处理器主要面向高性价比、低功耗的应用设备.本系统的硬件平台以S3C2440为核心,具有无线网络、有线网络、液晶显示、触摸屏、USB等终端模块,其构成如图3所示.
图3 硬件终端模块示意图
图4 POS机中操作系统的开发过程
1.1.2 外围设备
无线模块:采用的是华为EC121,USB总线接口,数据传输率为153.6kbps.
磁卡:选用的是强盛QS-901,USB总线接口,满足本系统一、三磁道的基本要求.
微型打印机:RD-E系列热敏微型打印机,外接口为串口.
Windows CE操作系统具有很多特性,支持多线程,包含多种可选择的GUI,能被一系列不同的CPU编译.同时,Windows CE也具有台式计算机操作系统的特性.开发人员无需花太多的时间就可以很容易地进行基于Windows CE的软件开发.POS机中操作系统的开发过程如图4所示.
操作系统开发大部分是在SDB(标准开发板)上进行的,开发者通过新平台向导创建一个 Windows CE操作系统配置,然后在Platform Builder开发环境中增加无线POS机所需的用户特征,将涉及到的无线网卡、磁卡采集器、微型打印机、液晶显示器等驱动程序创建到新的BSP(板级支持包)上.BSP开发完成后,将其移植到S3C2440的硬件平台当中.
1.2.1 Windows CE的Bootloader
在S3C2440系统开发中,整个系统的加载启动任务由Bootloader[5]完成.本设计使用的Bootloader是Supervivi,它支持 CRAMFS、YAFFS文件系统和USB下载,能自动识别并启动Windows CE等多种嵌入式操作系统,能下载程序到内存中执行,并具有系统备份和恢复功能,非常适合批量生产中使用.
Supervivi的菜单中有烧写系统、调试、设置参数和分区等模式.它采用USB下载的方式,搭建烧写环境极为简单,并且下载速度快,使用十分方便.
1.2.2 设备的驱动程序
设备的驱动程序可以通过动态链接库(DLL)静态链接到操作系统中,也可以作为目标文件静态链接到操作系统中.
无线POS系统终端依据无线网卡与上位机或其他网络主机通信,无线网卡通过天线发送和接受数据信号.网卡驱动程序包括USB入口函数、小端口初始化、数据接收、数据发送和信息设置与查询,网卡驱动结构如图5所示.
在Windows CE系统下,驱动的安装都是由驱动控制程序读取相关注册表,然后加载到特定空间实现的.
无线网卡驱动的安装也是通过Platform Builder平台将无线网卡驱动构建到OS镜像当中,然后在相关配置文件中进行添加与修改完成的,包括自动加载注册表和相关配置文件如DIRS文件、makefile文件、SOURCES文件和.bib文件.
图5 网卡驱动结构
无线网卡驱动的设计步骤如下:
(1)在%_WINCEBOOT%\PLATFORM\CEPC\Drivers文件目录下创建一个新的文件夹KUI500,然后将写好的.c和.h文件拷贝到KUI500内;
(2)添加 makefile文件和sources文件.其中,makefile文件为:
!INCLUDE $(_MAKEENVROOT)\makefile.def
sources文件为:
WINCEREL=1
__PROJROOT = $(_PROJECTROOT)
TARGETNAME=KUI500
TARGETTYPE=NOTARGET//定义连接类型
DLLENTRY=DllEntry//相关函数从此开始
CDEFINES= $(CDEFINES)-DNDIS_MINIPORT_DRIVER
-DNDIS50_MINIPORT
-DWIN2000
-D_802_11_PROTOCOL
-DNDIS_WDM
-DWINCE
-DCE5
TARGETLIBS=\//定义所需连接库信息
%_PROJECTROOT%\cesysgen\oak\lib\x86\retail\usbd.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\commctrl.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\coredll.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\ndis.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\winsock.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\ntcompat.lib\
SOURCES=\//定义所需代码
KUI500.c\
iterrrupt.c\
request.c\
FILE_VIEW_PARAMETER_FOLDER=\
KUI500.bib\
KUI500.reg\
KUI500.def\
(3)添加.def文件:
LIBRARY KUI500
EXPORTS
DriverEntry //程序入口
USBInstallDriver //USB读驱动
USBDeviceAttach //读取设备,执行网卡驱动
(4)创建.bib文件:
MODULES
KUI500.dll$(_FLATRELEASEDIR)\KUI500.dll NK
(5)添加注册表信息如下:[HKEY_LOCAL_MACHINE\Drivers\USB\ClientDr ivers\KUI500]
"Miniport"="KUI500"
"Prefix"="NDS"
"Dll"="NDIS.dll"
[HKEY_LOCAL_MACHINE\Drivers\USB\LoadClients\VNT_RNN\Default\Default\KUI500]
"Dll"="KUI500.dll"
;USB相关信息,设备具体信息说明
[HKEY_LOCAL_MACHINE\Comm\KUI500]
"DisplayName"="WLAN Card Driver""Group"="NDIS"
"ImagePath"="KUI500.dll"
[HKEY_LOCAL_MACHINE\Comm\KUI500\Parms]
;网卡相关参数设置以及小端口具体参数设置如下:
"BusType"=dword:0
"BusNumber"=dword:0
"AdapterCFID"=dword:31841106
"NetworkAddress"=""
"DesiredSSID"=""
"AdapterType"=dword:0
"TransmitBuffers"=dword:00000020
"ReceiveBuffers"=dword:00000020
"ConnectionRate"=dword:0c
"Channel"=dword:06
"PreambleType"=dword:1
"RTSThreshold"=dword:092b
"FragThreshold"=dword:092a
"OperationMode"=dword:0
"BeaconInterval"=dword:64
"RadioControl"=dword:0
;静态IP分配设置相关信息如下:[HKEY_LOCAL_MACHINE\Comm\KUI500\Parms\
TcpIp]
"EnableDHCP"=dword:0;DHCP使能关闭
eZeroBroadcast"=dword:0
"IpAddress"="192.168.1.100";静态IP地址
"Subnetmask"="255.255.255.0";相对子网掩码分配
"DNS"="";DNS分配
"WINS"=""
BSP文件调好以后,点Build->Build Platform或者点工具栏的图标开始编译.编译完毕,若不出错,D:\WINCE500\PBWorkspaces\kui\RelDir\2440_ARMV 4I_Release文件夹中就会存在 NK.bin和NK.nb0两个文件,其中NK.bin为本设计所需的系统映像文件.
Windows CE系统的烧写过程如下:
(1)格式化 Nand Flash;
(2)重新安装BIOS;
(3)安装Eboot;
(4)装载Windows CE内核映象并运行硬件系统.
为了验证所开发的POS机的工作性能是否符合设计要求,将系统大致划分为主控板模块、触摸屏驱动模块、读卡模块、无线通信模块等4个功能模块,分别对其测试与验证.具体测试方法[6]如下:
(1)主控板测试:
①下载系统映像文件NK.bin到主控板中,查看能否正常下载;
②下载完成后加电,观察启动过程是否正常;
③启动完成后,和PC机进行文本同步传输和系统小程序操作,测试主控板是否正常工作.
(2)触摸屏驱动测试:
①主控板检测完成后,通过控制面板调试,观察触摸屏能否正常工作;
②反复启动校准,观察启动过程对触摸屏校准是否影响.
(3)读卡测试:
①将读卡器与主控板链接,反复插拔读卡器接口,观察读卡器工作情况;
②多次读取会员卡号与银行卡号,查看读卡编号情况.
(4)无线通信测试:
采用无线网络收发测试方法,测试步骤如下:
①通过PC机地址栏输入IP登录无线路由器,更改无线路由器MAC地址及IP地址,PING主机与路由器,检查主机与无线路由器的网络通信情况;
②打开路由器无线工作模式选项,设置无线工作信息,打开硬件开发平台,确定工作正常后,插上无线网卡,完成自动收索,然后在PC机运行ping 192.168.1.100-n 16进行检测,查看无线网络通讯是否正常;
③多次操作以上步骤,并观察无线路由器服务端,查看无线网卡的工作情况.
由于测试过程受到偶然因素的影响,我们对系统进行了1 000次测试.测试结果表明,系统误差率为0.1%,符合系统功能测试误差率的标准要求.可见,无线POS系统性能良好.
本文提出了一种基于S3C2440硬件平台和嵌入式Windows CE操作系统的无线POS机的系统设计方案.硬件部分重点设计主控系统和无线通信驱动模块;操作系统主要设计外围设备的驱动程序,通过新平台向导创建一个操作系统配置,然后通过增加无线POS机所需的用户特征,创建一个新的BSP,把Windows CE内核装载到硬件系统当中.最后对主控系统、无线网卡、读卡、触摸屏等重要模块进行了测试.测试结果表明,本文设计的无线POS系统性能良好,有一定的实用价值.(本研究受河南工程学院青年基金支持)
[1]许德刚,孙会峰,甄彤.物流系统中移动POS终端的设计与实现[J].微计算机信息,2007(6):149-151.
[2]张冬泉,谭南林.Windows CE实用开发技术[M].北京:电子工业出版社,2006.
[3]李梅.基于 Windows平台的POS信息系统的设计与实现[J].科技创新导报,2008(1):11-12.
[4]李小魁,王忠勇.基于嵌入式操作系统平台下的触摸屏驱动程序的开发与实现[J].计算机与数字工程,2009(4):79-82.
[5]徐晨辉,卢文科,黄浩.基于ARM-Linux嵌入式移动POS机系统中启动程序的研究与设计[J].电子测量技术,2009,32(1):77-81
[6]韦余红.无线POS机数据传输安全控制策略研究[J].通信技术,2009(2):270-271.