本文转自:http://www.topeetboard.com

视频下载地址:

驱动注册:http://pan.baidu.com/s/1i34HcDB

设备注册:http://pan.baidu.com/s/1kTlGkcR

总线_设备_驱动注册流程详解

• 注册流程图

• 设备一般都需要先注册,才能注册驱动

– 现在越来越多的热拔插设备,反过来了。先注册驱动,设备来了再注册

设备

• 本节使用的命令

– 查看总线的命令#ls /sys/bus/

– 查看设备号的命令#cat /proc/devices

• 设备都有主设备号和次设备号,否则255个设备号不够用

– 查看杂项设备号的命令#cat /proc/misc

设备注册

关于注册设备的一点说明

• 早先的Linux会使用单独的文件注册设备,现在大多是使用引入的虚拟

平台,使用虚拟平台来注册设备会容易很多

• 如果大家在网上看到大段的注册设备的代码,可简单了解一下,知道

有这么个东西就成,不用去深究。不要去学习“屠龙技”,现在基本都

是直接在平台文件中注册设备

注册设备

注册设备使用结构体platform_device,该结构体在头文件“vim

include/linux/platform_device.h”中。头文件中也有注册设备和卸载设

备的函数,了解即可。

• 操作过程

– 注册设备。将设备结构体放到平台文件中,会自动注册设备,不用去调

用注册设备的函数。

– 在Kconfig文件中添加编译HELLO设备的宏定义(前面教程中已经添加)

– 配置menuconfig中的HELLO宏定义,生成新的.config文件

– 生成新的zImage

• 注册完之后在虚拟平台总线下可以查到注册的设备

– ls /sys/devices/platform/

驱动注册

• 驱动注册

– 很重要,牢牢掌握,以后写任何Linux驱动都会用到

• 实验

– 在mini_linux_module的基础上添加驱动注册部分

驱动注册——头文件

• 驱动注册使用结构体platform_driver,该结构体在头文件“vim

include/linux/platform_device.h”中

• 驱动注册platform_driver_register,驱动卸载函数

platform_driver_unregister也在这个头文件中

– 这两个函数的参数都只有结构体platform_driver

驱动注册——注册结构体

驱动注册——注册结构体

• 驱动常见的几种状态,初始化,移除,休眠,复位

– 就像PC一样,有的驱动休眠之后无法使用,有的可以使用;有的系统唤

醒之后,驱动需要重新启动才能正常工作,也有直接就可以使用等等

• probe函数

– platform_match函数匹配之后,驱动调用的初始化函数

• remove函数

– 移除驱动函数

• suspend函数

– 悬挂(休眠)驱动函数

• resume函数

– 休眠后恢复驱动

• device_driver数据结构的两个参数

– name和注册的设备name要一致

– owner一般赋值THIS_MODULE

实验

• 在mini_linux_module的基础上添加驱动注册部分

• 编译,在开发板上加载和卸载驱动

迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解的更多相关文章

  1. 迅为4412开发板Linux驱动教程——总线_设备_驱动注冊流程具体解释

    视频下载地址: 驱动注冊:http://pan.baidu.com/s/1i34HcDB 设备注冊:http://pan.baidu.com/s/1kTlGkcR 总线_设备_驱动注冊流程具体解释 • ...

  2. 迅为4412开发板Linux驱动教程——编写简单应用调用驱动

    Linux驱动教程:http://pan.baidu.com/s/1c0hljUS 编写简单应用调用驱动--头文件 • 打印头文件 – include <stdio.h>调用打印函数pri ...

  3. 迅为4412开发板Linux驱动教程/硬件知识及原理图的使用

    视频教程下载地址:http://pan.baidu.com/s/1pJwxUfL 嵌入式研发流程介绍 • PCB研发流程介绍 – 方案,原理图(网表) – layoutproject师(gerber文 ...

  4. 迅为4412开发板Linux设备树的镜像烧写和源码简单优化教程

    1 烧写:   烧写和4412默认镜像的烧写类似,使用fastboot. 先更新uboot,用4412默认uboot更新支持设备树的uboot 用支持设备树的uboot烧写. 进入支持设备树的uboo ...

  5. 迅为4412开发板Linux驱动教程之GPIO的初始化

    视频下载地址:http://pan.baidu.com/s/1c06oiti GPIO的初始化 • 在内核源码目录下使用命令“ls drivers/gpio/*.o”,可以看到“gpio-exynos ...

  6. 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法

    迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...

  7. 从需求的角度去理解Linux系列:总线、设备和驱动

    笔者成为博客专家后整理以前原创的嵌入式Linux系列博文,现推出以让更多的读者受益. <从需求的角度去理解linux系列:总线.设备和驱动>是一篇有关如何学习嵌入式Linux系统的方法论文 ...

  8. [转帖]迅为4412开发板最小linux系统的存储空间修改

    本文转自迅为论坛:http://www.topeetboard.com 最小linux系统的存储空间修改以修改成 1G 存储空间为例来修改,如果需要改成其他大小的存储空间,参照此方法修改即可. 首先连 ...

  9. 【学习/研发】嵌入式Linux/Android开发有它就够了——迅为4412开发板

    网站:http://www.topeetboard.com 光盘资料+网盘资料+配套视频+售后支持,助您加速学习研发的进程 产品介绍 iTOP-Exynos4412开发板采用 Exynos4412的主 ...

随机推荐

  1. Python入门笔记(24):Python面向对象(1)速成

    一.Python经典类与新类 经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类: class classics: 'def ...

  2. 【C#进阶系列】02 PE文件,程序集,托管模块,元数据——还是那个Hello world

    好了,还是这张图,还是一样的Hello world. 因为本章其实很多都是讲一些命令行编译啊什么鬼的配置类的东西,要用的时候直接百度或者回头查书就可以了, 所以了解一下也就行了,也没有记录下来,接下来 ...

  3. x3d 规范 在线镜像版

    国内访问web网站不稳定,在此部署一个国内的在线版本,供有需要的同学查阅. 注:已失效 x3d规范文档: https://code.csdn.net/x3dcn/x3d-specification-d ...

  4. 基于bootstrap的图片轮播效果展示

    <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...

  5. PHP KMP算法实现

    function getNext( $str ){ $ret = array(0=>0); for( $j =1; $j < strlen($str); $j++ ){ $_s = sub ...

  6. K3Cloud开放数据模型

          金蝶K/3 Cloud是基于WEB2.0与云技术的一个开放式.社会化的新时代企业管理服务平台.整个产品采用SOA架构,完全基于BOS平台组建而成,业务架构上贯穿流程驱动与角色驱动思想,结合 ...

  7. LinkedList的实现源码分析

    LinkedList 以双向链表实现.链表无容量限制,但双向链表本身使用了更多空间,也需要额外的链表指针操作. 按下标访问元素--get(i)/set(i,e) 要悲剧的遍历链表将指针移动到位(如果i ...

  8. Android图像处理之Bitmap类

      Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bitmap来实现 ...

  9. jQuery corner 圆角插件

    jquery.corner是一款强大的圆角插件(所产生的不止只是圆角效果),兼容包括IE6.IE7.IE8.firefox.Opera .Safari.Chrome等主流浏览器,唯一的缺点是为了产生边 ...

  10. Javascript中的Label语句

    在javascript中,我们可能很少会去用到 Label 语句,但是熟练的应用 Label 语句,尤其是在嵌套循环中熟练应用 break, continue 与 Label 可以精确的返回到你想要的 ...