こんにちは。私は S32K144 を SW32K1_S32M24x_RTD_R21-11_3.0.0 で使用しており、カスタム コールバック関数を使用するように CanIf を構成しました。
私の設定:
CanIfRxPduUserRxIndicationName は「Service_CanIf_RxIndication」に設定されています
このコールバックは、CAN メッセージが受信されたときに CanIf_RxIndication() から呼び出されます。
問題:
CanIf_RxIndication() では、Mailbox->CanId パラメータを通じて CAN ID を利用できることに気付きました。ただし、Service_CanIf_RxIndication() コールバックでは、PduId のみを受信でき、実際の CAN ID を取得する方法はありません。また、CanIf.hヘッダーには、「スタブ バージョン - このファイルにはサンプル コードのみが含まれています。」と記載されています。
私の質問:
1. CANIf.cを変更または置き換えることはできますか?スタブコード?
CanIf.h 以降明示的に「スタブ バージョン」および「サンプル コードのみ」と記載されていますが、CanIf.c を変更して CAN ID をユーザー コールバックに渡すことは許容されますか?
2. スタブ コードを変更すると、AUTOSAR アーキテクチャに違反しますか?
CanIf スタブ実装をカスタマイズすると、AUTOSAR 準拠が損なわれたり、互換性の問題が発生したりしますか?
3. 代替の解決策はありますか?
CanIf ソース コードを変更せずに CAN ID を上位層コールバックに渡す推奨方法はありますか?
環境:
MCU: S32K144
RTDバージョン: SW32K1_S32M24x_RTD_R21-11_3.0.0
IDE: S32 デザインスタジオ 3.6
助けてくれてありがとう!
こんにちは@Soratariさん、
Q1.はい、スタブ モジュールは編集/置換することを目的としています。CanIf モジュールはスタブなので、 CanIf_Cbk.h など、CAN ドライバに必要なヘッダー ファイルのみを提供します。
Q2.いいえ、ガイドラインに従い、標準化された関数名や変数などを変更しない限り、ASR アーキテクチャに違反することはありません。
Q3.通常、スタブ モジュールはテスト目的で使用されます。Elektrobit (EB)、Vector などのサードパーティ プロバイダーの CanIf、EthIf、LinIf を使用する必要があります。ただし、デバッグ目的であれば自分で変更しても問題ありません。
よろしくお願いします、
ジュリアン