Linux での CAN バス通信用のドライバーの実装を楽しみにしています。
デザインの提案が必要です。
Linuxにはユーザー空間とカーネル空間があります。ドライバーは、ユーザー空間のカーネル空間アプリケーションで実行されます。
1> パケットが非常に高速で受信された場合、ドライバーはこの状況をどのように管理できるでしょうか?
2> パケットを高速で送信する必要がある場合、どうすればよいですか?
3> ユーザー空間とカーネル空間の間でデータを移動する方法。これとは別に、システムコールまたは何らかの高速メカニズムを使用する必要がありますか?
4>カーネルレベルのスレッドで実行できますか? しかし、CAN バスからの TX と CAN バスからの RX に対してカーネル レベルで実行されている 2 つのスレッドがある場合、ミューテックスを使用してクリティカル セクション (つまり、内部レジスタ) を保存する必要がありますか?
5>アプリケーションからドライバーにアクセスするために共有ライブラリが使用されているとします。共有ライブラリは、システム コールを使用してドライバー機能にアクセスできますか?
正しいアプローチとは何かを完全に混乱させました。
提案してください。どんな返事でも結構です。