2017-09-24 114 views
0

有沒有辦法將自己的RS232 AVR設備作爲Linux文件系統設備公開/dev/avr_device?程序必須寫成內核空間模塊還是寫入用戶空間?這可能由libfuse做到嗎?也許我應該使用FIFO管道作爲設備的通信通道?自己的RS232設備作爲Linux文件系統設備

+0

你的問題沒有道理。內核僅具有用於連接到CPU和/或CPU的直接控制下的控制器和外圍設備的設備驅動程序。由於*「自己的RS232 AVR器件」 *似乎是指一些SBC外部於Linux系統,爲什麼會是Linux內核有一個司機和該板上的設備節點?順便說一句,你似乎有點關注設備可以表現爲文件的方面。 – sawdust

+0

如果工作量充足,您可能可以使用熔斷器進行此操作。但是,這種努力恐怕只有合理的,如果你真的需要您的設備型號爲一個文件系統,而不是從這樣的對待所有的硬件收益。 –

回答

0

要能掛載設備,在其中您已經安裝了Linux文件系統,你需要的設備是一個塊設備,但串行tty設備是一個字符設備,與不兼容。

爲了能夠在系統的經典視圖中解決這個問題,您需要開發一個塊設備驅動程序,該驅動程序連接到該char設備(串行端口)並使用它來控制de設備仿真協議,這意味着將塊號碼和塊數據轉換成要通過串行線路發送到另一側的接收器的分組並實現作爲某種存儲設備的塊設備細節。這可以通過一些努力來完成....問題是如果使用慢速串行線將有興趣模擬任何類型的存儲。

最後一種方法的優點是你只需要模擬一個塊設備,並且能夠創建任何可用於Linux的本地文件系統。

在更高層次上,你可以實現一個文件系統類型,這是一個更高層次的抽象(保險絲允許你這樣做),但這使得這是一個更難的問題,因爲你必須實現每個文件系統原語(並相信我,模塊化文件系統比塊設備有更多的原語)將每個遠程原語實現爲一組局部原語(這對於單個編程人員來說是不可行的)

第二種方法完全修復了文件系統,並完全修復您可以對文件執行的一組操作,以便執行您編寫的原語。這是非常困難的,並且通常與系統的其他部分缺乏一致性,所以我不建議你採用這種方法。

第二種方法只有一個優點,它是:由於文件系統使用高級基元,因此它們可以更緊湊地編碼到網絡消息中,並通過線路更有效地傳輸,從而爲慢速連接提供更高的速度。但是這是以實現所有文件系統功能爲代價的,並且不利於使用這些文件系統(您必須實現用戶訪問,安全性,請求緩存等)的統一性。

在第一種方法,你只需要執行4次或5元,你得到的是可以在塊設備上安裝任何文件系統的所有功能。