前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统驱动之完善虚拟的I2C_Adapter驱动并模拟EEPROM

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

作者头像
韦东山
发布2021-12-08 10:54:09
1.1K0
发布2021-12-08 10:54:09
举报
文章被收录于专栏:韦东山嵌入式

资料下载

coding无法使用浏览器打开,必须用git工具下载:

代码语言:javascript
复制
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.txt
    • Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml
  • Linux内核驱动程序:使用GPIO模拟I2C
    • Linux-4.9.88\drivers\i2c\busses\i2c-gpio.c
    • Linux-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 编译、替换设备树

在设备树根节点下,添加如下代码:

代码语言:javascript
复制
	i2c-bus-virtual {
		 compatible = "100ask,i2c-bus-virtual";
	};
1. STM32MP157
在这里插入图片描述
在这里插入图片描述
2. IMX6ULL
3.4 编译、安装驱动程序
3.5 使用i2c-tools测试
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 资料下载
  • 视频观看
  • 完善虚拟的I2C_Adapter驱动并模拟EEPROM
    • 1. 实现master_xfer函数
      • 2. 编程
        • 3. 上机实验
          • 3.1 设置工具链
          • 3.2 编译、替换设备树
          • 3.4 编译、安装驱动程序
          • 3.5 使用i2c-tools测试
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档