s32k311チップのブートローダーとデバッグに関する問題s32ds:3.5.6
rtd:7.0.0
s32k311チップを使用してブートローダーの実験を行っていた際に問題が発生しました。通常のCANを設定し、プログラムがBLプログラムからアプリに切り替わることを確認しようとしました。しかし、ジャンプ機能を追加した後、BLプログラムのCAN送信機能が動作しなくなった。デバッグのためにJ-Linkに接続しない限り、そしてデバッグが開始されると、常にデバッグ出力からの出力を受け取ります。
プログラムがシグナルSIGTRAP(トレース/ブレークポイントトラップ)を受信しました。
0x20008008 in ?? ()
この問題の解決にご協力いただければ幸いです。ありがとう
Re: Bootloader and debugging issues on the s32k311 chipありがとうございます。問題は既に解決しました。Re: Bootloader and debugging issues on the s32k311 chipこんにちは、 @feixingren1さん
ジャンプ自体には問題がないようです。しかし、ブートローダーのmain.cを見ると、初期化解除を行わずにアプリケーションにジャンプしているようです。これは通常、トラブルの主な原因となる。お勧めします:
- リセット後、アプリケーションに直接ジャンプします。起動ファイルに、特定の条件に基づいてアプリケーションを起動する最小限のコードを記述することができます。ブートローダーがアプリケーションにジャンプする必要がある場合は、ソフトウェアリセットをトリガーするだけでよく、リセット後、初期化処理の前にアプリケーションにジャンプします。これが最も安全な選択肢です。
- ブートローダーの後半(多くのリソースが初期化された後)でアプリケーションにジャンプしたい場合は、初期化解除を実行することが重要です。すべての割り込みを無効にする(コアによるグローバルな無効化、ペリフェラルのレジスタによるローカルな無効化など)、ペリフェラルの初期化解除など。アプリケーションは、デフォルトリセット状態を想定しているか、またはデフォルトリセット状態にない機能を完全に認識している必要があります。
よろしくお願いいたします。
ルーカス