2012-12-04 46 views
0

我期待在Linux中實現CAN總線通信的驅動程序。
需要一些設計建議。如何處理 - 快速tx&接收數據---設備驅動程序Linux

的Linux有用戶空間&內核空間。驅動程序在內核空間應用程序的用戶空間運行

1>如果以非常高的速度,然後在接收數據包的驅動程序如何管理這種情況現在假設?

2>如果數據包必須以高速率傳輸,然後該怎麼辦?

3>如何數據應用戶&內核空間之間移動。我們應該使用系統調用還是使用一些快速機制?

4>它可以在內核級別的線程中完成嗎?但是如果有兩個線程運行在內核級從TX總線上發送到來自CAN總線的& RX,那麼我們是否必須使用互斥來保存關鍵部分(即我們的內部寄存器)

5>如果假設共享庫用於從應用程序訪問驅動程序。 共享庫可以使用系統調用訪問驅動程序功能嗎?

完全混淆了什麼應該是正確的做法。

請建議。任何答覆都是可觀的。

+0

您正在使用哪個CAN控制器,可能它的驅動程序將在Linux上提供,您可以使用設備節點直接訪問它。 –

+0

可能是我解釋錯了位。我剛剛舉了一個例子--- CAN總線 - 問題是一個普遍的問題,可以應用於任何通信設備,如CAN總線,Usart,原始以太網。請建議。 – Katoch

+0

重新發明之前,您應該調查現有的驅動程序實現。爲什麼你認爲現有的實現不夠「快」?也許你可以嘗試對現有方案進行漸進式改進。開源軟件的一個優勢是不必始終從頭開始。如果代碼必須是專有的,那麼也許應該避免Linux一起。 – sawdust

回答

0

數據速率智者不是那麼快相比,你會想要對運行Linux大多數處理器。大多數公共汽車的載重量低於60%,僅約60kB/s!從用戶空間到內核空間的簡單數據包FIFO應該沒問題。

什麼可以是一個問題是,如果你有一個時間表發射消息的硬實時期限。或者更糟糕的是,在給定的時間段內傳送消息以響應收到的消息。如果你有這些要求中的任何一個,Linux可能不適合你 - 你需要一個適當的實時操作系統(RTOS)。

+1

還有一些實時調度程序與linux協作來處理要求不高(但更復雜)的任務。 –

相關問題