MT8163 Android 6.0 调试光感IC(STK3310)总结
2016-07-15 13:57
633 查看
简介:
描述调试光感IC stk3310的过程。
调试硬件平台:MT8163
调试软件平台:Android6.0
总修改文件:
project 为工程的名称
一驱动程序的调试和分析
增加驱动文件
在kernel-3.18\drivers\misc\mediatek\alsps\ 目录下
增加
stk3x1x 的驱动文件,这个驱动文件可以从其他调试好的BSP中获取,也可以从供应商获取。
增加编译项
kernel-3.18\drivers\misc\mediatek\alsps\Kconfig 增加:
source “drivers/misc/mediatek/alsps/stk3x1x/Kconfig”
kernel-3.18\drivers\misc\mediatek\alsps\Makefile 增加:
obj-$(CONFIG_MTK_STK3X1X) += stk3x1x/
arch/arm64/configs/project_defconfig 增加编译宏:
这样驱动就会被编译进内核。
Dts配置I2C device
目录:
arch/arm64/boot/dts/project.dts
在&i2c2 { 中增加:
在现有的Dts的架构下,device “alsps”会被创建。Driver中必须对应是“alsps”。
I2c地址为:0x48;
可以在设备上看到以下设备:/sys/bus/i2c/devices/3-0048
增加:
以上信息 stk3x1x的驱动会读取硬件配置信息。
二、HAL层的添加
2.1
修改目录:
device/pskyed/project/ProjectConfig.mk
CUSTOM_KERNEL_ALSPS = stk3x1x
此处的CUSTOM_KERNEL_ALSPS 只要有值即可。
可以查看
vendor/mediatek/proprietary/hardware/sensor/
下的代码,
三、应用层开关的添加
3.1 修改如下文件:
目录:
device/pskyed/project/overlay/frameworks/base/core/res/res/values/config.xml
修改如下:
true
改为 true之后在界面上就会有自动背光的选项。
此时点开自动背光,程序才会调用到驱动中的enable函数,从而开启背光的定时器线程。
调试小技巧:
遇到的问题是驱动probe成功了,节点也有了,但是不知道是否初始化OK了。
解决办法:1.adb连上机器,
切到目录:/sys/bus/platform/drivers/als_ps
查看 所以的寄存器:cat allreg
cat allreg
第一个寄存器是sensor的开关,默认自动感光是关闭的。
敲入命令: echo 00 03 > allreg
会打开感光sensor,
此时读取 als的值会发现变化,表示驱动已经正常工作。
描述调试光感IC stk3310的过程。
调试硬件平台:MT8163
调试软件平台:Android6.0
总修改文件:
project 为工程的名称
arch/arm64/boot/dts/project.dts device/pskyed/project/ProjectConfig.mk kernel-3.18/drivers/misc/mediatek/alsps/Kconfig kernel-3.18/arch/arm64/configs/project_defconfig device/pskyed/project/ProjectConfig.mk device/pskyed/project/overlay/frameworks/base/core/res/res/values/config.xml
一驱动程序的调试和分析
增加驱动文件
在kernel-3.18\drivers\misc\mediatek\alsps\ 目录下
增加
stk3x1x 的驱动文件,这个驱动文件可以从其他调试好的BSP中获取,也可以从供应商获取。
增加编译项
kernel-3.18\drivers\misc\mediatek\alsps\Kconfig 增加:
source “drivers/misc/mediatek/alsps/stk3x1x/Kconfig”
kernel-3.18\drivers\misc\mediatek\alsps\Makefile 增加:
obj-$(CONFIG_MTK_STK3X1X) += stk3x1x/
arch/arm64/configs/project_defconfig 增加编译宏:
CONFIG_CUSTOM_KERNEL_ALSPS=y CONFIG_MTK_STK3X1X=y
这样驱动就会被编译进内核。
Dts配置I2C device
目录:
arch/arm64/boot/dts/project.dts
在&i2c2 { 中增加:
alsps@48{ compatible = "mediatek,alsps"; reg = <0x48>; interrupt-parent = <&pio>; interrupts = <8 IRQ_TYPE_LEVEL_LOW>; int-gpio = <&pio 30 0>; status = "okay"; };
在现有的Dts的架构下,device “alsps”会被创建。Driver中必须对应是“alsps”。
I2c地址为:0x48;
可以在设备上看到以下设备:/sys/bus/i2c/devices/3-0048
增加:
cust_alsps@0 { compatible = "mediatek,stk3x1x"; i2c_num = <2>; i2c_addr = <0x48 0x48 0x78 0x00>; polling_mode_ps = <1>; polling_mode_als = <1>; power_id = <0xffff>; power_vol = <0>; als_level = <5 10 25 50 100 150 200 400 1000 1500 2000 3000 5000 8000 10000>; als_value = <10 50 100 150 200 250 280 280 1600 1600 1600 6000 6000 9000 10240 10240>; ps_threshold_high = <120>; ps_threshold_low = <100>; is_batch_supported_ps = <0>; is_batch_supported_als = <0>; };
以上信息 stk3x1x的驱动会读取硬件配置信息。
二、HAL层的添加
2.1
修改目录:
device/pskyed/project/ProjectConfig.mk
CUSTOM_KERNEL_ALSPS = stk3x1x
此处的CUSTOM_KERNEL_ALSPS 只要有值即可。
可以查看
vendor/mediatek/proprietary/hardware/sensor/
下的代码,
if defined(CUSTOM_KERNEL_ALSPS) || defined(CUSTOM_KERNEL_ALS)
因此CUSTOM_KERNEL_ALSPS 只要不为空即加上了光感的中间层的函数。三、应用层开关的添加
3.1 修改如下文件:
目录:
device/pskyed/project/overlay/frameworks/base/core/res/res/values/config.xml
修改如下:
true
改为 true之后在界面上就会有自动背光的选项。
此时点开自动背光,程序才会调用到驱动中的enable函数,从而开启背光的定时器线程。
调试小技巧:
遇到的问题是驱动probe成功了,节点也有了,但是不知道是否初始化OK了。
解决办法:1.adb连上机器,
切到目录:/sys/bus/platform/drivers/als_ps
查看 所以的寄存器:cat allreg
cat allreg
第一个寄存器是sensor的开关,默认自动感光是关闭的。
敲入命令: echo 00 03 > allreg
会打开感光sensor,
此时读取 als的值会发现变化,表示驱动已经正常工作。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories