STM32 マイクロコントローラ プラットフォーム上にセンサー ネットワーク用のカスタム プロトコルを実装しましたが、そのプロトコル スタックを Linux カーネルに移植するのがよい時期になりました。
状況は次のとおりです。機能がほとんど組み込まれていないカスタム無線送信機 (NRF24L01+) があります。しかし同時に、帯域幅と消費電力に対する高い要件があるため、単純な NRF24L01+ 機能の上にタイム シェアリング アルゴリズム (DTDMA) を設計して実装しました。また、接続の信頼性のために、再送信を処理するトランスポート層プロトコルを実装しました (少し変更されたスライディング ウィンドウ プロトコルを使用)。私たちのネットワークはスター トポロジーを持っているので、ルーティングはここでは必要なく、今後も変わらないようです。
また、相手側のリソースが少なすぎて、完全な TCP/IP プロトコル スタックを実装できないことにも注意してください。したがって、カスタム軽量プロトコルは必須です:(。
したがって、本質的には 3 つのレイヤーがあります。
- ハードウェアドライバー (NRF24L01+)
- 時分割アルゴリズム
- パケット制御アルゴリズム
問題は、(アーキテクチャ的に) タイム シェアリング アルゴリズムをどこに置くべきかということです。
私が理解しているように、NRF ドライバーを実装する最良の方法はlinux/netdevice.hインターフェイスを使用することであり、パケット制御 (スライディング ウィンドウ) にはlinux/net.hインターフェイス ( struct proto_opsを使用) を使用することです。しかし、時分割がどのように、どこに収まるかわかりません。
どんな助けでも大歓迎です。前もって感謝します :)。