2022年Android系统下sensor驱动架构简介及使用说明 .pdf

上传人:Che****ry 文档编号:27251598 上传时间:2022-07-23 格式:PDF 页数:9 大小:723.19KB
返回 下载 相关 举报
2022年Android系统下sensor驱动架构简介及使用说明 .pdf_第1页
第1页 / 共9页
2022年Android系统下sensor驱动架构简介及使用说明 .pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《2022年Android系统下sensor驱动架构简介及使用说明 .pdf》由会员分享,可在线阅读,更多相关《2022年Android系统下sensor驱动架构简介及使用说明 .pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。1Sensor 驱动架构简介及使用说明文件状态:草稿 正式发布正在修改文件标识:Company-Project-RD-UR当前版本:1.1作者:罗伟完成日期:2012-06-10版本日 期描述作 者审核V1.02012-6-10针对各种sensor 的共性与差异编写的统一架构,支持挂接重力传感器、地磁传感器、陀螺仪、光感、距离感应、温度感应等设备, 可以很方便地兼容不同厂家的各种 sensor。罗伟V1.12012-8-9增加 SENSOR 自动兼容,所有SENSOR 均可以同时选上, SENSOR 自动探测

2、和识别。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 2手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。21.sensor 架构简介1.1编写目的到目前为止, sensor 的 android 硬件抽象层已经统一,但是各种产品和项目中仍用到了各种形形色色的传感器,并且驱动基本上是重新编写和调试一遍,然后重新解决一轮BUG。调试的时间少则一天,多则数天,如果驱动写的不好,容易引入 BUG。鉴于

3、这种情况,对所有sensor 的共性与差异进行思考后发现,其实不同的 sensor 工作原理是相似的,仅有部分有差异,例如初始化、寄存器地址、上报方式、 IOCTL等几个,其他的大部分都是相同的。因此花了数天时间设计和编写了这套 sensor 架构,该架构特别注意以下几点:兼容性好、使用简单、结构清晰、可读性强。1.2结构图整个代码存放于文件夹sensors下, 包括两个主文件sensor-dev.c和 sensor-i2c.c,几个芯片级文件夹accel、compass、gyro、lsensor、psensor、temperature 。其中,sensor-dev.c 对 sensor 操作

4、进行统一处理,包括驱动挂载、中断或轮训处理、IOCTL处理、差异性接口的统一回调处理等,sensor-i2c.c 是所有 sensor 的 i2C 操作接口,包括带寄存器和不带寄存器两种;accel 目录下存放不同类型的gsensor;compass目录下存放不同类型的地磁传感器;gyro 目录下存放不同类型的陀螺仪;lsensor目录下存放不同类型的光传感器;psensor 目录下存放不同类型的距离传感器;temperature 目录下存放不同类型的温度传感器。当然,有新的传感器类型的需求和在后面增加文件夹,例如压力传感器。图 1.1 为 sensor 驱动架构的目录树,目前仅包括手机和MI

5、D 的 SDK板上用到的所有sensor,其他的可以类似地添加。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 3手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。3图 1.1sensor 驱动架构的目录树1.3架构介绍要 了 解 该 驱 动 架 构 , 先 了 解 驱 动 中 使 用 到 的 三 个 重 要 结 构 体sensor_private_data、sensor_operate、sen

6、sor_platform_data ,其中sensor_private_data 是各种 sensor的私有统一结构体, sensor_operate 是使用者调试新 sensor时需要根据具体情况填充的结构体, sensor_platform_data 是加载驱动前需要在board 里填充的结构体, 不同的 sensor需要填充的变量有所差异。struct sensor_operate char *name;/芯片名称int type;/sensor类型见sensor_type定义intid_i2c;/从sensor_id中选择,新SENSOR需要添加,该值与board文件中的type选项(

7、如.type= gs_lis3dh)对应,不能错。intrange2;/上报值的范围int read_reg;/读数据的寄存器地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 4手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。4int read_len;/读数据的长度,单位byteint id_reg;/读CHIP_ID的寄存器地址int id_data;/正确的CHIP_ID值,需要用于判

8、断设备是否存在int precision;/数据的精度int ctrl_reg;/控制寄存器,一般用于开启和关闭设备、初始化等int ctrl_data;/控制寄存器写入的值int int_ctrl_reg;/中断控制寄存器,不需要填-1intint_status_reg;/中断状态寄存器,可用于清中断,不需要填-1int trig;/中断触发方式,如、IRQF_TRIGGER_LOW|IRQF_ONESHOT,注意,本驱动使用了线程中断方式,可以在 中 断中 直 接操 作I2C或SPI等 阻 塞式 操作, 对于电 平类 中 断请 增 加IRQF_ONESHOT。int (*active)(s

9、truct i2c_client *client, int enable, int rate);/开关回调接口int (*init)(structi2c_client *client);/sensor芯片初始化回调接口int (*report)(structi2c_client *client);/芯片读数据和上报回调接口int (*suspend)(struct i2c_client *client);/休眠操作接口,暂不需要int (*resume)(struct i2c_client *client);/唤醒操作接口,暂不需要struct miscdevice *misc_dev;/私

10、有misc设 备 , 若 填 充 则sensor-dev.c文件则不会注册misc设备和android硬件抽象层交互,需要在芯片级驱动中实现,如AK8975.C。;/* Platform data for the sensor */struct sensor_private_data int type;/sensor类型,存放sensor_operate的typestruct i2c_client *client;/i2c客户端struct input_dev *input_dev;/输入设备struct work_struct work;struct delayed_work delaywo

11、rk;/延时工作队列,可用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 5手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。5struct sensor_axis axis;/存放sensor三维数值x,y,zchar sensor_data40;/存放从sensor读到的具体数据,最大40bytesatomic_t data_ready;/sensor数据准备好标志wait_queue_he

12、ad_t data_ready_wq;/数据准备好唤醒队列struct mutex data_mutex;/存取数据操作互斥锁struct mutex operation_mutex;/IOCTL操作互斥锁struct mutex sensor_mutex;/sensor读写数据互斥锁struct mutex i2c_mutex;/I2C操作互斥锁int status_cur;/ sensor开关状态int start_count;/sensor开启次数int devid;/读到的CHIP_ID值struct i2c_device_id *i2c_id;/I2C_ID table,其中包括了驱

13、动名称struct sensor_platform_data *pdata;/板级sensor数据结构struct sensor_operate *ops;/芯片驱动填充接口struct file_operations fops;/misc devfopsstruct miscdevice miscdev;/misc device,用于IOCTL#ifdef CONFIG_HAS_EARLYSUSPENDstructearly_suspend early_suspend;/一级休眠#endif;struct sensor_platform_data int type;/sensor类型见sen

14、sor_type定义,必填,不能错int irq;/中断号int power_pin;/电源控制GPIO,部分sensor用到int reset_pin;/reset GPIO,部分sensor用到int irq_enable;/使用中断方式填1,使用轮训填0,必填int poll_delay_ms;/读取数据的频率,单位ms,必填int x_min;/最小有效值,x低于该值忽略,目前陀螺仪使用int y_min;/最小有效值,y低于该值忽略,目前陀螺仪使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -

15、 - - - - 第 5 页,共 9 页 - - - - - - - - - 6手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。6int z_min;/最小有效值,z低于该值忽略,目前陀螺仪使用unsigned char address;/ I2C设备地址signed char orientation9;/sensor方向矩阵short m_layout433;/指南针方向矩阵char project_name64;/指南针名称,可选int (*init_platform_hw)(void);/ sensor的gpio初始化函数void (*exit_pla

16、tform_hw)(void);/sensor的gpio反初始化函数int (*power_on)(void);/上电操作函数,可选int (*power_off)(void);/关电操作函数,可选;在芯片级驱动文件中通过sensor_register_slave()接口将填充好的结构体传给主文件 sensor-dev.c,sensor-dev.c回调芯片级驱动中填充的寄存器地址和函数接口。2.架构使用说明2.1驱动实现采用该架构后,调试一款新的sensor 驱动只需要填充和实现结构体sensor_operate 即可,图2.1,2.2,2.3,2.4 分别为重力传感器mma8452、指南针

17、akm8975、陀螺仪l3g4200d、光传感器cm3217 所填充的回调接口。图 2.1 重力传感器mma8452 回调接口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 7手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。7图 2.2 指南针 akm8975 回调接口图 2.3 陀螺仪 l3g4200d 回调接口图 2.4 光传感器 cm3217 回调接口因此,调试一款新的sensor 驱动

18、,需要做的事情是填充上各个寄存器地址、实现芯片级的初始化、芯片使能与关闭这些差异化操作。2.2Board 文件填充几 个 sensor 板 级 重 要 填 充 示 例 如 下 所 示 , 所 有 sensor均 使 用 结 构 体sensor_platform_data ,其中, type,irq_enable ,poll_delay_ms 为每个 sensor 的必填项。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 8手机事

19、业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。8名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 9手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。93、内核配置如果希望SENSOR 自动兼容,可以选上所有SENSOR ,程序会自动探测。选项配置参考如下:handle gsensor,compass,gyroscope,lsensor psensor etc-名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁