0
比方說,你有一個運行嵌入式Linux的嵌入式設備(例如樹莓派),並希望與外部模塊進行通信。什麼時候會選擇在kernelspace而不是用戶空間編寫軟件?
在哪種情況下你會決定通過編寫一個kernelspace驅動程序與設備進行通信?
在哪些情況下,您只需通過在用戶空間編寫軟件與設備進行通信?
比方說,你有一個運行嵌入式Linux的嵌入式設備(例如樹莓派),並希望與外部模塊進行通信。什麼時候會選擇在kernelspace而不是用戶空間編寫軟件?
在哪種情況下你會決定通過編寫一個kernelspace驅動程序與設備進行通信?
在哪些情況下,您只需通過在用戶空間編寫軟件與設備進行通信?
如果您有任何選擇,請與用戶空間中的設備進行通信。用戶空間驅動程序開發起來更容易,更容易安全,並且不太可能需要更新才能在新內核上運行。
情況下內核驅動程序可能是不可避免的包括:
如果您的硬件提供了將內核的其他部分被消耗標準的服務 - 例如,如果它是一個塊設備或網絡設備。輸入設備和視頻設備也可能屬於此類別,具體取決於您打算如何使用它們。
如果您的設備具有用戶空間應用程序無法滿足的異常嚴格的時序要求,或者它需要僅在內核空間可用的驅動程序組件(如硬件計時器)。
如果您正在與不直接暴露給用戶空間的硬件(如PCI設備)進行接口連接。 (即使如此,在編寫「瘦」內核驅動程序並在用戶空間中完成剩下的工作也許是情況上合適的。)
謝謝您的回答,先生。你能否解釋一點點nr。 1? – jithophipr
@trilolil我的意思是視頻輸出。顯卡和類似的。 – duskwuff