0

假设您有一个运行嵌入式 linux 的嵌入式设备(例如树莓派)并希望与外部模块通信。

  • 在哪些情况下,您会决定通过编写内核空间驱动程序与设备进行通信?

  • 在哪些情况下,您会通过在用户空间中编写软件来简单地与设备进行通信?

4

1 回答 1

3

如果您对此事有任何选择,请与用户空间中的设备进行通信。用户空间驱动程序更容易开发,更容易确保安全,并且不太可能需要更新才能在较新的内核上运行。

内核驱动程序可能不可避免的情况包括:

  • 如果您的硬件提供了将被内核的其他部分使用的标准服务——例如,如果它是块设备或网络设备。输入设备和视频设备也可能属于此类别,具体取决于您打算如何使用它们。

  • 如果您的设备具有异常严格的时序要求,而用户空间应用程序无法满足这些要求,或者它需要仅在内核空间中可用的驱动程序组件,例如硬件计时器。

  • 如果您正在与不直接暴露给用户空间的硬件进行交互,例如 PCI 设备。(即便如此,编写一个“瘦”内核驱动程序并在用户空间中完成其余工作可能是合适的。)

于 2017-02-17T00:15:52.113 回答