第23章Linux设备驱动的移植之Linux与其它操作系统之间的驱动移植

23.4 Linux与其它操作系统之间的驱动移植

       在公司的项目更替过程中,可能会出现操作系统的更换,譬如类似的产品中,以前用 VxWorks或 Windows CE,现在想改用 Linux。以前同类产品的 VxWorks/WinCE 运行稳定,且设备驱动也被经过严格测试,现在要换成 Linux 了,是不是 VxWorks/WinCE 下的工作就完全作废了呢?

       在采用原操作系统的系统中,底层的硬件操作代码已经经过验证,这一部分可以被 Linux 利用;VxWorks、WindowsCE 等操作系统驱动的架构和 Linux 的驱动架构有一定的相似性,经过适当的修改,就可以被移植到 Linux 中。

      在移植 VxWorks 驱动到 Linux 驱动的过程中,可以借鉴其流程,但是必须要替换 API、函数和变量命名等。

        除了简单的字符设备外,VxWorks 下的 TTY 设备、MTD 设备、块设备等驱动的架构都和 Linux下的架构有一定相似性,但是,由于 VxWorks 是一种完全定位于嵌入式系统的轻量级操作系统,因此,VxWorks 设备驱动的架构要比 Linux 架构简单。由于 VxWorks 中并不存在内核空间和用户空间的界限,很多时候,驱动甚至可以不遵循架构,直接给应用程序提供接口。

    总结:

            对于块设备、网络设备、PCI 设备、USB 设备等复杂设备,VxWorks和 Linux 驱动的框架呈现出了较大的差异,但其中也不乏共同的设计思想。Linux 驱动工程师应该在了解这些差异的情况下,尽可能地利用 VxWorks 中现成的稳定的代码以减少 Linux 驱动的工作量,至少硬件操作控制这一部分是可以通用的。

你可能感兴趣的:(Linux驱动开发)