私は小さな組み込みシステム(マルチドロップ、rs485タイプのもの)用の単純なプロトコルスタックに取り組んでいます。このスタックでは、OSIレイヤーの後のモデルは失われます。
- 応用
- 通信網
- データリンク
- 物理(シリアルドライバー)
各レイヤーには、その上のレイヤーのペイロードをラップする独自のヘッダー/フッター部分があります。
静的に割り当てられた固定サイズのブロックの独自のバッファプールを使用して、バイナリパケットを格納します。(このアプリではmallocはありません/無料です。)
他のAPIでは、データは通常、関連付けられた長さのconstポインターとして渡されることを確認しました。このように、上のレイヤーのペイロードが現在のレイヤーに新しく割り当てられたバッファーに配置されるため、データは各レイヤーでコピー操作が必要になります。
3層スタックの場合、これは2つのコピー操作と3つの割り当てられたバッファーになります。
これを実行し、プロトコル層のクリーンな分離を維持するためのより良い方法はありますか?
議論をより適切に固定するために、パケットは通常約2kであり、プロセッサは8Mhzで動作する小さな8ビットマイクロであるとしましょう。