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

商城网站怎么建网站建设成本控制

商城网站怎么建,网站建设成本控制,网架公司名字,公众号制作模板免费在 Linux 设备驱动 开发中,驱动程序(Driver) 需要与 硬件设备(Device) 进行匹配,以便正确加载并控制设备。Linux 提供了多种设备与驱动匹配机制,不同类型的设备使用不同的匹配方法。 1. 设备与驱…

Linux 设备驱动 开发中,驱动程序(Driver) 需要与 硬件设备(Device) 进行匹配,以便正确加载并控制设备。Linux 提供了多种设备与驱动匹配机制,不同类型的设备使用不同的匹配方法。


1. 设备与驱动匹配的几种方法

Linux 主要通过以下几种方式进行设备与驱动的匹配:

  1. 总线匹配(Bus Matching)
  2. 设备树匹配(Device Tree Matching)
  3. 平台设备匹配(Platform Device Matching)
  4. I2C/SPI 设备匹配
  5. USB 设备匹配
  6. PCI 设备匹配
  7. OF(Open Firmware)设备树匹配
  8. 热插拔(Hotplug)机制匹配

不同的匹配方式适用于不同的总线和设备类型。


2. 设备与驱动匹配机制详解

(1) 总线匹配(Bus Matching)

适用于: 所有挂载在 总线(如 PCI、USB、I2C、SPI、Platform 总线) 上的设备。

匹配方式:

  • 总线(Bus) 负责管理设备和驱动,并调用 match() 方法匹配驱动与设备。
  • 匹配规则 由各个总线(bus_type)定义,如 PCI、USB、I2C 等总线。

示例:定义总线匹配规则

struct bus_type my_bus_type = {.name = "my_bus",.match = my_bus_match,  // 设备与驱动匹配函数
};

匹配函数:

int my_bus_match(struct device *dev, struct device_driver *drv) {return !strcmp(dev->name, drv->name);
}

该匹配方式用于系统所有总线级设备匹配。


(2) 设备树匹配(Device Tree Matching)

适用于: ARM、嵌入式平台,依赖 设备树(Device Tree, DT) 进行设备描述。

匹配方式:

  • 设备树 DTS 中定义设备,并使用 compatible 字段标识。
  • 驱动程序中定义 of_device_id 表,Linux 内核根据 compatible 进行匹配。

示例:DTS 设备描述

soc {uart@10000000 {compatible = "myvendor,my-uart";reg = <0x10000000 0x100>;};
};

示例:驱动匹配

static const struct of_device_id my_uart_dt_ids[] = {{ .compatible = "myvendor,my-uart" },{},
};
MODULE_DEVICE_TABLE(of, my_uart_dt_ids);static struct platform_driver my_uart_driver = {.probe = my_uart_probe,.driver = {.name = "my_uart",.of_match_table = my_uart_dt_ids, // 设备树匹配},
};

关键点:

  • compatible 在设备树和驱动中必须匹配。
  • of_match_table 指定设备树匹配表。

(3) 平台设备匹配(Platform Device Matching)

适用于: 无标准总线的设备(如 SoC 内部设备)。

匹配方式:

  • platform_device 结构体中定义设备名称。
  • platform_driver 结构体中定义驱动名称,进行匹配。

示例:定义平台设备

struct platform_device my_device = {.name = "my_platform_device",
};

示例:定义平台驱动

static struct platform_driver my_driver = {.driver = {.name = "my_platform_device",},.probe = my_probe,
};

关键点:

  • 设备的 .name 必须与 驱动的 .driver.name 一致
  • platform_driver_register() 进行注册。

(4) I2C/SPI 设备匹配

适用于: I2C、SPI 总线上的设备(如传感器、EEPROM)。

I2C 设备匹配

匹配方式:

  • I2C 设备通过 i2c_board_info 结构体静态注册。
  • I2C 驱动匹配 i2c_device_idof_device_id

示例:I2C 设备

static struct i2c_board_info my_i2c_device = {I2C_BOARD_INFO("my_i2c_dev", 0x50),
};

示例:I2C 驱动

static const struct i2c_device_id my_i2c_ids[] = {{ "my_i2c_dev", 0 },{},
};
MODULE_DEVICE_TABLE(i2c, my_i2c_ids);static struct i2c_driver my_i2c_driver = {.driver = { .name = "my_i2c_dev" },.id_table = my_i2c_ids, // 设备 ID 匹配
};

SPI 设备匹配

匹配方式:

  • SPI 设备通过 spi_board_info 静态注册。
  • SPI 驱动匹配 spi_device_id

示例:SPI 设备

static struct spi_board_info my_spi_device = {.modalias = "my_spi_dev",
};

示例:SPI 驱动

static const struct spi_device_id my_spi_ids[] = {{ "my_spi_dev", 0 },{},
};
MODULE_DEVICE_TABLE(spi, my_spi_ids);static struct spi_driver my_spi_driver = {.driver = { .name = "my_spi_dev" },.id_table = my_spi_ids, // 设备 ID 匹配
};

(5) USB 设备匹配

适用于: USB 设备,如 U 盘、键盘、鼠标。

匹配方式:

  • USB 设备具有 VID(厂商 ID)PID(产品 ID),驱动程序中使用 usb_device_id 进行匹配。

示例:USB 设备匹配

static const struct usb_device_id my_usb_ids[] = {{ USB_DEVICE(0x1234, 0x5678) }, // VID: 0x1234, PID: 0x5678{},
};
MODULE_DEVICE_TABLE(usb, my_usb_ids);static struct usb_driver my_usb_driver = {.name = "my_usb_driver",.probe = my_usb_probe,.id_table = my_usb_ids, // USB 设备匹配
};

(6) PCI 设备匹配

适用于: PCI 设备,如显卡、网卡。

匹配方式:

  • PCI 设备具有 Vendor ID(厂商 ID)Device ID(设备 ID),驱动程序使用 pci_device_id 进行匹配。

示例:PCI 设备匹配

static const struct pci_device_id my_pci_ids[] = {{ PCI_DEVICE(0x8086, 0x1234) }, // Intel 设备{},
};
MODULE_DEVICE_TABLE(pci, my_pci_ids);static struct pci_driver my_pci_driver = {.name = "my_pci_driver",.id_table = my_pci_ids, // PCI 设备匹配
};

总结

匹配方式适用设备关键匹配字段
总线匹配所有设备bus.match
设备树匹配ARM、嵌入式compatible
平台设备SoC 内部设备.name
I2C 设备传感器i2c_device_id
SPI 设备Flash、传感器spi_device_id
USB 设备U 盘、鼠标usb_device_id
PCI 设备显卡、网卡pci_device_id

在实际开发中,选择合适的匹配方式能提高驱动程序的兼容性和可移植性。

http://www.dtcms.com/a/419725.html

相关文章:

  • 网站开发详细设计文档电商培训学校
  • 第一章 数据库系统基本概述
  • 【LangChain】P2 LangChain宏观架构深度解析:构建企业级大模型应用的首选框架
  • OAuth2 技术详解
  • 强化学习赋能预训练新突破:RLPT框架让大模型推理效率与精度双飞跃
  • 东莞外贸建站模板做cps要做什么类型的网站
  • 湛江网站建设公司哪个好郑州运营网站搭建优化
  • 从0手写自己的Linux x86操作系统(视频教程)
  • 有模板怎么建站南通市住房建设局网站
  • 高阶常系数线性微分方程求解方法全解析
  • Visual Studio2022 opencv4.12编译viz功能注意
  • 欧洲网站服务器手机上有那种网站吗
  • 网站 国外服务器网络广告和传统广告的区别
  • 4.1 网络层的功能 (答案见原书 P134)
  • 网站备案核验单清晰申请网站空间是申请域名吗
  • 网站建设图文漯河专业做网站的公司
  • windows显示驱动开发-间接显示驱动程序
  • mybatis物理删除某条记录
  • 盘锦威旺做网站建设公司wordpress插件 stock
  • Seedream 4.0阅读总结中文翻译
  • 广州公共资源建设工程交易中心网站app开发培训班
  • 华硕NUC 15Pro 系列 舒适办公新体验的理想之选
  • 企业网站建设中在方案设计上网站建设 建议
  • 智能合约的更新与迭代
  • C语言实战项目:贪吃蛇(2)
  • 南头专业外贸网站建设公司中国建设银行官网首页登录入口
  • 如何做微信网站防封网站建设 用ftp上传文件
  • C++ STL学习笔记: Vector
  • CSS中 min() max() clamp()函数
  • 如何做免费企业网站小程序在建网站吗