Unix 驱动程序便携性

Unix 驱动程序便携性,unix,driver,portability,Unix,Driver,Portability,对于这个网站来说,这可能是一个蹩脚的问题,但接下来就是 司机可以随身携带吗?例如,可以为mac的键盘背光编写驱动程序,并将其移植到另一个unix系统(可能是Solaris)上吗 或者说,驱动程序的可移植性在术语上是矛盾的 任何涉及此主题的文章都将不胜感激。设备驱动程序需要提供两层抽象,这使得可移植性至少很难实现: 1) 当然,需要为特定设备编写驱动程序。您可以理解的假设是,一旦我根据适当的设备规范(数据表,…)实现了驱动程序,为什么它不应该在需要访问设备的每台计算机上运行呢 言归正传 2) 驱动

对于这个网站来说,这可能是一个蹩脚的问题,但接下来就是

司机可以随身携带吗?例如,可以为mac的键盘背光编写驱动程序,并将其移植到另一个unix系统(可能是Solaris)上吗

或者说,驱动程序的可移植性在术语上是矛盾的


任何涉及此主题的文章都将不胜感激。

设备驱动程序需要提供两层抽象,这使得可移植性至少很难实现:

1) 当然,需要为特定设备编写驱动程序。您可以理解的假设是,一旦我根据适当的设备规范(数据表,…)实现了驱动程序,为什么它不应该在需要访问设备的每台计算机上运行呢

言归正传

2) 驱动程序是为了适应特定的操作系统而编写的。每个操作系统都有自己的操作方法

a) 访问设备(例如,用于读取/写入I/O端口的函数)的调用可能不同,或者具有不同的签名。此外 b) ,驱动程序的最终目标是让用户可以访问设备—可以通过文件系统接口、网络套接字或X输入协议。出于这些目的,每个操作系统都有自己的抽象集,驱动程序需要适应这些抽象集

这些就是移植驱动程序有点困难的原因。尽管如此,仍有一些方法试图实现这一点,大多数情况下,都是通过使用胶水代码包装原始驱动程序,将预期的驱动程序/操作系统接口转换为目标接口

  • 是一个允许在Linux上运行Windows WiFi驱动程序的库
  • 卡尔斯鲁厄的一些人提议使用
  • 据我所知,有几个操作系统框架使用设备驱动程序包装库在其环境中运行Linux/BSD设备驱动程序。例如,请参见
  • 是的,他们可以。 假设驱动程序是为设备规范编写的,那么唯一阻止驱动程序可移植性的就是底层操作系统,因为不同的操作系统具有不同的体系结构和不同的控件来调用和加载设备驱动程序。 但是已经有了一些已知的实现,其中底层操作系统可以被抽象,并且可以提供一个统一的平台。这可以提高驱动程序的可移植性