论文研究-嵌入式Linux系统I2C驱动的研究与应用 .pdf

所需积分/C币:12 2019-08-17 21:15:21 336KB .PDF
收藏 收藏
举报

嵌入式Linux系统I2C驱动的研究与应用,邱宏宇,余瑾,从Linux2.6内核起引入了一套全新的驱动管理和注册机制Platform_device和Platform_driver,本文将深入分析I2C总线在Linux中实现的体系结构,阐述I2
国武技论文在线 )的挂载;由于挂载在总线上的设各千差万别,所以在该层还需要实现具体设备的 等方法,赋值给 ,然后注册字符设备等。 第一层与第层叫倣总线驱动(),第三层属于设备驱动( 在驱动架构中,几乎不需要驱动开发人员再添加新的 因为 内核几乎集成 了所有的总线 如 等等。第三层又叫做设备驱动层,这部分是需要我 们实现的。 在设备模型中,总线由 结构表示,定义在 中 的注册都是通过 函数实现。在最底层, 系统中的每个设备由一个 结构体表小,并通过 完成设备的注册和注销。驱动程序由 结构体描述,设备模型 跟踪所有系统已知的驱动,主要目的是使驱动程序核心能协调驱动和新设备之间的关系。 总线驱动是适配器的软件实现,提供适配器与从设备间完成数据通信的能 力,比如起始,停止,应答信号和 的实现函数。总线驱动由 和 来描述 处理器内部集成了一个控制器,通过四个寄存器来进行控制:多主控器 总线控制寄存器 ;多主控器总线控制状态寄存器 多主控器 总线发送接收数据移位寄存器 读主控器总线地址寄存器, 通过 寄存器操作,可在总线上产生开始位、停止位、数据和地址, 而传输的状态则通过 寄存器来获取 Appl App2 ∈用户访问 Client Client Driver driver[ I2c-dev 驱动层 drivcr I2c-dev Kerne l Space I2C-Corc I2C核心层 Algorithn I2 C Adapter∈访间抽象层 与特定的soi2作相关的代码 硬件实现 控制层 Hardware I2C Adaptoerl Soc芯片内 部Ⅰ2C模块 挂载在I2C总线 evl ce Dev 2 上的具体器件 驱动架构 国武技论文在线 总线驱动实现 通过 机制开发底层驱动的大致流程为:定义 ,注册 ,定义 注册 在内核中 设备用结构体 来描述,该结构体定义在内核的 头文件中,这里把 定义为该结构类型。 在 中包含了一个重要的元素 结构,该结构定义在内核的 文件中。在 平台中,定义了两组 第一组描述了设备所占用的总线地址范围,第二组描述了设备的中断号。定义好 结构体后就可以调用函数 )向系统中添加该设备。 驱动程序需要通过 结构体实现,这里将 定义为该结 构体 定义之后就可以调用 进行设备注册。要注意的 是,这里的 设备的注册过程必须在相应设备驱动加载之前被调用,即执行 )之前原因是驱动注册时需要匹配内核中已 注册的设备名,此外还要注意 结构中 元素和 结构 中 必须是相同的,这样在 注册时公对所有凵注册的 所有 中的 和当前注册的 的 进行比较,只 国武技论文在线 有找到相同的名称的 才能注册成功,当注册成功吋会调用 结构元素 函数指针,这里就是 当进入 函数后,米初始化 适配器硬件 主要工作是时能硬件并申请适配器使用的地址,中断号等,然 后向核心添加这个适配器。 总线迸信通过 结构体实现,这里定义如下: 函数是总线通信方式的具体实现,依赖于 和 两个函数。 函数用于完成适配器的底层馊件 操作,与适配器和 的具体硬件直接相关,主要功能分为如下儿步完成, 这个函数每隔查看次总线状态, 设置为 如果在这期间总线状态不忙,则返回零,否则返回 将要发送的消息和其他 信息付给 和其他变量,并将状态设置为 使能中断 函数执行完后硬件就开始进 行数据传输。 设备操作分析 为了实现加气机信息的存储和读取,本次研究采用 作为可编程存储器,接下 来将介绍该芯片的功能特性并在完成驱动的基础上以简单实例的形式介绍几个应用层开发 的接口函数。 是 公司最近生产的位 位串行大容量电可擦的可编程存储 器 ,内部有页,每一页为字节,仟一单元的地址为位,地址范围为 符合双向数据传送协议,具有硬件写保护和软件数据保护功 能,具有按页字节写或按字节读写模式等特点。 的封装如图所小, 有八个引脚 :地址选择输入端,在串 行总线结构中,如需连接 芯片,则可用 来区分各芯片;:串行 吋钟输,通鸴在其上升沿将上的数据写入存储器,而在下降沿从存储器读出数据并送 往 双向串行数据输入输出口,用于存储器与开发板之间的数据父换; 写 保护输入,此引脚与地相连时,允许写操作,与相连时,所冇的写存储器操作皴禁止, 如果不连,该脚将在芯片内部下拉到地 国武技论文在线 A01 8口VcC A12 7口WP NC d3 6口sCL GND囗4 5 L SDA 图 封装图 的所有地址和数据都是以位的形式串行传送给存储器或从存储器读出的, 每次存储器都将在第九个时钟周期时由发零信号以对收到的位数据进行应答。 读或者写入的位数都是高位在前,低位在后。 进入开始状态后,一般都需要一 个位的地址字来选择芯片以进行读写,器件地址字由位、组成的命令字和两位地址 选择位 以及一位读/写操作位构成。对于 命令字为 可一串行 总线上可以连接个 器件,这些器件可以通过地址线 加以区分,如果只 有一个 ,那么、都取,最低位为时表示读操作,为表示写操作,其格 式如 10100A1A。R/W MSB LSB 同时, 外部引脚 也要相应连接到 或 应用程序开发是在完成驱动开发的基础上完成的,本文将介绍 芯片几个重要 的接口函数实现方法。 打廾 设备涵数 该函数四个参数值分别为 设备文件路径, 的地址,读写格式, 结构休。 )函数首先通过调用系统()函数完成设备的打开,然后使用 是查看其功能,它最终调用通信方式中的 ()函数; 函数完成通信的从设备地址的设置;最后赋值 设备读写函数实现是通过调用 函数实现的,该函数的定义如下: 国武技论文在线 要弄淸楚函数的功能,首先要弄清凼数参数的含义是使用打丌的文件: 表示是读操作还是写操作,如果是写它的值为 如果是读他 的值为 是要写的地址,的值为的类型。最后一个参数 为要写的字节数据。接下来功能的实现将通过系统调用实现读写功能。 用户可以依据 ()函数,按照具体要求实现读写功能,如实现单字节 与多字节的读写等,但是最终完成数据传输的都是通过函数的调用,该函数进一步通 过调用驱动程序,最终实现了数据的传输 结论 本文依托具体的实际项目要求,深入分析了在平台下使用 机制完成 设备驱动的过程,为不同设备驱动的开发提供了一个通用的解决方案。并以 为具 体设各,介绍了应用稈序打开和数据读写的关键函数,为实际的应用开发提供了基础 参考文献 何亚军邓飞其嵌入式中总线驱动程序设计计算机工程与设计 付永红赵攀基于 的总线驳动设计四川理工学院学报自然科学版 千虚阳,李文生 环境下 总线通信方式研究及应用 设备驱动程序北京:中国电力出版社 驱动学习 八) 驱动架构 才貌全门爱东杨波嵌入式 系统中总线驱动的研究与应用计算机与数字工

...展开详情
试读 7P 论文研究-嵌入式Linux系统I2C驱动的研究与应用 .pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    img
    • 至尊王者

      成功上传501个资源即可获取

    关注 私信 TA的资源

    上传资源赚积分,得勋章
    最新推荐
    论文研究-嵌入式Linux系统I2C驱动的研究与应用 .pdf 12积分/C币 立即下载
    1/7
    论文研究-嵌入式Linux系统I2C驱动的研究与应用 .pdf第1页
    论文研究-嵌入式Linux系统I2C驱动的研究与应用 .pdf第2页
    论文研究-嵌入式Linux系统I2C驱动的研究与应用 .pdf第3页

    试读已结束,剩余4页未读...

    12积分/C币 立即下载 >