-
Notifications
You must be signed in to change notification settings - Fork 19
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
Add C2A command sender for accelerated SILS test #485
Conversation
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.
これは意味的にだいぶ巨大な変更ですね......
なんだかんだであんまり明示できていなかったのですが,C2A と S2E は基本的にできるだけ疎結合にしたいと思っていて,S2E の ObcWithC2a
以外の部分で C2A の機能が用いられることは考えていませんでした.また,この部分ですら TMGR_count_up_master_clock()
のような C2A 内部の関数を直接呼んでいることはよくないと考えており,これをさらにラップした C2A_core_tick()
のような関数を用意して,S2E などのランタイムにはそれを呼んでもらうように変えたい,といった計画をしています.
そのため,使う C2A の機能を増やすのであればそれは慎重に考えたいです.
それでいうと,ENDIAN_memcpy()
などは必ずしも必要ではない(別に SILS-S2E はビッグエンディアンな環境でビルドすることはなさそう)ですし,あまり使ってほしくないですね......
今回の PR の場合CCP_register_rtc()
, CCP_register_tlc()
などは本質的に必要になるので仕方ないと思うのですが,これはどうにかして明示したいですね.
必ずしも ops ファイルの全機能をサポートするわけではない(しようと思っても現状では実装が仕様と化しているので厳しい)と思うので,WINGS の ops ファイルが使える,というような表現は避けて,あくまでサブセットであると明示した方がよいと思います |
大きな流れとしてそうしていきたいのは、これまでの議論から察していますし、私も同意です。 将来的にC2AとS2Eの結合が解けるようなことが進んだ場合には、この機能は無くしてしまって良いとは思います。
こちらは、使わない方向で考えてみます。
言葉がよくわかっておらず申し訳ないですが、どのようなことをすれば |
C2AのENDIAN_memcpyではなく、S2Eが持っていたendian_memcpyを使うようにしました。 |
高速で SILS を回しつつコマンドを送りたい,という要求自体は AE 側でも上がっていて,その重要性についてはとても同意します(pytest を高速化したい,など).
ということであれば,その懸念はある程度解消できるかな,と思います. ありがとうございます. > すみません言葉不足でした.これはどちらかというと C2A(-core)側の話で,C2A(-core) が S2E を含む外部のソフトウェア(ランタイム/シミュレータ)に対して公開しなければならない関数(単に仕組み的なところでは include してしまえばなんでも使えてしまいますが,それでは疎結合にできないので使っていい関数をホワイトリスト方式で管理したい)をドキュメントなどで明らかにして,そのインターフェースを変更する場合は major update としていきたい,という意図でした.とはいえ S2E 側でもドキュメント(ユーザに対するもの,というよりはコーディングルールの類ですかね)で C2A のこれは使ってよい,というようなことは明示しておきたいかもですね. > 明示したい |
@sksat ありがとうございます。
これは、ありがたい情報ですね。私自身はGaiaはまだ使ったことがない状況ですので、まずはリアルタイムのS2E-C2A-Gaia SILS環境を試してみたいと思います。もし手順書などすでにあれば教えてもらえると嬉しいです。
説明理解しました。外部に対するAPIをきちんと定義するというようなことにも関係しますかね。(S2Eもsemver使っているのにAPI定義していないのでいつかちゃんとしなきゃなとは思っています。) とりあえずこのPRではどうすれば良いでしょうか? |
S2E と連携させるのはまだやっていないのですが,
c2a-core v4 では(そもそも API 定義を明確に行おうとしている他に) とりあえずこの PR では,C2A の機能を使っているソースファイルの上の方で使っている構造体・関数を箇条書きでコメントとして書いておく,のような対応とするのではいかがでしょうか?その上で,s2e-documents などでこの機能を紹介する際にはまだこの機能は experimental/optional なものであると明記してもらう,などがよい気がします. |
@sksat ありがとうございます。コメントつけましたのでレビューお願いします。 |
src/components/real/communication/wings_command_sender_to_c2a.cpp
Outdated
Show resolved
Hide resolved
修正ありがとうございます.c2a-core v4 まわりでもう一点修正お願いします.他は問題なさそうです. |
あと,9c9369c を見て思ったんですが, |
9c9369の修正は、version 9以上でしか使えなくしたというわけではなく、「Cmd_ prefixがついているかのversionは関係なく、Cmd_DB上のコマンド表記とOPSファイル内のコマンド表記が一致しておけば良い」という修正になります。 |
なるほどです.勘違いしていました > |
Co-authored-by: sksat <[email protected]>
Overview
Add C2A command sender for accelerated SILS test
Issue
Details
I implemented C2A command sender component for accelerated SILS test.
Users can use
WINGS's ops file
to define the commands they want to send.Validation results
I confirmed that the functions work well with S2E-AOBC
Scope of influence
Minor update
Supplement
NA
Note
NA