こんにちは専門家の皆様
AUTOSAR MCAL パッケージ MPC574XP_MCAL4_0_RTM_2_0_2 をインストールしましたが、MPC5744P では動作しません。問題を切り分けるために、main() 内のすべてのアプリケーション コードをコメント アウトし、最小限のテスト CASE に置き換えました。
BoardInit(); GPIOInit(); CAInit();
このテスト コード (レジスタ値がハードコードされ、レジスタ アドレスのみが初期化されている) は信頼されており、複数の MPC5744P S32 プロジェクトで動作しています。ただし、AUTOSAR プロジェクトでは、デバッガーはレジスタが正しく設定されていることを確認しますが、CAN ペリフェラルは機能しないままになります。
質問:
MPC574XP_MCAL パッケージは、ブランドが共通しているにもかかわらず、MPC5744P と互換性がない可能性がありますか?
他の場所では動作しているにもかかわらず、テスト コードが AUTOSAR コンテキストで失敗する可能性があるのはなぜですか?
AUTOSAR スタートアップ コード (クロックの初期化、MPU 構成、例外処理など) が MCAL またはハードウェアと競合する可能性がありますか?
前もって感謝します。
こんにちは、
SW チームからのフィードバックは次のとおりです。
この問題は起動時に発生するようです。何かが間違っています。メモリ領域に Can_ControllerStatuses、キャッシュなどが保存されている可能性があります。このパッケージにはサンプルが添付されているので、それを実行して自分の起動時と比較することができます。
例を実行して自分のコードと比較してください。
よろしくお願いいたします。
ピート
こんにちは、
Diab バージョンは次のとおりです:
Can_FlexCan_InitVariables 関数の Can_ControllerStatuses 値:
Can_FlexCan_ChangeBaudrate関数のCan_ControllerStatuses値:
CTRL1値を設定する前のCan_ControllerStatusesの値は同じです
ありがとう
こんにちは、
SW チームからのフィードバックは次のとおりです。
リリース ノートに従って、このリリースでサポートされている diab バージョンが次のとおりであることを確認してください。
Can_ControllerStatuses を読み取り、以下のようにいくつかの時点でこの構造体内のすべての要素の値を表示できますか。
このようになります:
RM が述べたように、CTRL1 の一部のビットはフリーズ モードで CAN 書き込む。
したがって、CTRL1の値を設定する前に、CANコントローラがフリーズモードになっていることを確認してください。これはレジスタMCRを通じて確認できます。
この設定とチェックは関数Can_FlexCan_ChangeBaudrate()で行われます。
よろしくお願いいたします。
ピーター
こんにちは、
私は CAN ドライバに精通していないため、あなたの問題を SW チームに転送しました。
回答が得られ次第、お知らせします。
よろしくお願いいたします。
ピーター
直接書き込みを試みたところ、うまくいきました。問題は、「Can_ControllerStatuses[CAN_MAXCTRL_CONFIGURED]」という構造体のグローバル配列が、個々のFlexCANコントローラの現在のステータス/実行時構成を保持するこの構造体のどのメンバーの直接書き込みにも影響を受けないことに気付きました。
Can_Flexcan.cのCan_FlexCan_InitVariables関数すべてのコントローラのすべてのグローバル変数/ステータスを初期化します。
このスクリーンショットは、構造体のこのメンバーに 0 を書き込んだ後の 1111 の値を示しています。
なぜこのようなことが起こるのでしょうか?私は diab コンパイラと S32 を使用しています。これは添付のプロジェクトです。何か解決策があれば教えてください。
よろしくお願いします。
こんにちは、
CTRL1レジスタへのアクセスには制限はありません。
アセンブリ デバッグにスイッチして、コア上の命令実行をチェックし、レジスタが実際に変更されるかどうかを確認します。デバッガー経由の直接書き込みも試してください。
ここではハードウェアに問題はないと確信しています。
ペリフェラルがクロックされていない状態で書き込みをしようとしているか、またはソフトウェアがレジスタ アドレスへの書き込みを実行していないかのいずれかです。
このペリフェラルにバグはありますか?
すべての問題はエラッタシートに記載されています。しかし、私はその問題が MCU にあるとは思っていません。あなたのSWを疑っています。
デバッガー経由でレジスタに書き込んでみてください。
よろしくお願いいたします。
ピーター
ピーターさん、ご回答ありがとうございます。
まず、私の開発ボードはhttps://www.nxp.com/design/design-center/development-boards-and-designs/DEVKIT-MPC5744Pです。
以下のパッケージをダウンロードしました: Autosar バージョン 4.0.3
2 つ目: CAN0 を使用する CAN タスクをテストする必要がありますが、動作しなかったSO、EB tresos を使用して別の構成ファイルを生成しました。
生成された構成のこの部分を見てください: Can_PBcfg.cファイル:
FlexCanコントローラの構成
CTRL1レジスタは設定変更の影響を受けなかった。
スクリーンショットのCASE - 例えば -
PSEG1 =2
PSEG2 =2
プロプセグ =5
RJW =2
しかし、CTRL1レジスタの値は1です(CAN.cのCAN_Init関数の戻り後)
CAN_FlexCAN_ChangeBaudrate 関数のこの部分の後に記入されるもの - CAN_FlexCAN.c 内- Can_Init 関数で呼び出されます。
このペリフェラルにバグはありますか?
これらのパッケージを使用して CAN ペリフェラルを操作するソリューションはありますか?
よろしくお願いいたします。
こんにちは、
MPC574XP_MCAL パッケージは、ブランドが共通しているにもかかわらず、MPC5744P と互換性がない可能性がありますか?
いいえ。MPC574xP デバイスで完全に互換性があり、テスト済みです。
AUTOSAR スタートアップ コード (クロックの初期化、MPU 構成、例外処理など) が MCAL またはハードウェアと競合する可能性がありますか?
いいえ。MCAL は AUTOSAR に準拠しています。(AUTOSAR 標準に従って開発されています)。
他の場所では動作しているにもかかわらず、テスト コードが AUTOSAR コンテキストで失敗する可能性があるのはなぜですか?
わからない。サンプルコードはインポート後すぐに動作するはずです。
MPC574XP_MCAL パッケージは、ブランドが共通しているにもかかわらず、MPC5744P と互換性がない可能性がありますか?
常に SW パッケージのリリース ノートを参照してください。
したがって、おそらく autosar 4.0 以外のバージョンをお持ちでしょう。
よろしくお願いいたします。
ピーター