首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux 总线、设备、驱动模型的探究

不同的 API 去获取对应的硬件信息。...没错,Linux 内核里就是运用了这种设计思想去对设备和驱动进行适配隔离的,只不过在内核里我们不叫做适配层,而取名为总线,意为通过这个总线去把驱动对应的设备绑定一起,如图: ?...基于这种设计思想,Linux 把设备驱动分为了总线、设备和驱动三个实体,这三个实体在内核里的职责分别如下: ?...总线存在的目的就是把设备和对应驱动绑定起来,让内核成为该是谁的就是谁的和谐世界,有点像我们生活中红娘的角色,把有缘人通过红线牵在一起。...最底层是不同板子的板级文件代码,中间层是内核的总线,最上层是对应驱动,现在描述板级的代码已经和驱动解耦了,这也是 Linux 设备驱动模型最早的实现机制,但随着时代的发展,就像是人类的贪婪促进了社会的进步一样

6.5K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux笔记(21)| platform总线驱动分析

    //本文主要参考《野火Linux实战开发指南》 上次跟大家分享了设备模型的一些东西,包括总线、设备、驱动等的一些概念,还有他们之间的联系。...因为在Linux当中,对于I2C、SPI、USB这些常见类型的物理总线来说,Linux内核会自动创建与之相应的驱动总线,因此I2C设备、SPI设备、 USB设备自然是注册挂载在相应的总线上。...它们也就没有相应的物理总线,比如led、rtc时钟、蜂鸣器、按键等等,Linux内核将不会为它们创建相应的驱动总线。...为了使这部分设备的驱动开发也能够遵循设备驱动模型,Linux内核引入了一种虚拟的总线——平台总线(platform bus)。...平台总线用于管理、挂载那些没有相应物理总线的设备,这些设备被称为平台设备,对应的设备驱动则被称为平台驱动

    2.4K40

    19.Linux-USB总线驱动分析

    是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: 识别USB设备,给USB设备找到对应驱动程序 新接入的USB设备的默认地址(编号)是0,在未分配新编号前,PC主机使用0地址和它通信...然后USB总线驱动程序都会给它分配一个地址(编号) PC机想访问USB总线上某个USB设备时,发出的命令都含有对应的地址(编号) USB是一种主从结构。..."中断输入端点" 其中端点0是设备的默认控制端点, 既能输出也能输入,用于USB设备的识别过程 同样linux内核也自带了USB总线驱动程序,框架如下: 要想成为一个USB主机,硬件上就必须要有USB...其中usb_bus_type是一个全局变量, 它和我们之前学的platform平台总线相似,属于USB总线, 是Linux中bus的一种....id_table来匹配该USB设备 USB总线驱动程序大概流程就此结束,未完待续——分析完后下节开始写USB驱动

    8.7K91

    Linux内核平台总线设备驱动模型浅析

    复习总线设备驱动模型,做了一点小笔记,大牛略过。 一、Linux系统的驱动框架的基础很大一部分是围绕着总线设备驱动模型展开的。...   struct device_driver*driver; //该设备所对应驱动    void   *platform_data;    // 平台特定数据,一般我们移植内核时需填充该结构体(...如支持mini2440的nandflash,dm9000等)    dev_t           devt;            // 设备号  }; 任何建立在平台总线设备驱动模型基础上的驱动代码...(dev);  //做各类初始化    //将设备挂接在对应总线上,主要工作把设备(device)添加到总线       (bus_type)的klist_devices链表    return device_add...) {     // 将驱动绑定在对应总线上,主要工作把驱动(device_driver)添加到总线(bus_type)的klist_drivers链表中去      ret =bus_add_driver

    2K30

    I2C总线架构 之 总线驱动

    这种做法完全不适应Linux的通用性的设计理念,对于Linux来讲:同样的事情我只做一遍,向外提供接口,不管你是什么IIC设备挂载那条IIC总线上,都可以用。...因此,这就需要Linux在代码架构上有非常严谨的模块化设计。 架构设计 在Linux设计中,将I2C代码框架分为三个部分:I2C总线、I2C核心、I2C驱动。...「I2C总线驱动(i2c adapter):」 根据平台定制的i2c驱动,其中包含i2c传输的算法设计。...I2C设备驱动对上和用户应用程序打交道,对下和I2C核心对接。 ? 本篇主要对IIC总线驱动的总结。...i2c总线结构体 Linux在分层中,必不可少的将每一层模块封装成一个结构体,然后将结构体作为一个与外接交互的桥梁。

    1.4K30

    服务器系统sm总线控制器驱动,sm总线控制器驱动

    SM总线控制器是全称System Management,是主板控制芯片上的一个通信控制器,主板芯片技术中的一种,如果你遇到设备管理器中quotm总线控制器quot有一黄色问号,下载您所使用的主板最新的系统所对应驱动程序...,在安装了正确的主机板驱动程序后,系统将能够正确识别您所有的芯片,问题即可解决。...sm总线控制器简介 几年前,Intel在其81x系列芯片组中就开始使用ICH芯片,并在ICH中运用System Management Bus(简称Smbus,系统管理总线)技术。...SM总线控制器是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。...“Intel Software Installation Utility”,可以在主板驱动盘 sm总线控制器驱动安装方法 1.到本站下载安装,打开安装程序,点击下一步继续安装 2.点击yes进行下一步

    1.2K30

    计算机总线控制驱动,什么是sm总线控制器,总线控制器驱动怎么安装?「建议收藏」

    如果您的设备管理器中”sm总线控制器”有一黄色问号,那么你就可以下载这款Intel主板上的SM总线控制器驱动程序(含64位)来进行安装了! 什么是sm总线控制器?...说白了,sm总线控制器是主板驱动的一部分,如果你的设备管理器里也是一个问号,建议你重新安装一下计算机的主板驱动即可。...sm总线控制器在XP中一般不会很好的被自动安装驱动程序(不像很多USB等都可以在XP自带的驱动库里自动识别),需要单独安装。 总线控制器驱动怎么安装?...SM总线控制器是主板控制芯片上的一个通信控制器。今天我们来说说SM总线控制器驱动的安装。...下面再次打开设备管理器,再SM总线控制器上点击右键,更新驱动程序—否,暂时不,下一步—选择从列表或指定位置安装,下一步—具体选项看下图: 然后确定,下一步!

    7.6K20

    Linux下PyTorch、CUDA Toolkit 及显卡驱动版本对应关系(附详细安装步骤)

    1.CUDA驱动和CUDA Toolkit对应版本 表一:CUDA驱动及CUDA Toolkit最高对应版本 最新可查阅官方文档 注:驱动是向下兼容的,其决定了可安装的CUDA Toolkit...2.CUDA Toolkit版本及其可用PyTorch对应版本(参考官网,欢迎评论区补充) 表二:CUDA Toolkit版本及可用PyTorch对应关系 CUDAToolkit版本 可用PyTorch...,且CUDA Toolkit及PyTorch也可对应更新至新版本。...步骤一: 使用nvidia-smi查询驱动版本: 如图中Driver Version所示,该卡目前的驱动版本为384.81。 步骤二: 此处提供三种方法可供选择。...torchvision cudatoolkit=9.0 -c pytorch (2)-c pytorch为采用官网源下载,如果去掉,则在清华镜像源配置后可采用清华镜像源下载,配置清华镜像源可参考:Linux

    4.5K30

    关于SM总线控制器驱动的安装

    没有装SM总线控制器的再设备管理器看起来是这样的: 虽然说,这个控制器不装对日常简单应用没有多大影响,但是为了保证计算机的性能,避免在使用过程中出现各种奇怪的问题,不装是不行的。...下面开始安装,一般的驱动安装也可遵循此过程。 首先解压ATI SB600南桥驱动。...我的版本是7.8的,解压默认再C:\ATI\******** 然后打开相应文件夹,如下图: 红圈画的就是传说中的控制器驱动文件。...下面再次打开设备管理器,再SM总线控制器上点击右键,更新驱动程序—否,暂时不,下一步—选择从列表或指定位置安装,下一步—具体选项看下图: 然后确定,下一步! 稍微等待下就大功告成了。

    1.3K30

    I2C总线架构 之 设备驱动

    搭建驱动框架 所谓搭建驱动框架,无非就是字符驱动驱动入口、出口、以及对应用层的接口实现。与其他字符驱动的搭建是一样的。 c....通过以上读写的实现,与上一篇文章 《I2C总线架构 之 I2C协议》 读写时序是对应的: (1) 写操作只需要一个msg结构体: 起始位 + 写操作(msg[0]) + 停止位。...注销i2c设备 注销操作:在字符驱动出口函数中,卸载掉注册的i2c设备。这里调用i2c_del_driver即可实现,与i2c_add_driver是对应的。...通读文章大致了解,会发现本篇i2c设备驱动与虚拟总线platform架构类似。不同的是platform是软件实现的虚拟总线,在soc上并不存在;而i2c总线,在soc上是实际存在的。...参考: 《Linux设备驱动开发详解》 《【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.4》 https://blog.csdn.net/Egean/article/details/81085077

    1.9K70

    USB总线-Linux内核USB3.0设备控制器之UDC驱动分析(六)

    USB Function驱动通过调用这些接口匹配及访问USB设备控制器,而底层USB控制器驱动要实现这些接口定义的功能。下面分析一下主要的UDC驱动接口调用流程。 2....[include/linux/usb/gadget.h] int usb_add_gadget_udc(struct device *parent, struct usb_gadget *gadget)...设置端点对应的FIFO编号为dep->number >> 1,控制端点的输入和输出端点其FIFO编号相同,其他输出端点FIFO编号为0。 设置端点的bInterval。...如果数据信息包很大且设备总是没有准备好,不断重新尝试可能会浪费很多总线时间。这种情况下,使用带有多个数据信息包的高速批量和控制传输将是更好的途径。...参考资料 Rockchip RK3399TRM V1.3 Part1 Rockchip RK3399TRM V1.3 Part2 Linux内核4.4.179版本源码 USB开发大全(第四版)

    9.3K20

    让天堂的归天堂,让尘土的归尘土——谈Linux总线、设备、驱动模型

    基于这样的想法,linux把设备驱动分为了总线、设备和驱动三个实体,总线是上图中的统一纽带,设备是上图中的板级互连信息,这三个实体完成的职责分别如下: 实体 功能 代码 设备 描述基地址、中断号、时钟、...总线 完成设备和驱动的关联 drivers/base/platform.cdrivers/pci/pci-driver.c… 我们把所有的板子互连信息填入设备端,然后让设备端向总线注册告知总线自己的存在...如下图,某个电路板子上有2个ABC,1个DEF,1个HIJ设备,以及分别1个的ABC、DEF、HIJ驱动,那么总线,就是让2个ABC设备和1个ABC驱动匹配,DEF设备和驱动一对一匹配,HIJ设备和驱动一对一匹配...总线里面有个match()函数,来完成哪个设备由哪个驱动来服务的职责,比如对于挂在内存上的platform总线而言,它的匹配类似(最简单的匹配方法就是设备和驱动的name字段一样): static int...但是,这个VxBus,可以说和Linux总线、设备、驱动模型是极大地雷同的。但是,请问,你为什么要叫VxBus呢,它非常地Vx吗?

    97731
    领券