-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Resize the driver receive buffer #161
Conversation
この方針に従い,とりあえずI2Cのコンポだけ修正しました。 この時点で,メモリ使用量は 122292byte (93.3%) から 116916byte (89.2%) になりました。 |
とありますが,321byte以上であれば問題ないということでしょうか。 |
Sagitta時刻情報、xxhashなどがついて20byte増え、エンコード前のフレームサイズは341byteあります。 一方でEscapeがそんなに起きる可能性は低いので、理論上の最大分まで確保しなくても良いかもしれません。最低でも、341+2= |
わかりました,ありがとうございます。 |
I2Cのみ縮小した状態で
ことから,I2Cでないコンポについて単に 一方でメモリ使用量を減らすモチベーションはSTT以外にもある(#65 など)ため,それらとの兼ね合い次第ではUARTのコンポについても個別にバッファサイズを設定する必要があるのかなと思います。 |
一旦 @200km @seki-hiro |
お疲れ様です。 |
STT(デフォルト値)を 350byte に増やし,STIM,OEM,MOBCについて個別に削減しました。 この状態で 118560byte (90.4%) となりました。 |
@200km @seki-hiro @chutaro レビューをお願いできますでしょうか。
しておりますが,それ以外は確認できないため,マージ後にSTTの試験と合わせて実施できたらと思います。 |
@conjikidow FRAMは読み出しサイズを自由に調整できますが、最大読み出しサイズをここできめています。通信方式としてはSPIで同期式です。
|
@200km それで良いのですね,ありがとうございます。 |
コードを読む限り良さそうに見えますが、試験してみてください。NVMやDRのOPSを参考にすればEMで試験できると思います。 |
ありがとうございます。 |
上のコメントでSTIMは16byteとありましたが、間違っていませんかね? S2E側では最大テレメサイズが30と定義されています。デフォルトで使っている温度と角速度だけ出力するテレメも STIMでは他のテレメモードの実装もおこなっており、コマンドによってより長いテレメトリを取得できるようにも変えることができます。そのコマンドを送ったときには最大で30byteになるということだと思います。 |
ご指摘ありがとうございます。 |
@@ -12,6 +12,8 @@ | |||
#include <src_core/Drivers/Protocol/common_tlm_cmd_packet_for_driver_super.h> | |||
#include <src_core/TlmCmd/packet_handler.h> | |||
|
|||
#define DS_IF_RX_BUFFER_SIZE_MOBC (128) //!< IF_RXのバッファサイズ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[IMO] MOBCから送られてくるデータは、GSからのコマンドに相当すると思います。
AOBCではブロックコマンドで使えるようにという観点から、1コマンドのサイズは下記の32byte以下になるように調整しています。
#define BCT_CMD_MAX_LENGTH (32) |
ブロックコマンドで使えなくてもよいコマンドでは下記の値が採用されると思いますが、現状使っているコマンドで32を超えているものはないように思います。coreコマンドで引数がrawのものはコマンドサイズを大きくできますが、本当に128が必要か考えても良いかもしれません。
あと、このあたりの関係性をメモとしてコメントに残しておくと良いかもしれません。
AOBCで、メモリ配分をどうを決めたかなどはこちらを参考にしてください。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ありがとうございます。
どこまで削減できるかわからず,上に書いたようにCDHに確認した上で128byteであれば絶対に問題ないとのことから多めに128byteとしていました。
AOBCではブロックコマンドで使えるようにという観点から、1コマンドのサイズは下記の32byte以下になるように調整しています。
ブロックコマンドで使えなくてもよいコマンドでは下記の値が採用されると思いますが、現状使っているコマンドで32を超えているものはないように思います。
この辺りのことは知らなかったため,勉強になります。ありがとうございます。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ブロックコマンドで使えなくてもよいコマンドでは下記の値が採用されると思いますが、現状使っているコマンドで32を超えているものはないように思います
coreコマンドで引数がrawのものはコマンドサイズを大きくできます
これらを踏まえて 32byte に縮小しても問題ないということでしょうか。
引数がrawの場合,実用上32byteを超えることはないと思って大丈夫なのでしょうか。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
コンポ数がひとつで影響も少ないので、とりあえずは128でもよいです。めもりを最適にしたいということになったらまたその時に考えましょう。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
了解です。コメントだけ加えておきます。
@@ -11,7 +11,7 @@ | |||
#define DS_STREAM_MAX (1) | |||
|
|||
// TODO: 適切な値を考える | |||
// OEM7600Driverに合わせて64から144に変更した | |||
#define DS_IF_RX_BUFFER_SIZE (144) | |||
// Sagittaに合わせて144から350に変更した |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[NITS] 144から
などはgit logで残る情報なのでコメントに書く必要はないかなと思います。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// OEM7600Driverに合わせて64から144に変更した
があったのでそのまま編集しましたが,おっしゃる通りなので変更履歴は削除します。
一方でこの値の根拠はあったほうが良いと思うので,コメント修正します。
一応間違いがないように訂正ですが、データシート上はCRLF付与モードにすると23byteになるようです。(P17 Table 5-12, 0起算で22までなので、合計23byte) S2Eは余裕を持って30としているようですね。キリの良い32でも問題ないと思います。 |
訂正ありがとうございます。
0起算なのに1を足し忘れていましたね,何度もすみません。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正されたのでapproveします。
ありがとうございます。 最終的に 116304byte (88.7%) となりました。 |
Issue
詳細
メモリの余裕を生むため,INAなどテレメ量が小さなものはバッファサイズを縮小し,逆にSTTなどテレメを増やしたいものは増やす。
検証結果
ビルドチェック (どちらもチェック)
動作確認チェック (いずれかをチェック)
試験結果
テレメについてはMOBC以外をSILSで確認,MPUやRM,FRAMなどEMに接続されているコンポをEMで確認済み。
補足
STTのテレメについては #137 を参照のこと。
また,これのマージ後に #159 に対応する。