6. sensor调试日志

这篇博客详细介绍了Android传感器的调试方法,包括查看传感器上报数据、驱动加载、阈值设定以及算法库加载和校准过程。通过系统日志分析了地磁传感器的数据变化,并展示了如何跟踪和定位算法库的问题。同时,文中还提到了不同Android版本下的传感器驱动添加方法,如适用于Android O和M/N的示例。
摘要由CSDN通过智能技术生成
注
	epl259x的驱动可以用于
	epl2590
	MN66213
	MN26233TKDN	- id = 0x91
	MN25713EKDN	- id = 0x81
	
	8975	// 4个手势方向 - 4颗sensor排列
	2219	// 4个手势方向
	
	als 室内光照下应该为700左右
	ps	底噪值应该为700左右 - *#*#3646633#*#*  *#*#889988#*#* -> Hardware Testing ->Sensor ->Light/Proximity Sensor ->Ps Calibration ->Ps Calibration -> Calibration
		阈值如果是(500,800),底噪700
		靠近1500
		远离1200
	
	epl_sensor.ps.integration_time = EPL_PS_INTT_144;	// 272 - qk
    dynk_low_offset = 500;		// 100 - qk
    dynk_high_offset = 800;		// 300 - qk
	
一、新增驱动方法一_适用androidO(示例: msensor mmc5603x)
	1.添加kernel-4.4\drivers\misc\mediatek\sensors-1.0\magnetometer\mmc5603x文件夹(mmc5603x.c、mmc5603x.h、Kconfig、Makefile四个文件)
		st480.c
		st480.h
		Kconfig		建宏--MTK_MMC5603X
		Makefile	
		
	2.kernel-4.4\drivers\misc\mediatek\sensors-1.0\magnetometer\Kconfig 添加:
		+ 	source "drivers/misc/mediatek/sensors-1.0/magnetometer/mmc5603x/Kconfig"
	
	3.kernel-4.4\drivers\misc\mediatek\sensors-1.0\magnetometer\Makefile 添加:
		+ 	obj-$(CONFIG_MTK_MMC5603X)      +=  mmc5603x/
		
	
	4.kernel-4.4\arch\arm\configs\k39tv1_bsp_1g_debug_defconfig、k39tv1_bsp_1g_defconfig 修改
		+	CONFIG_CUSTOM_KERNEL_MAGNETOMETER=y
		+	CONFIG_MTK_MMC5603X=y
	
	5.添加vendor\microhand\msensor\mmc5603x_32bit文件夹(libmemsicd5603x.so一个文件,供应商提供)
	
	6.device\mediateksample\k39tv1_bsp_1g\device.mk	添加,将算法库拷贝到指定目录
		+	#add by msensor mmc5603x
		+	PRODUCT_COPY_FILES += vendor/microhand/msensor/mmc5603x_32bit/libmemsicd5603x.so:vendor/lib/libmemsicd5603x.so
		
	7.device\mediateksample\k39tv1_bsp_1g\ProjectConfig.mk
		+	CUSTOM_KERNEL_MAGNETOMETER=yes
	
二、新增驱动方法二_适用androidM/N(示例: msensor st480)
	1.添加kernel-3.18\drivers\misc\mediatek\magnetometer\st480文件夹(包含st480.c、st480.h、Kconfig、Makefile四个文件)
		st480.c
		st480.h
		Kconfig		建宏--MTK_ST480
		Makefile	
		
	2.kernel-3.18\drivers\misc\mediatek\magnetometer\Kconfig 添加:
		+ source "drivers/misc/mediatek/magnetometer/st480/Kconfig"
	
	3.kernel-3.18\drivers\misc\mediatek\magnetometer\Makefile 添加:
		+ obj-$(CONFIG_MTK_ST480)	+=  st480/
	
	4.kernel-3.18\arch\arm\boot\dts\len6737m_35_m0.dts 添加:
	  注:这一段没有的话(或名字不对应),会导致开机重启
			cust_mag@0 {
				compatible				= "mediatek,st480";
				i2c_num					= <2>;					// i2c控制器2(即i2c总线2),sensor都接在控制器2上--即i2c总线2
				i2c_addr				= <0x0C 0 0 0>;			// dws也写了一个i2c地址,到底用哪个看驱动,通常写在dws
				direction				= <1>;					// 方向 –> 唯一用到的
				power_id				= <0xffff>;
				power_vol				= <0>;
				is_batch_supported	= <0>;
			};
	4.1 修改dws: i2c总线数与i2c地址,驱动中会用到
		I2C:
			MSENSOR		I2C_CHANNEL_2	0x30
			
	5.kernel-3.18\arch\arm\configs\len6737m_35_m0_debug_defconfig、len6737m_35_m0_defconfig 修改
		- #CONFIG_CUSTOM_KERNEL_MAGNETOMETER=y
		+ CONFIG_CUSTOM_KERNEL_MAGNETOMETER=y
		+ CONFIG_MTK_ST480=y
	
	6.添加vendor\lentek\libs\mt6737m\st480文件夹(包含st480、Android.mk、README、NOTICE)
		st480		是一个可执行文件---init.xxx.rc中运行的daemon进程
		Android.mk	是干嘛的?
		README		解释信息
		NOTICE		解释信息

	7.device\lentek\len6737m_35_m0\ProjectConfig.mk 修改:
		- CUSTOM_KERNEL_MAGNETOMETER = no
		+ CUSTOM_KERNEL_MAGNETOMETER = yes
		
	8.device\mediatek\mt6735\init.mt6735.rc 添加:
		service st480 /system/bin/st480						// 这是一个服务,服务的路径
			disabled
			user system
			group system
			class main					// 归属于main这个service,main启动时启动st480		
			
	9.device\lentek\len6737m_35_m0\factory_init.project.rc 添加:
		service st480 /system/bin/st480						// 这是一个服务,服务的路径--应该是工厂模式用到的
			disabled
			user system
			group system
		
	10.device\mediatek\common\sepolicy\file_contexts 添加:
			+ /system/bin/st480 u:object_r:st480_exec:s0	// 当我们添加跑一个服务的时候就需要对其添加(开放)权限?哪些进程可以访问它
		
	11.添加device\mediatek\common\sepolicy\st480.te文件	
		
	12.device\mediatek\mt6735\device.mk 添加:
			+ PRODUCT_PACKAGES += st480			// 复制st480,从…到/system/bin/
			
三、查看log:
	1.查看上报数据
		cat /proc/kmsg | grep "***"
	2.查看开机串口log
		从串口测试点(TXD)接线出来,用usb转串口线,配合xshell抓串口log(波特率:912600)
	3.查看sensor型号:
		eng 版可以通过 命令查看: cat /sys/bus/platform/drivers/gsensor/chipinfo
		user版可以通过 命令查看: dmesg | grep "gsensor" -i		// 按power键灭屏or亮屏时,会打开or关闭sensor,会有内核缓冲器会有log打出
		[ 1099.329303]  (0)[934:android.ui]qma6981_enable_nodata 1964 : Gsensor not in suspend gsensor_SetPowerMode!, enable_status = 1
		[ 1102.168146]  (0)[946:PowerManagerSer]qma6981_enable_nodata 1964 : Gsensor not in suspend gsensor_SetPowerMode!, enable_status = 0

		user版可以通过 命令查看: dmesg | grep "als" -i
		user版可以通过 命令查看: dmesg | grep "msensor" -i
		user版可以通过 命令查看: dmesg | grep "gyro" -i
	
四、根据input子系统的调试方法:
	getevent -i 						查看所有的input设备
	getevent -t /dev/input/event4		获取gsensor往上层上报的包(封装过,加入time等信息,以16进制方式打印)

	1. ps
		靠近:
		[    2208.288534] 0002 0002 00000001
		[    2208.288534] 0002 0001 00000003
		[    2208.288534] 0000 0000 00000000
		远离:
		[    2212.838044] 0002 0002 00000002
		[    2212.838044] 0002 0001 00000003
		[    2212.838044] 0000 0000 00000000

	2. cat /proc/kmsg | grep "liuzhigou"
		<4>[  564.973691]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0xa
		<4>[  564.973725]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x8
		<4>[  565.168562]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0xa
		<4>[  565.168588]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x8
		<4>[  565.368485]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0xa
		<4>[  565.368527]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x8
		<4>[  565.568808]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0xa
		<4>[  565.568851]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x8
		<4>[  565.599273]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0x17
		<4>[  565.599314]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x0
		<4>[  565.599982]<0> (0)[2935:kworker/0:3]liuzhigou [epl_sensor_report_ps_status]: epl_sensor.ps.data.data=18642, ps_status=0	// 靠近
		<4>[  565.630511]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0xf
		<4>[  565.630547]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x8
		<4>[  565.631129]<0> (0)[2935:kworker/0:3]liuzhigou [epl_sensor_report_ps_status]: epl_sensor.ps.data.data=17031, ps_status=1	// 远离
		<4>[  565.735292]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0x17
		<4>[  565.735316]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x0
		<4>[  565.735765]<0> (0)[2935:kworker/0:3]liuzhigou [epl_sensor_report_ps_status]: epl_sensor.ps.data.data=17468, ps_status=0	// 靠近
		<4>[  565.757034]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status gRawData.raw_bytes[0] = 0xf
		<4>[  565.757054]<0> (0)[2935:kworker/0:3]liuzhigou epl_sensor_read_ps_status epl_sensor.ps.compare_low =  0x8
		<4>[  565.757495]<0> (0)[2935:kworker/0:3]liuzhigou [epl_sen
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值