• 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解


    本文转自: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的基础上添加驱动注册部分

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

  • 相关阅读:
    [TJOI2013]单词 AC 自动机
    NOIP 2017 逛公园 记忆化搜索 最短路 好题
    [BJWC2012]冻结 分层图最短路
    dijkstra STL 堆优化
    [POI2002][HAOI2007]反素数 数论 搜索 好题
    bzoj 2456: mode 思维题 好题
    [SDOI2012]Longge的问题 欧拉反演_欧拉函数
    [JLOI2011]飞行路线 分层图最短路
    页面加速优化
    制作html5微信页面的经验总结。
  • 原文地址:https://www.cnblogs.com/topeet/p/4724642.html
Copyright © 2020-2023  润新知