IIC驱动详解:旧的Attach方式与平台总线驱动
需积分: 0 35 浏览量
更新于2024-08-20
收藏 304KB PPT 举报
"这篇资料主要介绍了IIC驱动程序的旧方法,特别是`attach`方式的实现,以及IIC硬件的工作原理和平台总线驱动的概念。"
在Linux内核中,IIC(Inter-Integrated Circuit)驱动是用于控制IIC总线上的设备。IIC驱动程序的开发通常涉及到对IIC协议的理解,包括串行数据线(SDA)和串行时钟线(SCL)的工作机制。在开始编写IIC驱动之前,理解硬件手册中关于IIC部分的描述至关重要,这有助于开发者理解数据传输格式和工作流程。
在提供的代码段中,可以看到`i2c_add_adapter`函数,这是将IIC适配器添加到系统中的过程。它首先尝试从全局ID资源管理器`i2c_adapter_idr`中分配一个ID,确保分配的ID大于或等于`__i2c_first_dynamic_bus_num`。如果分配失败,由于资源冲突,函数会重试。一旦ID被成功分配,它会更新适配器的编号`adapter->nr`,然后调用`i2c_register_adapter`完成注册。
`i2c_register_adapter`函数会遍历IIC总线类型上的所有驱动,对每个驱动调用`attach_adapter`接口。这个过程是通过`bus_for_each_drv`遍历驱动并执行相应的操作,实现了驱动与适配器的关联。
平台总线驱动(platform bus driver)是Linux设备模型的一部分,它为特定硬件提供了一个抽象层。`platform_device`结构体表示了一个平台设备,包含了设备的基本信息,如名称、ID、设备结构以及资源。资源结构体`struct resource`描述了设备使用的物理地址范围,例如硬件寄存器,以及其他属性,如资源类型(内存、I/O或中断)。
平台驱动`platform_driver`则包含处理平台设备的函数,比如`probe`函数,通常在这个函数中,驱动会通过`platform_get_resource`获取设备的资源,然后进行初始化和配置。在Linux内核2.6.38之后,这些资源的申请和管理方式有所变化,但基本理念保持一致。
IIC驱动程序涉及对IIC协议的理解、内核中设备模型的运用,以及平台总线驱动的实现。开发者需要对Linux内核的设备模型、IIC协议的细节以及资源管理有深入的了解,才能有效地编写和调试IIC驱动。
2020-11-11 上传
2023-05-30 上传
2021-10-11 上传
2022-09-14 上传
2024-04-11 上传
2013-01-17 上传
2023-07-21 上传
雪蔻
- 粉丝: 28
- 资源: 2万+
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率