版权声明:本文为博主原创文章,转载请注明出处:https://blog.youkuaiyun.com/huang_165/article/details/83379988
这是“分析并改良rockchip sensor core框架”的第一篇,这篇结合瑞芯微官方文档以通俗的文字、图片描述sensor core。具体的程序逻辑框图将在“分析并改良rockchip sensor core框架”的第二篇上分析。
源码地址:https://github.com/Mr-jinfa/rk3399-project
目录
rockchip 原生sensor core支持的功能
- 提供sensor-i2c层来封装i2c函数
- 提供sensor-dev层来封装具体sensor驱动的申请、注册函数。
- sensor-i2c 和sensor-dev组成sensor core。由它来支撑具体sensor的活动并回调具体sensor驱动提供的钩子函数。
rockchip 原生sensor core不支持的功能
- 它仅能支持同类sensor的单一sensor(即不支持多个同类sensor)
- 不支持sensor以ko形式装入。
改良sensor core支持的功能
- 支持同类sensor的多个sensor,支持ioctl等sensor ops接口的并发访问
- 支持sensor以ko形式装入。
瑞芯微文档形式分析
下面我们来分析rockchip的sensor core架构,先引用瑞芯微提供<sensor驱动介绍和调试说明.doc>文字介绍:
Sensor驱动代码一般分为RK框架和sensor厂商自定义框架,厂商自定义框架按照厂商提供的文档进行移植,这里主要介绍RK的sensor框架。
jinfa@ubuntu:~/rk3399_work/kernel/drivers/input/sensors$ ls -l
total 136
drwxr-xr-x 2 jinfa jinfa 4096 Oct 24 23:49 accel
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 angle
drwxr-xr-x 2 jinfa jinfa 4096 Oct 24 23:49 compass
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 gyro
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 hall
-rwxr--r-- 1 jinfa jinfa 655 Sep 21 17:23 Kconfig
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 lsensor
-rwxr--r-- 1 jinfa jinfa 549 Sep 21 17:23 Makefile
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 pressure
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 psensor
-rwxr--r-- 1 jinfa jinfa 81686 Oct 24 04:53 sensor-dev.c
-rwxr--r-- 1 jinfa jinfa 5820 Sep 21 17:23 sensor-i2c.c
drwxr-xr-x 2 jinfa jinfa 4096 Oct 20 20:28 temperature
其中accel、angle、compass、gyro、hall、lsensor、pressure、psensor、temperature目录包含各类型的传感器文件。 Sensor-i2c.c包含sensor的I2C读写操作接口。Sensor-dev.c对 sensor 操作进行统一处理,包括驱动挂载、中断或轮训处理、 IOCTL处理、差异性接口的统一回调处理等。