繁体   English   中英

驱动程序便携性

[英]Driver Portability

对于这个网站来说,这可能是一个蹩脚的问题,但这里有。

驱动程序可以便携吗? 例如,是否可以为 mac 的键盘背光编写驱动程序,并将其移植到另一个 unix 系统,也许是 Solaris?

或者驱动程序的可移植性是一个矛盾?

任何涵盖该主题的文章将不胜感激。

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

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

进来点

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

a) 访问设备,例如,读/写 I/O 端口的函数可能被不同地调用或具有不同的签名。 此外 b),驱动程序的最终目标是使用户可以访问设备 - 无论是通过文件系统接口或网络 sockets 还是 X 输入协议。 出于这些目的,每个操作系统再次带有自己的一组驱动程序需要适应的抽象。

这就是移植驱动程序有点困难的原因。 尽管如此,还是有一些方法试图实现这一点,大部分时间是通过将原始驱动程序与胶合代码包装起来,将预期的驱动程序/操作系统接口转换为目标接口。

  • NDISWrapper是一个库,允许在 Linux 上运行 Windows WiFi 驱动程序,
  • 卡尔斯鲁厄的一些人建议使用设备驱动虚拟机
  • 我知道的几个操作系统框架使用设备驱动程序包装库在其环境中运行 Linux/BSD 设备驱动程序。 参见例如GenodeL4ReMinix3

是的,他们可以。 假设为设备规范编写驱动程序,唯一妨碍驱动程序可移植性的是底层操作系统,因为不同的操作系统具有不同的体系结构和不同的控件来调用和加载设备驱动程序。 但是已经存在已知的实现,其中可以抽象底层操作系统并且可以提供统一的平台。 这可以导致驱动程序的可移植性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM