zoukankan      html  css  js  c++  java
  • 平台设备驱动模型

    1.总线驱动模型简介

      - 在Linux2.6的设备驱动模型中,关心总线、设备和驱动三个实体。总线将设备和驱动绑定。

      - 在嵌入式系统里,SOC系统中集成的独立的外设控制器、挂接在SOC内存空间的外设等却不依附于此类总线。基于该背景,Linux发明了一种虚拟总线,称为platform总线,相应的设备称为platform_device, 而驱动程序称为platform_driver。

    2.特点

      - 分层结构,将驱动程序分成了平台设备和平台驱动

      - 平台设备将设备本身的资源注册进内核,可以由内核统一管理

      - 统一了设备驱动模型,使只能电源管理更容易实现

      - 可移植性,通用性更好

    3.platform设备层编程

      - 需要实现结构体struct platform_device

        * 初始化struct resource结构变量

        * 初始化struct platform_device结构变量

        * 向系统注册设备,使用platform_device_register函数

      - 设备层API

        * platform_device_register:向内核注册一个平台设备

        * platform_device_unregister:从内核删除

        * platform_add_devices:把devs数组中的num个平台设备结构注册到内核中

    4.platform驱动层编程

      - 需要实现结构体 struct platform_driver

        * 编写探测函数probe

        * 编写探测函数remove

        * 填充struct platform_driver下struct device_driver driver成员的子成员name, name的值需要和device的name相同

        * 调用platform_driver_register函数进行注册

      - proble函数框架

        * 获取平台设备私有数据

        * 获取平台设备占用的物理资源

        * 如果是内存资源,则向内核申请物理内存资源,若为中断资源,则进行中断函数注册

        * 硬件初始化

        * 注册用户空间的接口

      - remove函数框架

        与probe函数为反过程,注销probe函数注册的资源

      - 核心数据结构

        struct device_driver

      - 核心API

        * platform_driver_register:向内核注册一个平台驱动结构

        * platform_driver_unregister:把指针的平台设备从内核删除

        * platform_get_resource:获取物理资源结构地址

        * platform_get_irq:从平台设备指针的资源中获取中断号

  • 相关阅读:
    数据库模式
    数据流模式、转换、格式与操作
    桥接模式=抽象层协作关系+继承体系注入
    php 中更简洁的三元运算符 ?:
    larave5.6 将Excel文件数据导入数据库代码实例
    Laravel获取所有的数据库表及结构
    Laravel框架数据库CURD操作、连贯操作总结
    insert into 语句的三种写法
    Laravel 上传excel,读取并写入数据库 (实现自动建表、存记录值
    laravel5.4将excel表格中的信息导入到数据库中
  • 原文地址:https://www.cnblogs.com/Mr-ox/p/6410180.html
Copyright © 2011-2022 走看看