【迅为iTop4412学习笔记】4. 总线、设备、驱动,注册流程

声明

以下都是我刚开始看驱动视频的个人强行解读,如果有误请指出,共同进步。

本节目标

  1. 了解Linux总线、设备、驱动是什么

基本知识

一般的设备:接入设备 -> 注册设备 -> 注册驱动
热插拔设备:注册驱动 -> 接入设备 -> 注册设备

查看命令

#总线(i2c,spi,platform)
ls /sys/bus/
# 设备号
cat /proc/devices
# 杂项设备号
cat /proc/misc

简述

  Linux的设备模型是用总线(bus)、设备(device)和驱动(driver)来描述的。所有的设备和对应的驱动都必须挂载在某一个总线上。

总线

以下是引用:

  在Linux设备模型中,Bus(总线)是一类特殊的设备,它是连接处理器和其它设备之间的通道。为了方便设备模型的实现,内核规定,系统中的每个设备都要连接在一个Bus上,这个Bus可以是一个内部Bus、虚拟Bus或者Platform Bus。

  我们重点学习的一个总线,就是platform bus(虚拟总线),芯片包含的东西再多,也要外接各种各样的设备,为了安置他们就有了虚拟总线,因为设备都要挂载在总线上,那些外接的、不好安置的,都注册到platform虚拟总线都行。

设备

问:我们如何分辨设备?答:设备号

  每个设备都要给他分配一个设备号,这样我们才能知道谁是谁。

问:万一设备有很多,岂不是杂乱无章?答:分主、次设备号

  我们去超市买东西,能准确找到东西是因为分类,我们首先要找到同一类东西在哪,再到那里去找我们要的东西。
  设备也是同理。设备先分类,一类设备一个设备号,我们叫他主设备号。这一类设备里我们再具体到每个具体的设备,分配一个次设备号。(后面会讲,设备号是dev_t类型,高12位用来表示主设备号,低20位用来表示次设备号)
  主、次设备号这些都是可以自己定义的,但不是没有限制,linux的主设备号一共有256个(0-255),一些常用设备,Linux固定了一些主设备号。比如主设备号10固定是用于杂项设备等等。

具体流程

  简述一下,以后有心得了再补充。

  这些内容看看就好,有点概念即可。具体的函数以后会慢慢讲。

  设备、驱动挂载在总线上是核心思想。一般情况下,我们先注册设备,再注册驱动。

  注册设备时我们会用到一个结构体platform_device,注册驱动的结构体是platform_driver,里面都包含了例如name和id这样的成员变量。

  当你注册驱动的时候,系统会通过驱动的name在总线里面查找、匹配一个同name的设备。当你注册设备的时候,系统也会去匹配驱动。如果没有,则匹配失败,告辞。如果有,则匹配成功,然后会调用驱动里的probe()函数进行注册驱动。

  大致就是这么个流程。

看到的几个具体讲解platform的链接,分享一下

【设备注册与驱动注册概念讲解】
https://blog.csdn.net/coolwriter/article/details/78011946
【驱动注册函数讲解】
https://blog.csdn.net/ufo714/article/details/8595021



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值