为什么驱动程序在不同操作系统平台下要有不同的版本
现在的硬件功能越来越多,结构也越来越复杂,一些通用的驱动程序基本上不能驾驭它,甚至根本无法识别。好在硬件厂家都会发布配套的驱动程序,配合着用,也还算将就。
但是,如果有一天,我买了一块手写板,而我呢偏偏又是一个 Linux 爱好者。我发现厂家宣传的什么多高的识别率,能识别连笔书写的汉字等,都是建立在你使用的是 Windows 操作系统的基础上的,离开了 Windows ,我的电脑根本就不能用它。我该不该理解为这是厂家对消费者的一种歧视?
或许厂家会说,“大哥,你站在我的立场上想一想好不好,那么多操作系统,我要开发多少个版本的驱动啊?我容易吗?” 这似乎也有一点道理。
可为什么是驱动程序去配合操作系统,而不是操作系统去配合驱动程序。就好象一台电脑可以装不同版本的系统,但是它的 BIOS 还是原来的 BIOS 一样。为什么驱动程序不能像 BIOS 一样固化在最底层,而是依靠系统的内核去加载。真的必须这样吗?答案当然是否定的,现在就有一种比较可行的方法, EFI 。
EFI (Extensible Firmware Interface,可扩展固件接口) 在现在来说还是相当新颖的,不少人或许都没听说过。但是苹果公司生产电脑你这件事你总知道吧,他们生产的 Mac 电脑,底层用的就是 EFI ,而不是 80 年代的BIOS。 EFI 采用 C/C++ 语言编写,较现时普遍的 BIOS 运行于16bit不同, EFI 运行于 32 或 64bit ,而且 EFI 更可让各家厂商自行撰写的驱动程序直接挂入 EFI 之中,成为过去固件工作内容的一部分。 也就是说,操作系统完全可以不需要另外安装驱动程序,通过 EFI 提供的接口,它就可以实现对硬件的所有操作。
我们还需要为一个硬件开发许多个不同平台下的驱动吗?
EFI 的时代即将带来, BIOS 是时候离开了。