2400736_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2400736_ja-JP

2400736_ja-JP

S32K344 HSE_ActivatePassiveBlock 後のAB-Swap車載起動失敗;ファームウェアはJ-Link Staでのみ起動します
プラットフォーム:ABスワップ方式S32K344。ファームウェアイメージは、アクティブブロックとパッシブブロックにそれぞれ別々に格納されています。観察結果:HSE_ActivatePassiveBlock()を実行してアクティブ/パッシブパーティションを交換した後、完全な電源サイクルを実行しても、ファームウェアの自動起動はトリガーされません。ファームウェアはJ-Linkが接続され、デバッガから「アプリケーションの開始」がトリガーされた場合にのみ正常に動作します。誰か根本原因を説明し、推奨される対処法を教えていただけませんか?
Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link

こんにちは、 @HQZ


パッシブパーティションに有効なイメージが存在することを確認しましたか?電源投入後にリセットせずに実行中のターゲットにデバッガーを接続すると、どのような現象が観察されますか?デバイスはJTAGリカバリーモードに入りましたか?あるいは、デバッガでデバイスをリセットしてから、アプリケーションのエントリーポイントに到達したかを確認することもできます。

デバイスがアドレス0x2040012Cで無限ループに陥っている場合、JTAGリカバリモードに入ったことを示しています。これはIVTの設定やIVTの整合性に問題がある可能性もあります。

また、パッシブパーティション内のイメージは、アクティブパーティションのアドレス空間(つまり、0x00400000から始まるアドレス空間)から実行されるようにリンクされていますか?

最後に、セキュアブートを使用していますか?


よろしくお願いいたします。

ルーカス

Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link

こんにちは@lukaszadrapa 

プラットフォーム:S32K344、AB-Swapアーキテクチャ。独立したファームウェアイメージはアクティブブロックとパッシブブロックに別々に保存されます。HSEのセキュアブートは無効になっています。問題の説明:アクティブ/パッシブパーティションスイッチを完了するためにHSE_ActivatePassiveBlock()を呼んだ後、電源を入れ直してリセットした後、デバイスはターゲットファームウェアを自動で起動できません。しかし、J-Linkデバッガがチップにコネクテッドされていて、デバッガソフトウェア内で「アプリケーション開始」をクリックすると、交換したファームウェアは通常通り動作します。追加の背景:ファームウェアはパーティションAとパーティションBの両方に存在します。両画像の違いはLEDの点滅周波数だけです。パーティションAのファームウェアは0x400000からリンクされ、パーティションBのファームウェアは0x600000からリンクされています。HSE_ActivatePassiveBlock()を呼び出してリセットした後、J-Linkでフラッシュの内容をダンプしました。パーティションAとパーティションBの内容が物理的に入れ替わっており、HSE_ActivatePassiveBlock()が有効であることが確認されています。質問:1. この行動の根本原因は何でしょうか?なぜコールド電源起動はデバッガーでトリガーされる「アプリケーションの開始」と異なる挙動をするのでしょうか?2. ABパーティションスワップ後の自動起動失敗を解決できる現実的な解決策は何ですか?ご支援ありがとうございます。 [[ ## completed ##]]

Re: S32K344 AB-Swap auto-boot failure after HSE_ActivatePassiveBlock; firmware boots only via J-Link

こんにちは、 @HQZ


「パーティション B のファームウェアが 0x600000 からリンクされている」 - これが問題です。アクティブなパーティションアドレス(0x400000)を使用するには、両方のイメージがリンクされている必要があります。アプリケーションは常にアクティブパーティションから動作しており、パッシブパーティションからではありません。

解決策:両方のプロジェクトで同じリンカーファイルを使用する。

これはデバッガと連携して動作します。なぜなら、デバッガはプログラムカウンタをELFファイル内のエントリポイントアドレスに「手動で」設定するからです。


よろしくお願いいたします。

ルーカス

Tags (1)
No ratings
Version history
Last update:
11 hours ago
Updated by: