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

东莞市建设公共交易中心网站首页乌克兰设计网站建设

东莞市建设公共交易中心网站首页,乌克兰设计网站建设,站酷网下载,网站如何做二级域名一、平台总线概念 1.1. 什么是平台总线 什么是平台总线 平台总线是Linux内核虚拟出来的一种总线,并不是实际存在的物理总线(I2C,SPI)。与物理总线的区别在于平台总线是虚拟的,抽象出来的。而物理总线(USB,PCI)是实际存在的硬件。 引入平台总线的目的 将驱动(driver)…

一、平台总线概念

1.1. 什么是平台总线

  • 什么是平台总线
    平台总线是Linux内核虚拟出来的一种总线,并不是实际存在的物理总线(I2C,SPI)。与物理总线的区别在于平台总线是虚拟的,抽象出来的。而物理总线(USB,PCI)是实际存在的硬件。
    在这里插入图片描述

  • 引入平台总线的目的
    将驱动(driver)与硬件(device)资源进行分离,方便管理和统一与平台紧密相关的设备,并提供统一的接口进行访问。

  • Linux中总线的分类
    虚拟总线platform和实际存在的物理总线I2C、SPI、USB

  • 平台总线的实现
    平台总线的工作体系主要定义在driver/base/platform.c中,主要涉及两个结构体struct platform_device 描述设备信息 struct platform_driver描述驱动程序,两者通过设备名字进行关联。

  • 优点
    减少重复代码,提高程序可移植性及效率;
    统一管理和控制各种硬件设备;
    扩展性强,方便添加新的硬件设备;

  • 常见的平台总线

1.2. 平台总线的模型

​ 概述:平台总线模型将设备驱动分为两部分:device.cdriver.c,分别用于描述硬件信息和控制硬件。通过字符串比较,具有相同name的设备(device.c)和驱动(driver.c)被匹配起来以控制硬件。

二、设备(device)&&驱动(driver)

2.1. 设备相关接口&&变量

2.1.1. 通用变量

struct platform_device该结构体位于linux/platform_device.h

struct platform_device {const char *name; /* 设备名称,用于与驱动进行关联 */int id; /* 设备ID,-1:表示不设置 0~x:给设备标注序号 */bool id_auto; /* 是否自动分配ID,1-自动分配;0-不分配 */struct device dev; /* 描述设备的属性和状态,例如内存地址、中断号等 +重要+ */u32 num_resources; /* 设备资源数量 */struct resource *resource; /* 设备资源详细信息 +重要+ */const struct platform_device_id *id_entry; /* 指向平台设备ID表的指针,用于匹配设备驱动程序[暂无需关注] */char *driver_override; /* 强制匹配的驱动程序名称。如果该成员不为NULL,则表示强制匹配该名称的驱动程序[暂无需关注] */struct mfd_cell *mfd_cell; /* 平台设备所属的MFD(多功能设备)单元[暂无需关注] */struct pdev_archdata archdata; /* 平台设备的体系结构相关数据,用于存储与体系结构相关的信息[暂无需关注] */
};

struct device该结构体位于linux/platform_device.h中,当前只需要关注void (*release)(struct device *dev);参数,且注册设备时,必须给该参数赋值,不然驱动无法正常编译。

struct device {struct device *parent;struct device_private *p;struct kobject kobj;const char *init_name; /* initial name of the device */const struct device_type *type;struct mutex mutex; /* mutex to synchronize calls to its driver. */struct bus_type *bus; /* type of bus device is on */struct device_driver *driver; /* which driver has allocated this device */void *platform_data; /* Platform specific data, device core doesn't touch it */void *driver_data; /* Driver data, set and get with dev_set/get_drvdata */struct dev_pm_info power;struct dev_pm_domain *pm_domain;#ifdef CONFIG_PINCTRLstruct dev_pin_info *pins;#endif#ifdef CONFIG_NUMAint numa_node; /* NUMA node this device is close to */#endifu64 *dma_mask; /* dma mask (if dma'able device) */u64 coherent_dma_mask;/* Like dm
http://www.dtcms.com/a/495405.html

相关文章:

  • QML学习笔记(四十一)QML的ColorDialog和FontDialog
  • [LVGL] 从0开始,学LVGL:进阶应用与项目实战(上)
  • 使用 Loki + Promtail + Grafana搭建日志系统
  • PySide 查找功能大杂烩 基于文本编辑器(QPlainTextEdit)
  • Vue3 路由配置和使用与讲解(超级详细)
  • 东盟建设集团重庆工程有限公司网站500强企业排名(2022最新名单)
  • 初次使用基于K3S的大数据平台
  • 极简入门Zookeeper
  • 国产工业软件:制造强国的“破局”之路
  • 从重机展到全球市场:数字化助力装备制造企业实现规范化管理
  • 半导体制造工艺基本认识 二 氧化
  • MongoDB 是关系型数据库吗?
  • 织梦dedecms网站内容页wordpress rss导入
  • RAG各模块联合优化思路:多智能体协作建模-MMOA-RAG浅尝
  • 【小白笔记】KNN 核心预测函数 _predict_one 的过程
  • 营销人职业成长路径:从执行到战略的能力进阶与知识体系构建
  • Elasticsearch 推理 API 增加了开放的可定制服务
  • 做电影网站还能赚钱ace wordpress
  • 建设农家书屋官方网站临沂设计网站的公司
  • 10.queue的模拟实现
  • 有多少网站可以推广业务阿里云个人网站建设
  • 【知识点总结】Vue2 与 Vue2 区别
  • 【CV】神经网络中哪些参数需要被学习?
  • Spring两大漏洞可导致泄露敏感信息及安全防护绕过(CVE-2025-41253/41254)
  • 了解一个文件签名验证工具——sigverif
  • 河北建筑网站江小白网络营销案例
  • 张家口网站建设开发网站开发案例教程
  • 【NestJS】class-transformer什么用
  • 【word多文档docx合并】
  • Endnote | word中加载项消失不见,如何处理?