平台设备驱动模型 - Mr_ox

Mr-ox 2021-08-02 原文


平台设备驱动模型


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:从平台设备指针的资源中获取中断号

posted on
2017-02-17 15:45 
Mr_ox 
阅读(121
评论(0
编辑 
收藏 
举报

 

版权声明:本文为Mr-ox原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Mr-ox/p/6410180.html

平台设备驱动模型 - Mr_ox的更多相关文章

  1. openstack虚拟机获取不到ip – 东篱昏后

    openstack虚拟机获取不到ip 一、现象描述: openstack平台中创建虚拟机后,虚拟机在web页面 […]...

  2. ajax-异步加载片段 – 婧星

    ajax-异步加载片段 片段一般用.htm后缀 下面是ajax加载片段的demo 涉及知识点为: jquery […]...

  3. 阿里云 CDN 相关测试 – void87

    阿里云 CDN 相关测试 Ali-Swift-Global-Savetime : e.g. 159894192 […]...

  4. 常用的20个在线工具类网站清单 – 狂师

    常用的20个在线工具类网站清单 2020-05-26 12:13  狂师  阅读(1862)  评论(3)  […]...

  5. Spring Boot系列 – 5. 不同的环境使用不同的配置

    spring boot中,可以通过在application.yml配置文件中,配置多个不同的profile, […]...

  6. docker run容器 设置 jvm 运行springboot 程序 – a393060727

    docker run容器 设置 jvm 运行springboot 程序 首先dockerfile中需要设置一个 […]...

  7. 网络模型 – 每天5分钟玩转 Docker 容器技术(169)

    本节我们讨论 Kubernetes 网络模型这个重要主题。 本节我们讨论 Kubernetes 网络这个重要主 […]...

  8. 用 Weave Scope 监控集群 – 每天5分钟玩转 Docker 容器技术(175)

    本章讨论 Kubernetes 常用的监控方案,从 Weave Scope 开始。 创建 Kubernetes […]...

随机推荐

  1. 手写redux方法以及数组reduce方法

      reduce能做什么? 1)求和 2)计算价格 3)合并数据 4)redux的compose方法   这篇 […]...

  2. 页面中幻灯片的制作

      以天天生鲜中index.html页面中的幻灯片为例,代码如下,需要结合index.html页面的代码多看看 […]...

  3. Selenium之表格的定位

    前言 浏览器网页常常会包含各类表格,自动化测试工程师可能会经常操作表格中的行,列以及某些特定的单元格,因此熟练 […]...

  4. 轮播图

     一共6张图片,每1.5s自动切换播放图片,鼠标在图片内则停止自动播放。可通过底部列表手动播放图片,也可通过图 […]...

  5. creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色

    在creat-react-app搭建的项目环境中按需引入antd以及配置less,首先需要暴露出来webpac […]...

  6. OpenCV中Mat的基本用法:创建、复制

    OpenCV中Mat的基本用法:创建、复制 一、Mat类的创建: 1.方法一: 通过读入一张图像,直接将其转换 […]...

  7. golang常用的http请求操作

    之前用python写各种网络请求的时候写的非常顺手,但是当打算用golang写的时候才发现相对来说还是pyth […]...

  8. 面试官不是你想吊打就能吊打的

    好了,标题只是皮一下 说说五一前的一个面试经历,不是我去找工作给别人面试,是我面试别人,即——我是面试官。我们 […]...

展开目录

目录导航