当前位置: 首页 > news >正文

Linux驱动三要素之——总线

linux驱动三要素:总线、设备、驱动,我们讲一下总线的由来。

历史原因:Linux 不想为 “无总线设备” 再发明一套新框架
早期 Linux 驱动模型:
I2C 设备 → 走 I2C 总线
PCI 设备 → 走 PCI 总线
USB 设备 → 走 USB 总线
UART、GPIO、TIMER、NPU、ISP 这类 内存映射控制器 → 没硬件总线
内核开发者不想为内存映射设备再写一套独立框架再搞一套匹配、注册、电源管理逻辑,于是直接复用已有的总线框架,创建了一条虚拟的、软件 - only 的总线,让这些设备也能挂上去被统一管理
和驱动匹配。

官方文档原文如下:

Platform Devices and Drivers

See <linux/platform_device.h> for the driver model interface to the platform bus: platform_device, and platform_driver. This pseudo-bus is used to connect devices on buses with minimal infrastructure, like those used to integrate peripherals on many system-on-chip processors, or some “legacy” PC interconnects; as opposed to large formally specified ones like PCI or USB.

Linux kernel官方文档路径:

https://docs.kernel.org/driver-api/driver-model/platform.html 一、内核官方文档: https://docs.kernel.org 结构就是API + 使用手册,查 platform、pinctrl、clock、reset、dma、i2c、spi、regulator 一应俱全 每个接口怎么用、结构体含义、例子都有,版本跟内核同步,不会过时 二、Linux 内核邮件列表 https://lkml.org/lkml/2011/3/17/283 全球 Linux 内核开发者最核心、最原始、最权威的公开讨论社区 三、驱动开发小抄式手册: https://lwn.net/Kernel/LDD3/ 经典到所有驱动框架逻辑都讲透,字符设备、ioctl、mmap、poll、proc、sysfs 全套模板 可以当框架模板手册用语言直白,不像内核文档那么生硬,有些接口老了,但思想和框架永不过时 四、内核源码在线浏览: https://git.kernel.org/ 写驱动最终都要查: platform_bus_type 定义 of_match_ptr 是啥 devm_xxx 函数实现 结构体成员
http://www.jsqmd.com/news/581956/

相关文章:

  • 打卡信奥刷题(3056)用C++实现信奥题 P6767 [BalticOI 2012/2020] 玫瑰 (Day0)
  • 基于yolov26的矿井人员安全检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 从仿真到产线:基于快马平台开发openclaw重启的零件分拣实战项目
  • 7大能力解锁:让浏览器成为你的全能Markdown工作站
  • 《Windows Internals》10.1.19 Registry symbolic links:为什么有些注册表键看起来像真的在那儿,其实只是被配置管理器“重定向”到了别处?
  • 连锁经营行业商旅平台选型指南与测评排名Top 6:多门店与全链路商旅管控方案
  • Unity之Luban表格配置
  • OpenClaw Memory 使用指南
  • Oracle里的MINUS是什么
  • Java面向对象三大特性:构建高质量代码的基石
  • C++ Move 语义的性能分析与优化
  • 保姆级教程:用国产龙虾AiPy自己打造全链路写文到一键发布
  • 终极指南:5步解锁MacBook Touch Bar在Windows系统的完整显示功能
  • d2s-editor:革新暗黑破坏神2存档编辑体验的开源工具
  • 智能家居中枢:OpenClaw+Qwen3-32B统一控制米家与HomeKit设备
  • 炸穿 AI 圈!Claude Code 51.2 万行源码全泄露:封号机制、隐藏彩蛋与 Harness 工程顶级架构全解密
  • 利用快马平台快速构建openclaw机器人抓取配置模型的可交互原型
  • 如何打造专属漫画体验?Venera主题定制全攻略
  • 网站爬虫原理,基于浏览器点击行为还原可接口请求
  • 3分钟上手AppImageLauncher:让Linux应用安装像Windows一样简单 [特殊字符]
  • 实在Agent实测:人与Agent将如何协同工作?深度拆解企业级AI助理重塑生产力的5大真相
  • java的@ComponentScan(com.sx)怎么理解?
  • Local Moondream2快速部署:VS Code Dev Container一键开发环境
  • 毕业设计作品精选【芳芯科技】酒驾检测座椅设计
  • 3个技术突破让赛博朋克2077玩家实现游戏体验自由定制
  • 通用物体识别-ResNet18镜像5分钟快速部署:零基础搭建AI图像分类服务
  • Redis 从入门到精通(四):字符串操作详解
  • 游戏脚本助手,电脑点击器,脚本自动点击识图找图_无限试用版
  • c/c++代码如何在python环境中调用(本次应用需求:通过c++中的算法处理来自串口的数据)
  • 第一次才搞清楚,什么叫医保报销【以职工医保带入说明】!