资料下载
由于无法通过浏览器直接访问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.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
- IMX6ULL:
- 本节视频的代码在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
- IMX6ULL:
-
实现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,返回错误。
编程看视频:请观看相关视频进行学习。
-
上机实验:
- 3.1 设置工具链:根据您的开发环境设置合适的工具链。
- 3.2 编译、替换设备树:在设备树的根节点下,添加如下代码:
i2c-bus-virtual { compatible = "100ask,i2c-bus-virtual";};- 3.3 编译、安装驱动程序:按照视频指导编译并安装驱动程序。
- 3.4 使用i2c-tools测试:使用i2c-tools工具对驱动进行测试。












