为什么有些网卡需要加载外部固件?

为什么有些网卡需要加载外部固件?

我读过了问题/答案,但我仍然不明白为什么有些网卡无需任何额外的固件即可正常工作,而其他网卡则需要加载固件才能工作。

作为一个具体的例子,我曾经遇到过 Broadcom 10Gb 网卡无法工作的问题,因为固件丢失。另一方面,Intel 10Gb 无需任何额外固件即可完美运行。

我假设英特尔卡的芯片内已经有固件,但其他卡需要加载它。它是否正确 ?为什么不是所有制造商都提供带有芯片上已有固件的硬件。

注意:我不是在讨论固件是二进制/专有的还是免费/开源的。我问为什么我需要加载它,以及为什么它尚未包含在设备中。

答案1

只有供应商自己知道真正的答案,但这里有一些猜测。

我认为这只是因为它会使设备更加昂贵。通过要求操作系统在运行时注入固件,他们可以避免设备上对非易失性存储器(如 ROM 或闪存)的需求。

其次,我假设供应商也可能认为设备以这种方式更一致地获得固件升级,因为如果固件是板载的,则几乎没有人会遇到使用奇怪的供应商提供的实用程序重新刷新固件的复杂过程的麻烦。

答案2

当您提到“已包含在设备中”时,我假设您指的是设备驱动程序和固件的一种方法,该方法允许操作系统场景使用预定的(可能由 IEEE 或其他管理机构批准的 API)查询设备)然后以“这是我的设备驱动程序内存芯片位置地址”的响应进行响应,此时操作系统在指定的内存地址加载汇编代码?

那不是很好吗?也许您还应该包括一种使用加密/解密、签名和第三方签名验证来保护所述固件的方法,以确保我新购买的设备固件没有被当前掌权的取代原始固件的压迫政权篡改在将该设备加载到我的新车可扩展自动驾驶功能之前,因为他们匆忙编写了一些代码,这些代码现在在车辆左侧的接近传感器中引入了一个错误,错误计算了三英尺,危及我自己和我的家人。

毕竟,在过去,通过对设备的物理访问,使用 jtag 和其他反汇编代码工具不允许进行此类固件修改。

但在问题答辩中,使用来自网站的可加载固件并验证其校验和也不是一个解决方案。

你提出了一个有趣的问题,我觉得没有资格回答。 :)

相关内容