a-comstack(ターゲット:HSBV850E2FG4)のCANフレーム送信部のビジーウェイトについて #88
Replies: 1 comment 2 replies
-
中西さん、こんにちは。 ターゲットの担当をしていたのでは無いのですが、a-can_hsbv850e2fg4_cx-20150331.tar.gz のコードと「V850E2/Fx4 prc_user.txtにビジーウェイト処理に関する説明が書かれています。 該当箇所のcan_target_transmitは送信メッセージバッファのFCNnMmCTL.FCNnMmRDYF フラグをクリアする処理(ユーザーズマニュアルの26.9.1 メッセージの送信の備考2)の対応だと思います。 ある程度の負荷をかけたときにロック状態になっていたために、ここで10msのディレイを入れたとすれば、 自分なら、クリアされてなければすぐにCAN_NOT_OKにはせず、1回だけビジーウェイトを入れて再度確認するを入れるとかですかね... |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
福岡大学の中西です。初めてここに書き込みます。書き込む場所が悪ければご容赦ください。
TOPPERS/A-COMSTACKを北斗電子さんの HSBV850E2FG4 上で使わせていただいています。おおよそ20msの頻度で周期的にCANフレームを飛ばそうとしていたところ,全然期待通りにフレームが出ておらず,(記憶が正しければ)ひとつのCANフレームを送り出すのに十数ms要している状態でした。
色々調べたところ,a-comstack/can/arch/fcn/Can_Prc.h 中の CAN フレーム送信用の関数, can_target_transmit() において(695行目),送信前にビジーウェイト(can_target_busy_wait() の呼出)が入っており,これがフレーム送信に時間を要している原因のようです。このビジーウェイトは int を10万カウントする空ループとして実装されています。
このビジーウェイトは何か意図があって設けられた必要なものでしょうか? 実際,取り除いても期待通りにCANフレームは送信されます。(現在,初期化関連のところは,状態安定のためのものかと推察して念のため残していますが,送信のところのは除きました。)
ご確認(?)いただけると幸いです。
Beta Was this translation helpful? Give feedback.
All reactions