基于Android的POS机刷卡器阅读芯片驱动研究

发布者:JoyfulExplorer最新更新时间:2013-11-04 来源: 电子设计工程 关键字:Android  POS机  刷卡器读芯片  驱动程序 手机看文章 扫描二维码
随时随地手机看文章
0 引言
    Google公司在2007年11月5日推出了开源的Androld操作系统,它是基于Linux内核的开源手机操作系统。目前,Android应用商店Android market已经拥有超过70万个应用程序,有超过10万名软件开发人员为Android开发应用程序,Android系统已经广泛运用于便携式移动设备。
    移动POS机又称无线POS,是一种RF-SIM卡终端阅读器,通过CDMA,GPRS,TCP/IP等与数据服务器相连进行工作。移动POS机具有移动性强,平均交易时间段,易于携带等特性在各大行业都已经广泛使用。将Android系统移植到POS机上,将为POS机提供更加丰富的应用和功能扩展。
    刷卡器作为POS机主要功能承担者,其驱动程序的研究和优化也直接影响到Android系统在POS机领域的发展。

1 Android系统架构
   
Android是以Linux为内核的开放式的手机操作系统,采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的Java应用程序。Android系统是由应用程序层、应用程序框架层、系统运行库层、Linux内核层组成的,系统架构如图1所示。

a.JPG


    在应用程序层中包含了Android系统的基础应用程序,所有的应用程序都是用Java编写的。
    应用框架层是开发人员从事Android应用程序开发的基础,该层简化了组件重用,可以直接使用系统提供的组件快速的进行应用程序开发,主要包括Activity Manager,Content Provider,View System等。
    在系统运行库层中包括了两个部分:程序库和运行时库,主要由Dalvik Java虚拟机和基础的Jaya类库组成,为应用程序提供服务和Java编程语言核心库。Android的核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议和驱动模型。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。

2 刷卡器工作原理
    MagTek公司的磁卡阅读器芯片21006450是一款高性能、低功耗的三轨磁条解码芯片。在对磁卡阅读芯片复位时,如果STRBOE没有置高,就需要将其置高,并将DATA拉低,然后再将STROBE置低。在复位之后仍需要将DATA强制置低,在释放DATA之前需要将STROBE置高,然后再置低。在完成上述过程后,仍需要再完成一次STROBE的置高、置底,这样才能完成复位序列。
    当读卡器芯片处在准备读卡状态时,一旦检测到三个磁通翻转,ASIC就会通过将DATA拉低来表明此时处于卡在线状态。然后就开始将磁条卡上的数据读取并存储到缓存中。对应于这种卡在线状态,控制器应当将STROBE置高。对应于STROBE的上升沿,ASIC会将DATA置高,并清除卡在线信号。控制器会将STROBE置低,然后等待DATA的下降沿,以此来表明处在缓存器就绪状态。从内存中读取或提取数据,需要用脉冲信号将STROBE输入置高再置低来驱使数据指针将数据指向DATA的管脚。在数据读取期间,当STROBE的输入为低时,DATA上的一个低电平代表1,而高电平代表0。需要说明的是,DATA进入缓存器就绪状态后,在复位之前,ASIC不会对再一次刷卡做出反应。在片上缓存(内存)中,为磁条卡的三个磁道中的每一个分配了704 b的空间,总共有2 112 b。对每条磁道而言,只有在卡上检测到1的时候才开始存储数据,在这个1之前的所有的0都不会存储进缓存。当检测到第一个1之后,每个磁道存储704 b的数据,而一旦数据超过这个长度,将会丢失超出的数据。但这并不意味着芯片的存储空间太小,确切来说,这么大的空间已经能够充分的满足符号ISO编码标准的磁条卡的需求。
    在提取数据时,STROBE是根据磁道A,磁道B,然后磁道C的顺序进行接收的。当数据指针到达3个磁道共2112位的最后位置时,它将从反方向再次循环数据。需要说明的是,数据的移出的首选顺序是磁道A、磁道B然后磁道C。ASIC并不决定刷卡的方向,只是简单的将接收的数据表示出来。然后,反方向刷卡数据的移出时是以磁道C、磁道B、磁道A的顺序进行的,这就像将一盘磁带或录音带翻带。
    在复位时,会清除ASIC上的所有数据,将所有的数据位都置为0(高电平)。
[page]

3 驱动设计
   
驱动程序是Linux内核与硬件之间的接口,直接对硬件设备进行操作,同时对上层应用程序提供接口。Android的设备驱动主要完成以下功能:初始化和释放设备;读取硬件设备数据;将内核数据写入到硬件设备;读取应用程序数据传送给设备文件等。在Android系统中刷卡器驱动应包括:Linux内核驱动程序、HAL(硬件抽象层)模块、JNI方法、application framework硬件访问服务。刷卡器阅读芯片与开发板的连接框图如图1所示。
3.1 Linux内核刷卡器阅读芯片驱动程序
   
刷卡器的基本功能就是读取磁卡中的数据进行解码,并将得到的解码数据传递给上层应用程序。Android为了保护一些硬件提供商的知识产权提出了HAL层的概念,避开了Linux的GPL束缚,基本的思路是把控制硬件的动作都放在Android HAL层,而Linux driver只是完成一些简单的数据交换。这里的Linux内核刷卡器驱动程序同样也只是一个的字符设备驱动,设备以模块的形式存在Linux内核中,模块的加载和卸载通过static int_init msr_init(void)和static void_exit msr_exit(void)函数实现,static int_msr_setup_dev(structmsr_Android_ dev*dev)函数对设备进行初始化,函数static long msr_ioctI(struct inode*inode,struct file*filp,unsigned int cmd,unsigned long arg)实现驱动程序对刷卡器的I/O控制。设备的打开、关闭及具体的代码实现可以参考《Linux设备驱动程序》。对内核配置编译后就可以在Linux内核中得到设备模块msr.o,在上层中可以通过调用这个模块来实现对刷卡器的控制。
3.2 HAL层访问内核驱动程序
   
硬件抽象层中访问不同设备内核驱动程序的模块是以*.so文件形式存在的,这样可以有效的保护硬件厂商的知识产权。在runtime(JNI部分),则向HAL取得特定模块的opeIlations,再callback这些操作函数。在HAL层包括许多模块,而runtime只需要说明类型,即module ID,就可以取得相应模块的operations。在HAL层中需要具体实现刷卡器的读卡操作。首先需要查找到开始标志0x0b,然后将磁道1中的数据放到bufl中,用同样的方法可以将磁道2,3的数据存到buf2,buf3中,磁道2最多40个字符每个5位4位数据1位奇校验,而磁道3最多107个字符每个5位4位数据1位奇校验。然后将buf中的数据补齐之后放在主寄存器中。HAL层中还需要使用static int check_msr_io(void)对I/O的状态进行检测,并对设备进行初始化static int msr_device_init(void)。具体的实现由于篇幅限制,不在进行详细介绍。
3.3 编写JNI方法访问硬件
   
从编程语言看,Android系统是由基于Java语言的Java层与基于C/C++语言的C/C++层组成的,为了使这两层相互配合、共同完成任务就必须使用Java本地接口(JNI,Java Native Interface)将这两层有机的联系起来。JNI提供了一系列接口,允许Java类与使用C/C++编写的应用程序、模块、库进行交互操作。JNI是通过函数方法映射表static const JNINativeMethod method_table,将Java本地方法和HAL层提供的C函数接口衔接起来。
3.4在application framework增加硬件访问服务
    在Android Framework或应用程序开发中所需要的主要API都是以服务的形式存在的。对应用程序来说,硬件服务是运行在一个独立的进程中的,若要调用这些服务就需要在硬件服务和应用程序之间添加通信接口。应用程序通过Interface IMsrService接口,调用硬件服务提供的Init()等函数。在刷卡器的硬件服务中是将定义的通信接口与JNI提供的接口相关联起来。同时需要将磁卡阅读芯片服务添加到系统服务中Service Manager.addService(“msr”,new MsrService()),这样应用程序就能通过Java接口调用硬件服务,实现对磁卡阅读芯片的控制。图2以读取芯片数据为例,简单介绍各层之间的调用。

b.JPG



4 结语
   
随着系统逐渐成熟,应用程序日益丰富,Android系统与POS机的结合将为POS机的发展提供更为广阔的空间。本文在分析了Android架构的基础上,分析刷卡器的工作原理,研究将POS机刷卡器阅读芯片驱动程序添加到Android系统中,为上层应用程序提供接口,实现刷卡器的功能。各层之间的接口调用衔接是整个驱动程序成功运行的基础,在驱动设计中,每编写一层都应进行测试,这样能更好的定位驱动设计中存在的不足。

关键字:Android  POS机  刷卡器读芯片  驱动程序 引用地址:基于Android的POS机刷卡器阅读芯片驱动研究

上一篇:基于MC68HC908JB8的便携式USB指纹采集仪
下一篇:基于超声波测距和PSD红外测距的智能语音导盲器

推荐阅读最新更新时间:2024-03-16 13:29

魅蓝大动作:多款机型YunOS底层被替换为Android
自从和阿里联姻了之后,魅族旗下魅蓝品牌的不少机型都采用了YunOS系统,但有趣的是,就在前些时候,参加了魅蓝E内测的煤油收到了新的系统推送,该更新直接将原来YunOS底层更换为Android。 魅族 E 除了魅蓝E之外,现在魅族又向魅蓝5、魅蓝U10和魅蓝U20等机型推送了同样的系统更新,升级完成后直接为Android 7.0。而更早之前发布的魅蓝metal、魅蓝2等机型,也将会在后续的时间里收到同样的更新。 暂且不明魅族此举的原因,难道和前阵子“魅蓝从魅族中独立出来”有关?鉴于目前Android处于移动操作系统的统治地位,魅蓝的这种做法也是可以理解的。
[手机便携]
外媒预测2018安卓手机趋势:模仿iPhone X 屏下指纹还得等等
  虽然iPhone X发布之时,其所采用的“刘海屏”设计遭到了许多反对者的吐槽,但是,从MWC2018大会来看,许多搭载类似屏幕设计 安卓 手机陆续登场,包括华硕的几款手机等。下面就随手机便携小编一起来了解一下相关内容吧。 外媒预测2018安卓手机趋势:模仿iPhone X 屏下指纹还得等等   另外,预备发布的几款 安卓 手机如华为P20系列机型、OPPO R15、LG G7以及vivo X21等几款机型都将采用“刘海屏”设计。而且,谷歌Android P预览版也显示加入了“刘海屏”的优化设计。   所以,外媒《连线》近日撰文表示,在2018年将会有大批 安卓 手机会采用“刘海屏”设计。除了“刘海屏”,仿造Animoj
[手机便携]
福布斯:WP吸取Android教训就有可能成功
    1月16日消息,美国《福布斯》杂志发表文章称,如果微软从Android系统所犯的错误中吸取教训,Windows Phone智能手机操作系统就有可能获得成功。    以下为文章详细内容:   2007年Google推出Android系统后,大多数希望享受科技变革的智能手机用户就只剩两个选择:苹果和Google。   但一个熟悉的挑战者将加入战局,而业界尚未意识到它将取得巨大成功。   微软Windows Phone 7系统市场占有率虽然远远落后于Android和iPhone,但智能手机的霸主之争,才刚刚开始。微软最近推出的Windows Phone 7.5备受好评,而Windows 8也将在今年晚些时候上市。受此
[手机便携]
谷歌停止华为使用安卓操作系统接口
最新报道说,特朗普政府把华为公司列入“实体名单”后,谷歌公司已经停止与华为公司的部分商业往来。 路透社引述知情人士的话报导说,谷歌公司已停止华为使用安卓(Android)操作系统的接口,这意味着华为不能再使用该公司开放原始码授权以外的所有硬件及软件产品。 谷歌此举将使华为立即失去对安卓操作系统的访问权限,其在海外市场销售的下一代智能手机,也将无法访问热门的应用程序和服务,包括Google Play商店和Gmail应用程序。 该知情人士表示,谷歌将停止向华为提供有关安卓及谷歌服务的技术支持和合作,该公司内部仍在讨论具体细节。 华为仍可以持续通过开放原始码授权访问安卓操作系统版本,该项授权对外开放,所有人都
[手机便携]
谷歌停止华为使用<font color='red'>安卓</font>操作系统接口
TCL旗下品牌Palm新机通过认证 预装Android8.1操作系统
     2015年1月TCL从惠普手中收购了Palm品牌,此后Palm便在公众的视野中消失了,直到最近它搞出了大新闻,确认要出Android手机了,重新获得了关注,不知道那些Palm的粉丝是否会买单了? 首先Palm的新机于6月8日通过的WiFi联盟的认证,它的手机型号为PVG100,预装Android8.1的操作系统,支持的WiFi频段为2.4GHz。 接下来是8月6日通过了FCC的认证,从认证信息看,Palm的新机PVG100支持的网络参数很多,无论是GSM、HSUPA还是LTE都被包含在内了。 考虑到谷歌昨天已经推出了最新的Android Pie正式版,而Palm新机所预装的操作系统为Android8.1,所以暗示
[手机便携]
IDC:Android份额持续增长 黑莓创新低
    北京时间8月8日凌晨消息,据市场研究机构IDC周三发布的最新报告,今年第二季度Android操作系统市场份额已达79.3%,而黑莓BlackBerry 10操作系统却创下新低,在全球仅占3%的份额。   Android系统全球市场份额继续保持强劲的增长势头,已从去年同期的69.1%增至79.3%,这部分增长主要来自中国市场。除Android外,唯一一个在第二季度实现增长的操作系统是Windows Phone,其市场份额位居第三,从去年同期的3.1%增至3.7%。   排名第四的黑莓操作系统则同比下降2%,份额仅为3%。IDC数据显示,黑莓操作系统在该季度内创下历史新低。IDC表示,黑莓需要继续投入时间和资源来获取更多的终端用
[手机便携]
基于Android 11,三星One UI 3现进入预测试阶段
三星 One UI 2.5 是该公司最新的 Android UI 版本 , 但三星已经开始跟开发者测试下一个大版本——One UI 3,基于 Android 11 系统。   三星目前正在与韩国和美国符合一定资质的合作伙伴开发者合作,在进行 One UI 3 的 “预 beta”阶段,资格仅限于希望与特定服务提供商和 Galaxy S20 系列(S20/S20+/S20 Ultra LTE/5G)的选定设备型号进行兼容性测试的开发者。   预先测试版的固件还没有推出,但三星正在邀请有兴趣的人申请成为合作伙伴开发者。一旦首个测试版推出,这些开发者将第一时间获知。一旦软件相对稳定,三星的公测版将向更多用户开放。   I
[手机便携]
嵌入式uClinux下的CAN总线设备驱动程序设计
1、uClinux操作系统概述 uClinux是Linux2.0的一个分支,它被设计用于没有MMU的微控制器领域,即被广泛应用于嵌入式Linux领域。uClinux的最大特征就是没有MMU(内存管理单元模块)。它很适合那些没有MMU的处理器,如ARM7TDMI,m68ez328等。 uClinux具有完全的TCP/IP协议栈,同时对其他许多的网络协议都提供支持。这些网络协议都在uClinux上得到了很好的实现。uClinux可以称作是一个针对嵌入式系统的优秀网络操作系统。 2、Linux驱动程序设计概述      Linux系统内核通过设备驱动程序与外围设备交互,设备驱动程序是Linux内核的一部分,它是一组数据结
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved