ロジックを整理して書き直します。タイトルにあるように、アプリコードでeMCEM_1を有効にすると、公式ブートローダーを使用したアプリのダウンロードが失敗しました。チップを消去しなければ、再びブート画面に入ることができず、電源を入れ直しても問題は解決しなかった。電源を入れ直した後、起動プロセスでアプリが起動したものの、アプリが起動しなかったのではないかと推測しています。eMCEM_1を無効にすると、この問題は発生しません。eMCEM_1が有効になっているときに、Bootでアプリを書き換えるにはどうすればいいですか
こんにちは、 @XPW さん。
問題の説明が必ずしも明確ではない。
もしアプリケーションがブートローダーを通じてプログラムされている場合、アプリケーションに含まれるeMCEM_1設定はダウンロード中に実行されるわけではなく、単なるバイナリであるため、プログラミングプロセス自体に影響を与えることはありません。
ブートローダーがアプリケーションへの実行を転送した後にのみ、eMCEM/FCCU関連の設定が重要になり、その時点で以下の点を確認することが有用です。
現在の説明からは、プログラミング操作が失敗するのか、プログラムが成功して問題がアプリケーションの実行開始時に起こるのかは不明です。
出来事の正確な順序を説明していただけますか?
よろしくお願いいたします。
ダニエル
調査の結果、
説明が必要な箇所を選択してください:
まず、ターゲットを有効にしていないとき
Clock_ip.c(RTDファイル内)
Power_ip。c は RTD ファイル内
Can initialize correctly。
しかし、起動したとき:
Clock_ip.c(RTDファイル内)
Power_ip.c は RTD ファイル内にあります。
グローバル変数の初期化に失敗しました。
もっと良い解決策はありますでしょうか?
こんにちは、 @XPW さん。
スクリーンショットを見る限り、変数は最初は正しく初期化されているようです。しかし、eMCEMの初期化後、Clock_Ip_pfkNotificationsCallbackには無効なポインタが含まれています。
eMCEMはポインターの値を魔法のように変更するわけではありません。これは、以下のいずれかの問題に非常によく似ています。
SPDデモプロジェクトのリンカーファイルでテストできますか?
BR、ダニエル
リンクファイルは以下のように変更されました。
私は3つのグローバル変数を定義しました。
4バイトに正しく整列され、適切に割り当てられているようです。
しかし、
位置がずれているようです。
この現象の原因は何でしょうか?また、どのように調査し、解決すればよいでしょうか?
こんにちは、 @XPW さん。
スクリーンショットを見る限り、変数の初期化自体に問題があるとは考えにくい。variable_aは8ビット変数であり、eMCEMを有効にすると追加の変数が導入され、.データのレイアウトが変わる可能性がありますセクション。したがって、異なるオフセットで変数が見られることは想定内のことであり、それ自体がデータの破損を示すものではありません。
重要な問題は、アプリケーションが単独で実行されたときに起こるのか、それともブートローダーでプログラムされて起動された時だけ発生するのかということです。
デバッガで直接プログラムし、ブートローダーなしで実行した場合にこの問題を再現できますか?もし問題がブートローダーを通じてアプリケーションを読み込んだ後にのみ発生する場合は、調査はアプリケーション自体ではなく、ブートローダーのプログラミングプロセス、イメージレイアウト、またはブートローダーのハンドオーバーに焦点を当てるべきです。
BR、ダニエル