我很難明白什麼時候應該編寫設備驅動程序,而不是直接通過我的用戶空間程序中的outb
將操作碼發送到硬件。我最初認爲應該爲硬件創建簡單的例程,但現在我開始認爲算法應該留在用戶空間中。如果你可以在用戶空間使用outb/inb,Linux字符設備驅動程序有什麼意義?
假設我正在編程一個假想的機器人手臂。我可以在Linux內核模塊中編寫幾個函數來自動執行常見任務所需的硬件輸出(例如,將arm移動到HOME位置,在裝配線開始時從已知位置拾取新塊等)。然而,在閱讀了關於設備驅動程序的更多信息之後,看起來經驗法則是讓設備驅動程序儘可能接近硬件特定的代碼,而將「繁重」算法留給用戶空間。
這讓我困惑,因爲如果通過設備驅動程序實現的唯一功能是簡單的操作碼的呼叫,什麼是一個用戶空間程序使用的設備文件,而不是outb
/inb
直接調用的原因是什麼?
我想我想弄清楚的是:我該如何決定哪些功能在kernelspace而不是用戶空間?
+1您涵蓋了所有最重要的要點。 –