我很难理解何时应该编写设备驱动程序,而不仅仅是通过outb
我的用户空间程序将操作码直接发送到硬件。我最初认为我应该为硬件创建简单的例程,但现在我开始认为算法应该留在用户空间中。
假设我正在编写一个假设的机械臂。我可以在 Linux 内核模块中编写几个函数,这些函数可以自动执行常见任务所需的硬件输出(例如,将手臂移动到 HOME 位置,在装配线开始时从已知位置拾取新块等)。但是,在阅读了有关设备驱动程序的更多信息后,似乎经验法则是使设备驱动程序尽可能接近特定于硬件的代码,将“繁重”的算法留给用户空间。
这让我很困惑,因为如果设备驱动程序实现的唯一功能是简单的操作码调用,那么用户空间程序使用设备文件而不是直接调用outb
/的原因是什么inb
?
我想我想弄清楚的是:我如何决定内核空间而不是用户空间中的功能?