新闻中心

EEPW首页 > 测试测量 > 设计应用 > 基于Android的POS机刷卡器阅读芯片驱动研究

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

作者:时间:2013-10-23来源:网络收藏

3 驱动设计
是Linux内核与硬件之间的接口,直接对硬件设备进行操作,同时对上层应用程序提供接口。的设备驱动主要完成以下功能:初始化和释放设备;读取硬件设备数据;将内核数据写入到硬件设备;读取应用程序数据传送给设备文件等。在系统中刷卡器驱动应包括:Linux内核、HAL(硬件抽象层)模块、JNI方法、application framework硬件访问服务。刷卡器阅读芯片与开发板的连接框图如图1所示。
3.1 Linux内核刷卡器阅读芯片
刷卡器的基本功能就是读取磁卡中的数据进行解码,并将得到的解码数据传递给上层应用程序。为了保护一些硬件提供商的知识产权提出了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以读取芯片数据为例,简单介绍各层之间的调用。

本文引用地址:http://www.eepw.com.cn/article/192744.htm

b.JPG



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

linux相关文章:linux教程


pos机相关文章:pos机原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭