Linux系统驱动之编写设备驱动之i2c_client
2023-04-18 14:42:10 时间
资料下载
coding无法使用浏览器打开,必须用git工具下载:
git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
视频观看
编写设备驱动之i2c_client
参考资料:
- Linux内核文档:
Documentationi2cinstantiating-devices.rst
Documentationi2cwriting-clients.rst
- Linux内核驱动程序示例:
drivers/eeprom/at24.c
- 本节代码:GIT仓库中
-
IMX6ULLsource 4_I2C 3_ap3216c_ok
-
STM32MP157sourceA7 4_I2C 3_ap3216c_ok
-
1. I2C总线-设备-驱动模型
2. 编译i2c_driver
3. 编写测试程序
4. 多种方法生成i2c_client并测试
4.1 在用户态生成
示例:
// 在I2C BUS0下创建i2c_client
# echo ap3216c 0x1e > /sys/bus/i2c/devices/i2c-0/new_device
// 删除i2c_client
# echo 0x1e > /sys/bus/i2c/devices/i2c-0/delete_device
4.2 编写代码
- i2c_new_device
- i2c_new_probed_device
- i2c_register_board_info
- 内核没有
EXPORT_SYMBOL(i2c_register_board_info)
- 使用这个函数的驱动必须编进内核里去
- 内核没有
4.3 使用设备树生成
在某个I2C控制器的节点下,添加如下代码:
ap3216c@1e {
compatible = "lite-on,ap3216c";
reg = <0x1e>;
};
1. STM32MP157
2. IMX6ULL
4.4 上机测试
以下命令在开发板中执行。
相关文章
- 【☝️C站博客大神的标配の建议收藏☝️】Emoji符号大全,可直接复制使用,无需编写符号代码
- Go语言必须支持多返回值函数,你知道为什么吗?
- Scala文章目录
- 字节码编程|使用Javassist生成JavaBean
- 3分钟学设计模式(创建型):5、原型模式
- 118 杨辉三角
- 考点:列表、输入、元素比较、位置交换【Python习题01】
- K8s源码分析(11)-资源到schema的注册
- Spring和SpringMvc详细讲解
- Java.long.Long.parseLong()方法详解
- 考点:程序逻辑和调试,类似环形链表结构【Python习题03】
- 一文吃透 Spring 中的 AOP 编程
- 只需几行代码快速编写crud接口
- C# 随机数(Random)的使用 编写“班级点名器”
- 在小程序框架Taro中使用 vue3+graphqlFrame
- 如何给C盘扩容?亲测有效
- [python]---list列表写入txt文档的多种方法
- GitLab CI/CD 自动化构建与发布实践
- JPA 之 Hibernate EntityManager 使用指南
- 微前端工具箱:用subtree解决多模块复用问题