RK3288 android添加HAL 层导致无法进入主界面原因分析,重复打印 camsys_marvin(deaa1510) is closed

1.一般在添加HAL层的时候,都会写到JNI 层(namespace android) ,如果形参对应不上,或者JNINativeMethod格式写的  不对就会导致开机无法进入主界面,以下是终端重复打印信息内容;

[   16.010285] D1:camsys_extdev_deregister(331): Extdev(dev_id: 0x2000000) is deregister success
[   16.010307] D1:camsys_irq_disconnect(664): All thread disconnect camsys_marvin irq success!
[   16.010320] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.010329] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.010338] D1:camsys_release(763): camsys_marvin(deaa1510) is closed
[   16.021091] D1:camsys_mipiphy_clkin_cb(34): camsys_marvin mipi phy clk in turn on
[   16.021109] D1:camsys_mipiphy_clkin_cb(34): camsys_marvin mipi phy clk in turn on
[   16.021118] D1:camsys_open(739): camsys_marvin(deaa1510) is opened!
[   16.021231] E:camsys_extdev_register(239): Request RK30_PIN2_PB6(70) failed
[   16.021240] D1:camsys_extdev_register(243): Get RK30_PIN2_PB6(70) gpio(active: 1) for dev_id 0x1000000 success!
[   16.021257] D1:camsys_extdev_register(243): Get RK30_PIN0_PC1(17) gpio(active: 1) for dev_id 0x1000000 success!
[   16.021267] D1:camsys_mrv_iomux_cb(92): marvin pinctrl select: isp_dvp10bit
[   16.021375] D1:camsys_extdev_register(268): Extdev(dev_id: 0x1000000  dev_name: OV2659) register success
[   16.026568] D1:camsys_mrv_clkout_cb(394): camsys_marvin clock out(rate: 24000000Hz) turn on
[   16.027682] D1:camsys_sysctl_extdev(362): Sysctl 11 success, gpio(17) set 1
[   16.028762] E:camsys_sysctl_extdev(369): Sysctl 8 failed, because gpio is NULL!
[   16.029839] D1:camsys_sysctl_extdev(366): Sysctl 7 success, gpio(70) set 0
[   16.035357] E:camsys_i2c_write(78): i2c write dev(addr:0x60) failed!
[   16.035478] D1:camsys_sysctl_extdev(362): Sysctl 7 success, gpio(70) set 1
[   16.037545] E:camsys_sysctl_extdev(369): Sysctl 8 failed, because gpio is NULL!
[   16.038634] D1:camsys_sysctl_extdev(366): Sysctl 11 success, gpio(17) set 0
[   16.039748] D1:camsys_mrv_clkout_cb(406): camsys_marvin clock out turn off
[   16.046004] D1:camsys_extdev_deregister(331): Extdev(dev_id: 0x1000000) is deregister success
[   16.046031] D1:camsys_irq_disconnect(664): All thread disconnect camsys_marvin irq success!
[   16.046048] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.046057] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.046067] D1:camsys_release(763): camsys_marvin(deaa1510) is closed
[   16.053446] D1:camsys_mipiphy_clkin_cb(34): camsys_marvin mipi phy clk in turn on
[   16.053464] D1:camsys_mipiphy_clkin_cb(34): camsys_marvin mipi phy clk in turn on
[   16.053475] D1:camsys_open(739): camsys_marvin(deaa1510) is opened!
[   16.053581] D1:camsys_extdev_register(243): Get RK30_PIN2_PA0(56) gpio(active: 0) for dev_id 0x2000000 success!
[   16.053594] D1:camsys_mrv_iomux_cb(92): marvin pinctrl select: default
[   16.053626] D1:camsys_extdev_register(268): Extdev(dev_id: 0x2000000  dev_name: GS8604) register success
[   16.058861] D1:camsys_mrv_clkout_cb(394): camsys_marvin clock out(rate: 24000000Hz) turn on
[   16.059947] E:camsys_sysctl_extdev(369): Sysctl 11 failed, because gpio is NULL!
[   16.061038] D1:camsys_sysctl_extdev(366): Sysctl 8 success, gpio(56) set 1
[   16.062113] E:camsys_sysctl_extdev(369): Sysctl 7 failed, because gpio is NULL!
[   16.067930] E:camsys_i2c_write(78): i2c write dev(addr:0x20) failed!
[   16.069162] E:camsys_i2c_write(78): i2c write dev(addr:0x20) failed!
[   16.069287] E:camsys_sysctl_extdev(369): Sysctl 7 failed, because gpio is NULL!
[   16.071372] D1:camsys_sysctl_extdev(362): Sysctl 8 success, gpio(56) set 0
[   16.072448] E:camsys_sysctl_extdev(369): Sysctl 11 failed, because gpio is NULL!
[   16.073552] D1:camsys_mrv_clkout_cb(406): camsys_marvin clock out turn off
[   16.092091] D1:camsys_extdev_deregister(331): Extdev(dev_id: 0x2000000) is deregister success
[   16.092128] D1:camsys_irq_disconnect(664): All thread disconnect camsys_marvin irq success!
[   16.092146] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.092156] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.092165] D1:camsys_release(763): camsys_marvin(deaa1510) is closed
[   16.096348] D1:camsys_mipiphy_clkin_cb(34): camsys_marvin mipi phy clk in turn on
[   16.096364] D1:camsys_mipiphy_clkin_cb(34): camsys_marvin mipi phy clk in turn on
[   16.096372] D1:camsys_open(739): camsys_marvin(deaa1510) is opened!
[   16.096449] D1:camsys_extdev_register(243): Get RK30_PIN2_PB7(71) gpio(active: 0) for dev_id 0x2000000 success!
[   16.096463] D1:camsys_extdev_register(243): Get RK30_PIN0_PC1(17) gpio(active: 1) for dev_id 0x2000000 success!
[   16.096502] rockchip_gpio_set:GPIO7-13 level = 1
[   16.096507] rockchip_gpio_direction_output:set GPIO7-13 level 1
[   16.096517] rk32_iomux_bit_op:GPIO7-13,reg=0x70,data=0xc000000,result=0x1
[   16.096525] rockchip_pmx_gpio_set_direction:gpio_direction for pin 229 as gpio7-13 to output,data=0x3024,result=0x3024
[   16.096532] D1:camsys_mrv_iomux_cb(92): marvin pinctrl select: isp_mipi_fl
[   16.096557] D1:camsys_extdev_register(268): Extdev(dev_id: 0x2000000  dev_name: IMX214) register success
[   16.101717] D1:camsys_mrv_clkout_cb(394): camsys_marvin clock out(rate: 24000000Hz) turn on
[   16.102795] D1:camsys_sysctl_extdev(362): Sysctl 11 success, gpio(17) set 1
[   16.103861] E:camsys_sysctl_extdev(369): Sysctl 8 failed, because gpio is NULL!
[   16.104932] D1:camsys_sysctl_extdev(366): Sysctl 7 success, gpio(71) set 1
[   16.110255] E:camsys_i2c_write(78): i2c write dev(addr:0x20) failed!
[   16.111458] E:camsys_i2c_write(78): i2c write dev(addr:0x20) failed!
[   16.111572] D1:camsys_sysctl_extdev(362): Sysctl 7 success, gpio(71) set 0
[   16.113642] E:camsys_sysctl_extdev(369): Sysctl 8 failed, because gpio is NULL!
[   16.114731] D1:camsys_sysctl_extdev(366): Sysctl 11 success, gpio(17) set 0
[   16.115836] D1:camsys_mrv_clkout_cb(406): camsys_marvin clock out turn off
[   16.122016] D1:camsys_extdev_deregister(331): Extdev(dev_id: 0x2000000) is deregister success
[   16.122035] D1:camsys_irq_disconnect(664): All thread disconnect camsys_marvin irq success!
[   16.122045] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.122053] D1:camsys_mipiphy_clkin_cb(36): camsys_marvin mipi phy clk in turn off
[   16.122060] D1:camsys_release(763): camsys_marvin(deaa1510) is closed

2.JNINativeMethod  方法格式一定要写对!!!!

下面给出一段案例:

#include "jni.h"    
#include "JNIHelp.h"    
#include "android_runtime/AndroidRuntime.h"    
#include <utils/misc.h>    
#include <cutils/log.h>    
#include <hardware/hardware.h>    
#include <hardware/iic.h>    
#include <stdio.h>  
  
namespace android    
{    

	struct iic_device *iic_dev = NULL;

    static void iic_setVal(JNIEnv* env, jobject clazz, jint slaveAddr, jint regAddr, jint databuf) {

		if(!iic_dev) {
			ALOGE("iic JNI: device is not open.");    
		}
		iic_dev->iic_write(iic_dev,slaveAddr,regAddr,databuf);
    }

    static jint iic_getVal(JNIEnv* env, jobject clazz,jint slaveAddr, jint regAddr) {

		unsigned char data[1] = {0};
    	iic_dev->iic_read(iic_dev,slaveAddr,regAddr,data);

		if(!iic_dev) {
            ALOGE("iic JNI: device is not open.");
		} 
		return data[0];
    }

	
    /*通过硬件模块ID来加载指定的硬件抽象层模块并打开硬件*/    
    static jboolean iic_init(JNIEnv* env, jclass clazz) {
    
 		iic_module_t *module;
		int err;
		err = hw_get_module(IIC_HARDWARE_MODULE_ID,(const struct hw_module_t**)&module);
		if (err != 0) {
			ALOGE("Error acquiring iic hardware module: %d", err);
			return 0;
		}

		err = iic_open(&(module->common), &iic_dev);
		if (err != 0) {
			ALOGE("Error opening iic hardware module: %d", err);
			return 0;
		}  
        ALOGE("iic device is opening...");    
        return 1;         
    }
        /*JNI方法表*/    
    static const JNINativeMethod method_table[] = {    
        {"init_native", "()Z", (void*)iic_init},
        {"setVal_native", "(III)V", (void*)iic_setVal},
        {"getVal_native", "(II)I", (void*)iic_getVal},
    };
    /*注册JNI方法*/    
    int register_android_server_IICService(JNIEnv *env) {    
            return jniRegisterNativeMethods(env, "com/android/server/IICService", method_table, NELEM(method_table));    
    } 
};

static jboolean iic_init(JNIEnv* env, jclass clazz);=  {"init_native", "()Z", (void*)iic_init},

static void iic_setVal(JNIEnv* env, jobject clazz, jint slaveAddr, jint regAddr, jint databuf);= {"setVal_native", "(III)V", (void*)iic_setVal},

static jint iic_getVal(JNIEnv* env, jobject clazz,jint slaveAddr, jint regAddr);=  {"getVal_native", "(II)I", (void*)iic_getVal},
 

各种形参类型一定要对应上,以及JNI字段描述符(JavaNative Interface FieldDescriptors);只要写错一点点,都会导致无法进入主界面,或者app 不正常!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值