调试了包括驱动,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_RFID
tristate “Runbo rfid driver”
default y
—help—
Say Y here for supporting Runbo rfid.
if RUNBO_RFID
config HKT_RFID
tristate “HKT rfid Driver”
default y
help
This 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