Linux系统驱动之完善虚拟的I2C_Adapter驱动并模拟EEPROM
2023-04-18 14:42:14 时间
资料下载
coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
视频观看
完善虚拟的I2C_Adapter驱动并模拟EEPROM
参考资料:
- Linux内核文档:
Linux-4.9.88Documentationdevicetreeindingsi2ci2c-gpio.txt
Linux-5.4Documentationdevicetreeindingsi2ci2c-gpio.yaml
- Linux内核驱动程序:使用GPIO模拟I2C
Linux-4.9.88driversi2cussesi2c-gpio.c
Linux-5.4driversi2cussesi2c-gpio.c
- Linux内核真正的I2C控制器驱动程序
- IMX6ULL:
Linux-4.9.88driversi2cussesi2c-imx.c
- IMX6ULL:
- STM32MP157:
Linux-5.4driversi2cussesi2c-stm32f7.c
- 本节视频的代码在GIT仓库里
- IMX6ULL:
doc_and_source_for_driversIMX6ULLsource 4_I2C 6_i2c_adapter_virtual_ok
- STM32MP157:
doc_and_source_for_driversSTM32MP157sourceA7 4_I2C 6_i2c_adapter_virtual_ok
- IMX6ULL:
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";
};
1. STM32MP157
2. IMX6ULL
3.4 编译、安装驱动程序
3.5 使用i2c-tools测试
相关文章
- 02 uniapp/微信小程序 项目day02
- react使用sass
- 01 uniapp/微信小程序 项目day01
- 前端开发:如何正确地跨端
- CSS Flexbox 布局
- 从零打造“乞丐版” React(一)——从命令式编程到声明式编程
- Web 开发相关概念
- 为什么你的设计改了又改?这4个方法帮你一稿过!
- 苹果发布iOS 12.2系统第五个开发者测试版
- 无处不在!安卓手机竟能刷Windows 10系统了
- Android 10系统新特性解读
- 苹果召开今年第一场大会,库克爆了一些料
- 库克:苹果正在开发“会震爆你”的未来产品
- 避免盲目跟风,万年历CTO罗世龙带你还原新技术本质
- 国产手机系统哪家强?6大手机系统对比
- 支付宝小程序正式面向个人开发者开放公测
- 支付宝上线反诈新功能:识别交易被骗风险会通知守护人
- 苹果将允许开发者研发同时适用于iPhone、iPad和Mac的通用应用程序
- 抖音推出首款小程序游戏,跟着神曲一起魔性跳跃吧!
- 安卓10.0内测版出现新版手势操作:取消返回键、全靠Home胶囊完成