Skip to content
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

BCのコピーをFRAMに取ることで不揮発化する #249

Merged
merged 33 commits into from
Jan 23, 2024

Conversation

chutaro
Copy link
Contributor

@chutaro chutaro commented Oct 25, 2023

Issue

詳細

詳しい実装方針は issue 参照

検証結果

ビルドチェック (どちらもチェック)

  • SILSでのビルドチェックに通った(CIで確認)
  • vMicroでのビルドチェックに通った

動作確認チェック (いずれかをチェック)

  • SILSでアルゴリズムが想定通りに動いた
  • 実機でアルゴリズムが想定通りに動いた
  • (テレコマ試験の場合)コマンドファイルを使った試験をパスした

試験結果詳細記述場所 or 詳細ログ保存場所へのリンク

@chutaro chutaro requested review from sksat and a team as code owners October 25, 2023 08:59
@chutaro chutaro requested review from 200km, suzuki-toshihir0, t-hosonuma and conjikidow and removed request for a team October 25, 2023 08:59
@chutaro chutaro self-assigned this Oct 25, 2023
@chutaro chutaro marked this pull request as draft October 25, 2023 09:01
@200km
Copy link
Member

200km commented Oct 25, 2023

これは @conjikidow くん担当の issue #22 と同じものなように見えます。
仕事分担など、どんな状況か教えてもらえると嬉しいです。(ダブルエフォートになってしまっていないかなど)

@chutaro
Copy link
Contributor Author

chutaro commented Oct 26, 2023

@conjikidow くんではなく自分が実装するという認識です。11月末まで日本を離れるので、実機検証はその後になると思います。

@200km 200km linked an issue Nov 30, 2023 that may be closed by this pull request
@200km 200km added this to the v8.1.0 Minor update milestone Nov 30, 2023
@chutaro chutaro changed the title Draft: BCのコピーをFRAMに取ることで不揮発化する BCのコピーをFRAMに取ることで不揮発化する Dec 17, 2023
@chutaro chutaro marked this pull request as ready for review December 17, 2023 16:04
@chutaro
Copy link
Contributor Author

chutaro commented Dec 17, 2023

遅くなりましたが、こちら一旦実装完了しました。ロジックの雰囲気や文法的なところなどレビューいただけるとありがたいです。

ちゃんと動作するかについては、実機でやってみないと分からない部分もあるので、今週のどこかで @conjikidow と実機検証したいと思います。


AppInfo APP_NVBC_MGR_create_app(void);

CCP_CmdRet Cmd_APP_NVBC_MGR_SET_ENABLE(const CommonCmdPacket* packet);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[NITS] コマンド関数は作られていますが、コマンドDBには追加されていないようです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

忘れていました。追加しました。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CDHコマンドの割り当て数が足りなくなったので、10から12に増やしました。その影響で、以降のコマンドIDがすべてずれています。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

わかりました。12だとギリギリなのであれば、もう少し増やして今後のためのマージンを持たせても良いかなと思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15に増やしました

bc_id = begin_bc_id + i;
nv_bc_manager_.is_ready_to_restore[bc_id] = 0;

// 有効化されている BC のみコピーする
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Q] 有効化されていなくてもコピーしても良い気もするのですが、どうでしょうか?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 空き番のBCをコピーした場合、意味のないbyte列がFRAMにコピーされることになるが、それを間違えて復元して使おうとしたときに未定義の動作になってしまう可能性がある
  • 無効化しているBCは理由があって無効化しているのであり、それを復元するのは、無効化している理由が引き継がれずそのまま使われる可能性があって危ない?

みたいなことを考えていました。実運用において、無効化したBCをコピーして復元したい場面があまり無いのであれば、このままで良いかなと思うのですが、どうでしょうか?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

わかりました。運用していく上で混乱が生じないように仕様やルールが共有されていればどちらの仕組みでも問題無いとは思います。
他でコメントしたものと関連して、これまで通りコマンドでBC追加した時、コマンドでBCをdisable/enableした時に、どうするべきか、何を機にすべきかなど整理してもらえると嬉しいです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • コピーに関して
    • アプリ有効化中は、8サイクル周期(10個ずつコピーする場合)でBCがFRAMにコピーされる
    • 地上局からBLコマンドでBCを編集した際も、0.8秒後にはFRAMにコピーが取られることになる
    • コマンドでBCを無効化すると、そのBCのready flagが下がるので、リセットしたときに復元できなくなる。再度BC有効化すると、復元できる
      • モード遷移やEHで使う重要なBCは通常すべて有効化されているはずなので、問題ないと思われる
  • 復元に関して
    • AOBCがリセットしてしまったときは、デフォルトでアプリは無効化されている。復元しおえるまでは、アプリを有効化してはいけない
    • Cmd_APP_NVM_BC_RESTORE_BC_FROM_NVM で一つずつ復元できる
      • 無効化していたBCは復元できない
      • 逆に言うと、復元できたBCはちゃんとしたBCなはずなので、不安なく使えるはず
    • 所望のBC(打ち上げ時から定義変更したモード遷移やEHなど)を復元しおえたら、アプリを再度有効化する

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ざっとこんな感じだと思います。実機検証していろいろ分かってから、改めてソースコードやwikiに残したいと思います。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます。理解できました。
使い方をどこかに記載する際、次の点を考慮してもらえると嬉しいです。

  • コピー、復元はどっち方向か分からない時もあるので、NVMへのコピーNVMからの復元など方向がわかるように書いてもらえると読みやすい
  • wikiに書く場合は誰でもwikiにアクセスできる仕組みが必要なので、公開方法も検討してほしい

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.h の先頭にコメント整備しました。

@200km
Copy link
Member

200km commented Dec 18, 2023

こちらの今回追加したことに関するwarningは対応してもらえると嬉しいです。

@200km
Copy link
Member

200km commented Dec 18, 2023

@chutaro 実装ありがとうございます。コメントつけさせていただきました。参考にしてください。

@chutaro
Copy link
Contributor Author

chutaro commented Jan 21, 2024

AOBC 単体SILSで検証できる部分は想定通り動作した。

@chutaro
Copy link
Contributor Author

chutaro commented Jan 23, 2024

@200km @conjikidow 実機検証を行い、想定通りの動作を確認できました!検証メモのリンクは概要欄に貼っています。改めてざっと確認していただき、良さそうであればマージしてしまいたいです。

Copy link
Member

@200km 200km left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

小さなコメントだけなのでapproveしますが、その部分のコメントを修正してからマージしてください。

@200km
Copy link
Member

200km commented Jan 23, 2024

@chutaro 動作確認ありがとうございます。レビューしました。

@chutaro chutaro merged commit f06eeb8 into develop Jan 23, 2024
9 of 11 checks passed
@chutaro chutaro deleted the feature/non-volatile-bc branch January 23, 2024 14:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

BCT情報を不揮発メモリに移動させる
3 participants