0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Android架构的基础上实现POS机刷卡器读芯片驱动的设计

电子设计 来源:郭婷 作者:电子设计 2018-12-04 09:01 次阅读

引言

Google公司在2007年11月5日推出了开源的An-droid操作系统,它是基于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所示。

在应用程序层中包含了Android系统的基础应用程序,所有的应用程序都是用Java编写的。

应用框架层是开发人员从事Android应用程序开发的基础,该层简化了组件重用,可以直接使用系统提供的组件快速的进行应用程序开发,主要包括ActivityManager,Content Provider,View System等。

在系统运行库层中包括了两个部分:程序库和运行时库,主要由Dalvik Java 虚拟机和基础的Java 类库组成 ,为应用程序提供服务和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(高电平)。

3 驱动设计

驱动程序是Linux内核与硬件之间的接口,直接对硬件设备进行操作,同时对上层应用程序提供接口。

Android的设备驱动主要完成以下功能:初始化和释放设备;读取硬件设备数据;将内核数据写入到硬件设备;读取应用程序数据传送给设备文件等。在Android系统中刷卡器驱动应包括:Linux内核驱动程序、HAL(硬件抽象层)模块、JNI方法、application framework硬件访问服务。刷卡器阅读芯片与开发板的连接框图如图1所示。

在Android架构的基础上实现POS机刷卡器读芯片驱动的设计

3.1 Linux内核刷卡器阅读芯片驱动程序

刷卡器的基本功能就是读取磁卡中的数据进行解码,并将得到的解码数据传递给上层应用程序。An-droid为了保护一些硬件提供商的知识产权提出了HAL层的概念,避开了Linux的GPL束缚,基本的思路是把控制硬件的动作都放在Android HAL层,而Linux driver只是完成一些简单的数据交换。这里的Linux内核刷卡器驱动程序同样也只是一个的字符设备驱动,设备以模块的形式存在Linux内核中,模块的加载和卸载通过stat-ic int_init msr_init(void)和static void_exit msr_exit(void)函数实现,static int_msr_setup_dev(structmsr_Android_dev* dev)函数对设备进行初始化,函数static long msr_ioctl(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取得特定模块的operations,再callback 这些操作函数。在HAL 层包括许多模块,而runtime 只需要说明类型,即module ID,就可以取得相应模块的operations.在HAL层中需要具体实现刷卡器的读卡操作。首先需要查找到开始标志0x0b,然后将磁道1中的数据放到buf1中,用同样的方法可以将磁道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_de-vice_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以读取芯片数据为例,简单介绍各层之间的调用。

在Android架构的基础上实现POS机刷卡器读芯片驱动的设计

4 结语

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    453

    文章

    50301

    浏览量

    421397
  • Android
    +关注

    关注

    12

    文章

    3921

    浏览量

    127089
  • Google
    +关注

    关注

    5

    文章

    1757

    浏览量

    57393
收藏 人收藏

    评论

    相关推荐

    手机刷卡器为移动支付发展锦上添花

    每到信用卡还款日,银行ATM前总会排起长队。如今,一类名为手机刷卡器的产品走俏市场,让消费者足不出户,就可以把ATM“搬”到家中。正如广告词所说的:“不受时间、空间限制,只要有无线网络的地方
    发表于 06-09 17:21

    蓝牙手刷、M-POS磁卡解码芯片首选PF52913、PF52923

    磁头过来的信号放大、处理,再让mcu进行解码。相对于传统硬解码方案来说有很节约成本,加上PF52913体积很小(4mm*4mm)是是做蓝牙刷卡器的不二之选。
    发表于 01-04 17:22

    基于RFID-RC522刷卡器的智能门禁,谁做过??

    本人的实训课题目是基于STM32的智能门禁系统,买了RFID-RC522刷卡器模块,继电器模块,可是开始写程序时,遇到好多问题了,谁有资料,分享!!!!!
    发表于 03-10 10:24

    无线POS产生了哪些影响?

    ,经过处理的信息返回到POS,从而完成用户的刷卡消费业务。为了实现上述数据交换过程,POS
    发表于 11-05 07:26

    基于VxWorks 的POS接口驱动软件设计

    本文基于VxWorks 操作系统,设计了高速路由POS 接口卡的驱动软件。研究POS 接口特点的
    发表于 07-07 14:56 8次下载

    串口/并口基础上实现51内核单片的在线编程

    串口/并口基础上实现51内核单片的在线编程摘要:详细说明利用并口模拟I2C总线协议,实现Myson MTV230
    发表于 04-12 14:01 34次下载

    pos_pos是什么意思

    本内容介绍了pos是什么意思,POS的组成,了解了pos刷卡机的相关应用
    发表于 12-21 15:49 4.1w次阅读

    WEINVIEW充电桩的应用

    本系统采用WEINVIEW MT8070iH人机界面,实现了与刷卡器、单片、上位的实时连接通讯。
    发表于 10-11 22:19 16次下载
    WEINVIEW<b class='flag-5'>在</b>充电桩<b class='flag-5'>上</b>的应用

    海科大POS刷卡这五点需要注意

      刷卡消费已经成了人们生活中不可或缺的一部分,刷卡虽然方便,但是刷卡使用的pos也存在安全隐患,下面微辰金服提醒大家使用海科大
    发表于 03-19 15:38 299次阅读

    微辰金服介绍海科大POS分类

    刷卡器:类似一款外接读卡,只要将它**智能手机音频孔建立连接后就能使用余额查询、转账汇款灯功能。手机刷卡器本身没有支付的功能,需要有支付通道的软件来配合才可以有支付、收单的功能  (4)、智能
    发表于 03-21 15:06 390次阅读

    微辰金服告诉你海科大POS有无封顶

      POS还有没有封顶?POS的封顶手续费是针对信用卡刷卡来说的。今天微辰金服为大家介绍海
    发表于 04-01 15:03 318次阅读

    【沐渥科技】网络刷卡器新品面世,刷新移动物联新生活

    物联网应用需求和身份校验普及的影响下,沐渥科技自主研发生产了一款基于网络协议传输的读卡设备——网络刷卡器,这是一款体积小巧,方便携带,即插即用,无需安装驱动,采用USB通讯,即刻响应对接客户的软件
    的头像 发表于 11-23 10:26 430次阅读
    【沐渥科技】网络<b class='flag-5'>刷卡器</b>新品面世,刷新移动物联新生活

    一文让你了解网络刷卡器的特点和优势

    网络刷卡器一款高性能的多协议电子标签读写,保持高识率的同时实现对电子标签的快速读写处理,广泛应用于物流追踪、个人身份识别、人员管理、智能停车场、门禁考勤、公交一卡通、餐饮、金融等多
    的头像 发表于 11-13 14:16 460次阅读
    一文让你了解网络<b class='flag-5'>刷卡器</b>的特点和优势

    MDB-RS232测试NAYAX的VPOS自动售货机刷卡器注意事项

    MDB-RS232测试NAYAX的VPOS自动售货机刷卡器注意事项以及必要的通信指令。给我们设计自动售货机,自助咖啡的控制系统提供了必要的指令协助,帮我客户更好的了解MDB协议。
    的头像 发表于 05-08 22:20 752次阅读
    MDB-RS232测试NAYAX的VPOS自动售货机<b class='flag-5'>刷卡器</b>注意事项

    MDB硬币,纸币接收以及MDB刷卡器等MDB设备RS-232通信PC转接盒

    电子发烧友网站提供《MDB硬币,纸币接收以及MDB刷卡器等MDB设备RS-232通信PC转接盒.pdf》资料免费下载
    发表于 09-23 17:49 0次下载