欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:27251598       资源大小:723.19KB        全文页数:9页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。1Sensor 驱动架构简介及使用说明文件状态:草稿 正式发布正在修改文件标识:Company-Project-RD-UR当前版本:1.1作者:罗伟完成日期:2012-06-10版本日 期描述作 者审核V1.02012-6-10针对各种sensor 的共性与差异编写的统一架构,支持挂接重力传感器、地磁传感器、陀螺仪、光感、距离感应、温度感应等设备, 可以很方便地兼容不同厂家的各种 sensor。罗伟V1.12012-8-9增加 SENSOR 自动兼容,所有SENSOR 均可以同时选上, SENSOR 自动探测和识别。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 2手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。21.sensor 架构简介1.1编写目的到目前为止, sensor 的 android 硬件抽象层已经统一,但是各种产品和项目中仍用到了各种形形色色的传感器,并且驱动基本上是重新编写和调试一遍,然后重新解决一轮BUG。调试的时间少则一天,多则数天,如果驱动写的不好,容易引入 BUG。鉴于这种情况,对所有sensor 的共性与差异进行思考后发现,其实不同的 sensor 工作原理是相似的,仅有部分有差异,例如初始化、寄存器地址、上报方式、 IOCTL等几个,其他的大部分都是相同的。因此花了数天时间设计和编写了这套 sensor 架构,该架构特别注意以下几点:兼容性好、使用简单、结构清晰、可读性强。1.2结构图整个代码存放于文件夹sensors下, 包括两个主文件sensor-dev.c和 sensor-i2c.c,几个芯片级文件夹accel、compass、gyro、lsensor、psensor、temperature 。其中,sensor-dev.c 对 sensor 操作进行统一处理,包括驱动挂载、中断或轮训处理、IOCTL处理、差异性接口的统一回调处理等,sensor-i2c.c 是所有 sensor 的 i2C 操作接口,包括带寄存器和不带寄存器两种;accel 目录下存放不同类型的gsensor;compass目录下存放不同类型的地磁传感器;gyro 目录下存放不同类型的陀螺仪;lsensor目录下存放不同类型的光传感器;psensor 目录下存放不同类型的距离传感器;temperature 目录下存放不同类型的温度传感器。当然,有新的传感器类型的需求和在后面增加文件夹,例如压力传感器。图 1.1 为 sensor 驱动架构的目录树,目前仅包括手机和MID 的 SDK板上用到的所有sensor,其他的可以类似地添加。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 3手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。3图 1.1sensor 驱动架构的目录树1.3架构介绍要 了 解 该 驱 动 架 构 , 先 了 解 驱 动 中 使 用 到 的 三 个 重 要 结 构 体sensor_private_data、sensor_operate、sensor_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选项(如.type= gs_lis3dh)对应,不能错。intrange2;/上报值的范围int read_reg;/读数据的寄存器地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 4手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。4int read_len;/读数据的长度,单位byteint id_reg;/读CHIP_ID的寄存器地址int id_data;/正确的CHIP_ID值,需要用于判断设备是否存在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)(struct 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;/私 有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 delaywork;/延时工作队列,可用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 5手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。5struct sensor_axis axis;/存放sensor三维数值x,y,zchar sensor_data40;/存放从sensor读到的具体数据,最大40bytesatomic_t data_ready;/sensor数据准备好标志wait_queue_head_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,其中包括了驱动名称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类型见sensor_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低于该值忽略,目前陀螺仪使用名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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_platform_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、指南针 akm8975、陀螺仪l3g4200d、光传感器cm3217 所填充的回调接口。图 2.1 重力传感器mma8452 回调接口名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 9 页 - - - - - - - - - 7手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。7图 2.2 指南针 akm8975 回调接口图 2.3 陀螺仪 l3g4200d 回调接口图 2.4 光传感器 cm3217 回调接口因此,调试一款新的sensor 驱动,需要做的事情是填充上各个寄存器地址、实现芯片级的初始化、芯片使能与关闭这些差异化操作。2.2Board 文件填充几 个 sensor 板 级 重 要 填 充 示 例 如 下 所 示 , 所 有 sensor均 使 用 结 构 体sensor_platform_data ,其中, type,irq_enable ,poll_delay_ms 为每个 sensor 的必填项。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 9 页 - - - - - - - - - 8手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。8名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 9 页 - - - - - - - - - 9手机事业部本文档为瑞芯微电子手机事业部成员撰写及提供,不得用于工作之外的使用及交流。93、内核配置如果希望SENSOR 自动兼容,可以选上所有SENSOR ,程序会自动探测。选项配置参考如下:handle gsensor,compass,gyroscope,lsensor psensor etc-名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 9 页 - - - - - - - - -

    注意事项

    本文(2022年Android系统下sensor驱动架构简介及使用说明 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开