AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1758062
Accepted
PentaKon
PentaKon
Asked: 2022-12-17 02:20:34 +0800 CST2022-12-17 02:20:34 +0800 CST 2022-12-17 02:20:34 +0800 CST

为什么固件和驱动程序必须分开?[复制]

  • 772
这个问题在这里已经有了答案:
固件和设备驱动的区别和联系 (4个回答)
9 天前关闭。

本帖9天前编辑送审,重开帖失败:

原始关闭原因未解决

查看设备固件与驱动程序的差异,我真的不明白为什么我们在技术上需要区分。我知道固件不容易更改,它负责低级别的设备操作,而驱动程序在那里与主机操作系统进行通信。

问题是,为什么我们不能将这两层合二为一。只是一个知道如何与操作系统通信并将所有请求直接转换为低级设备操作的驱动程序。是为了便于开发(即减少开发该软件所需的开发人员知识)吗?是否可以使用不在闪存中的软件与设备通信?

drivers
  • 3 3 个回答
  • 1581 Views

3 个回答

  • Voted
  1. Best Answer
    jvb
    2022-12-17T02:50:40+08:002022-12-17T02:50:40+08:00

    不,这两种类型的软件通常运行在不同类型的机器上。

    固件在外围设备的处理器/控制器上运行,驱动程序在您机器的 CPU 上运行。这些通常甚至是不同的类型。

    理论上,可以让您机器的 CPU 执行外围设备中的所有位转换。这在早期的计算机中已经完成。但这是要付出高昂代价的。

    通常,外部协议涉及硬时序限制(想想网卡或 CRT 显示器)。您的 CPU 需要处理大量中断才能在正确的时间完成工作。出于这个原因,在著名的 Sinclair ZX-81 上,当 CPU 正在努力工作时,显示器会关闭 - 没有时间刷新屏幕 :)

    因此,我们现在试图解耦外围设备的工作。当一个完整的网络数据包到达时, CPU 将得到通知,并且不必轮询线路以更改位。

    • 31
  2. Luke Attard
    2022-12-17T15:08:31+08:002022-12-17T15:08:31+08:00

    固件直接使用设备的硬件在设备上运行。一种看待它的方式是,固件是操作系统的 API,无论计算机运行什么操作系统,如果它接收到 x 指令,那么固件将执行 y,并可能返回值 z。该设备将有自己的时钟来控制执行指令的速度,它有自己的内存,并且设备上的处理器可能与计算机不同,例如计算机可能是 amd64,但设备有 arm64 处理器。固件不直接与 CPU 或 ram 通信,它从总线获取指令,并将数据放回总线。

    驱动程序在操作系统内核级别或操作系统用户级别运行在计算机上,驱动程序依赖于操作系统,并且必须满足操作系统的要求才能运行。驱动程序通常会处理任何需要计算机的 CPU 和/或 RAM 的工作,一旦指令的每次处理完成,指令就会通过固件传递给设备。

    • 10
  3. fraxinus
    2022-12-17T14:27:21+08:002022-12-17T14:27:21+08:00

    事实上,他们不必分开。

    在很多情况下,我们可以遍历整个范围,从直接从中央 CPU 控制硬件,一直到尽可能多地在固件中实现。

    以下是有关固件/驱动程序平衡的设计注意事项的不完整列表:

    1. 您想使用标准驱动程序或接口吗?

    当然,可以创建一个 USB 闪存棒,将 NAND 语义暴露给驱动程序并保存控制器芯片。并以某种方式分发您的异国情调的驱动程序(适用于 Windows、Linux、MAC、Konica 打印机等...)。另一方面,用户和操作系统开发人员都希望 U 盘能够与标准块设备驱动程序一起使用。带非 HID 接口的光电鼠标?也不是一个好主意。

    1. 您的某些功能专利/NDA/商业秘密是否负担重重?

    驱动程序(即使已编译)可用于轻松进行逆向工程和更改固件 - 更不用说了。视频芯片经常出现这种情况。

    1. 合规性?

    许多与无线电相关的固件(wifi、手机、蓝牙)强制遵守频谱规定。

    1. 成本?通常在设计和制造费用方面都有一个最佳点。

    等等等等...

    最重要的是,有相当多的设备缺少 ROM 内存,因此固件实际上是驱动程序的一部分,并在每次开机时上传到设备。

    • 2

相关问题

  • 测试 tensorflow-gpu 失败,状态为:CUDA 驱动程序版本对于 CUDA 运行时版本不足(这不是真的)

  • 如何查找导致“Windows 无法验证此驱动程序软件的发布者”的驱动程序?

  • unixODBC 驱动程序管理器 SQL Server 错误

  • 为什么我的笔记本电脑不使用 nvidia GPU?

  • 客户端未响应 TCP SYN-ACK 数据包以太网驱动程序

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve