欢迎您访问新疆栾骏商贸有限公司,公司主营电子五金轴承产品批发业务!
全国咨询热线: 400-8878-609

新闻资讯

技术百科

Linux系统驱动之完善虚拟的I2C_Adapter驱动并模拟EEPROM

作者:看不見的法師2025-06-27 00:00:00

资料下载

由于无法通过浏览器直接访问Coding,您需要使用Git工具进行下载:

git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git

视频观看请访问百问网,查看驱动大全。

完善虚拟的I2C_Adapter驱动并模拟EEPROM的参考资料包括:

  • Linux内核文档:Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txtLinux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml
  • Linux内核驱动程序:使用GPIO模拟I2C Linux-4.9.88\drivers\i2c\busses\i2c-gpio.cLinux-5.4\drivers\i2c\busses\i2c-gpio.c
  • Linux内核真正的I2C控制器驱动程序
    • IMX6ULL:Linux-4.9.88\drivers\i2c\busses\i2c-imx.c
    • STM32MP157:Linux-5.4\drivers\i2c\busses\i2c-stm32f7.c
  • 本节视频的代码在GIT仓库中
    • IMX6ULL:doc_and_source_for_drivers\IMX6ULL\source\04_I2C\06_i2c_adapter_virtual_ok
    • STM32MP157:doc_and_source_for_drivers\STM32MP157\source\A7\04_I2C\06_i2c_adapter_virtual_ok
  1. 实现master_xfer函数:在虚拟的I2C_Adapter驱动程序中,只要实现了master_xfer函数,这个I2C Adapter就可以使用。在master_xfer函数中,我们模拟一个EEPROM,具体思路如下:

    • 分配一个512字节的buffer,表示EEPROM。
    • 对于slave address为0x50的i2c_msg,解析并处理:
      • 对于写操作:将i2c_msg的数据写入buffer。
      • 对于读操作:从buffer中把数据写入i2c_msg。
    • 对于slave address为其他值的i2c_msg,返回错误。
  2. 编程看视频:请观看相关视频进行学习。

  3. 上机实验

    • 3.1 设置工具链:根据您的开发环境设置合适的工具链。
    • 3.2 编译、替换设备树:在设备树的根节点下,添加如下代码:
i2c-bus-virtual { compatible = "100ask,i2c-bus-virtual";};
  • 3.3 编译、安装驱动程序:按照视频指导编译并安装驱动程序。
  • 3.4 使用i2c-tools测试:使用i2c-tools工具对驱动进行测试。