zoukankan      html  css  js  c++  java
  • I2C驱动

    在I2C总线驱动下,也是硬件设备和驱动分离,使以就需要通过它们的名字来匹配,这样驱动的probe函数才能被调用

    查看linux内核的Documents目录下的说明文件,可知构造i2c设备有4种方法:

    1、定义1个i2c_board_info结构体,然后i2c_register_board_info来注册i2c_board_info,加入链尾

    链表何时使用:i2c_register_adapter-->i2c_scan_static_board_info-->i2c_new_device

    使用限制:必须在i2c_register_adapter之前i2c_register_board_info,而内核启动之后i2c_register_adapter已经执行完了,再注册i2c_register_board_info也不会调用i2c_new_device所以这种方法不适合动态加载驱动(insmod)

    2、直接i2c_new_device, i2c_new_probed_device

    3、从用户空间创建设备

    echo at24c08 0x50 > /sys/class/i2c_adapter/i2c-0/new_device

    echo 0x50 > /sys/class/i2c_adapter/i2c-0/delete_device

    4、上面的1/2/3都得事先指定适配器:IIC设备挂到哪一条I2C总线上

    在i2c_driver中加入

    .class = I2C_CLASS_HWMON,

    .detect = ...,     //检测能否找到设备

    .address_list = ...,   //支持的设备的地址

    用class表示的这一类I2C适配器,用detect函数来确定能否找到address_list里的设备,如果能够找到就构造i2c_client,从而调用probe函数

    probe执行的前提:i2c_board_info.type 和 i2c_driver.id_table.name一致

    附I2C时序图:

  • 相关阅读:
    ExtJs系列教程
    linux 服务器时间 timedatectl命令时间时区操作详解
    aws CloudWatch Events
    AWS Shield
    aws ssm指令
    failed to set bridge addr: "cni0" already has an IP address different from 10.244.0.1/24
    AWS Systems Manager
    Amazon Inspector
    AWS 安全培训
    Amazon Inspector
  • 原文地址:https://www.cnblogs.com/zhu-g5may/p/10623003.html
Copyright © 2011-2022 走看看