Android RFID调试总结
调试了包括驱动,jni层,当然也熟悉了下应用层。
1. 驱动层包括修改:
device/eastaeon/aeon6735_65c_l/init.project.rc //去掉原来修改权限的语句
device/mediatek/mt6735/init.mt6735.rc //修改权限,不然可以open不了
chmod 0777 /dev/ttyMT2
chown system system /dev/ttyMT2
chmod 0777 /dev/uart_rfid
kernel-3.10/arch/arm64/configs/aeon6735_65c_l_debug_defconfig ////加入编
CONFIG_RUNBO_RFID=y
CONFIG_HKT_RFID=y
kernel-3.10/drivers/misc/mediatek/Kconfig.drivers //增加Kconfig, 在mtk平台,不加可能导致不会编译
#Start [chenxw,2015-04-25]Add rfid driver.
menuconfig RUNBO_RFIDtristate "Runbo rfid driver"default y---help---Say Y here for supporting Runbo rfid.if RUNBO_RFIDconfig HKT_RFIDtristate "HKT rfid Driver"default yhelpThis is the pr9200 rfid driver.endif #End
kernel-3.10/drivers/misc/mediatek/Makefile.mt6735 //增加目录下的Makefile
#Start [chenxw,2015-04-25]Add rfid driver.
obj-$(CONFIG_RUNBO_RFID) += rfid/#End
kernel-3.10/drivers/misc/mediatek/rfid/Makefile //添加在附件 :rfid_driver.rar
kernel-3.10/drivers/misc/mediatek/rfid/rfid.c //添加在附件,只做上下电,读取数据在uart驱动中做
2.JNI修改,有两种方法:
1.一种是在系统的加载的时候加入系统,这种是编入系统的
2.一种是生成SO文件,在APK调用的时候加载进系统。
注意:
jni的声明的函数要和java声明的函数一一对应。
1.编入系统:
(1). 主要代码:android_hardware_Rfid.cpp
(2). frameworks/base/api/current.txt
修改framework/base下面的api要注意更新api/current.txt文件, 如果修改了Android原有API的 ,需要update frameworks/base/api/current.txt。
否则编译被中断并出现编译错误提示, 可以通过运行 make update-api后,自动更新此文件,检查确认正确后,跟代码一起提交即可。
public class Rfid{
ctor public Rfid()method public java.lang.String getMessage();method public int sendMessage(java.lang.String);method public void intercomPowerOff();method public void intercomPowerOn();
}
(3) . frameworks/base/core/jni/Android.mk
LOCAL_SRC_FILES += android_hardware_Intercom.cpp //加入编译
(4).frameworks/base/core/jni/AndroidRuntime.cpp
extern int register_android_hardware_Intercom(JNIEnv* env);
/register_android_hardware_Intercom 类中加入:
REG_JNI(register_android_hardware_Intercom), //使系统在启动的时候就加载JNI库
2.生成SO文件,与APK一起也可以:RfidJNI.rar
apk里面带有SO文件,只要有节点就可以打开,进行运行,直接在目录下mm就可以生成动态库。
3.rfid的linux c程序,external目录下
附件rfid.rar