ブートローダー コードとアプリ コードを含む古いプロジェクトを維持しています。それらはうまく機能していましたが、アプリ コードにいくつかの機能を追加すると (いくつかの if ステートメント)、デバイスでブートローダー コードが何らかの形で上書きされていることに気付きました。pickit プログラマーを使用してロードすると、アプリ コードは独立して正常に動作します。
16 進ファイルをチェックアウトして、メモリ ロケーションで実際に何が変更されているかを確認しました。添付の hex_diff.png を参照してください。
[if文なし] :020000040000FA :060000007CEF7DF0120010 :060008009DEF51F0120013 :060018009DEF51F0120003 :010FFF00AB46
[if文あり] :020000040000FA :0600000039EF7EF0120052 :06000800E7EF51F01200C9 :06001800E7EF51F01200B9 :010FFF00AB46
他の違いの中でも、上の図のこのメモリ範囲の領域は、アプリ コードにいくつかの if ステートメントを追加しても、まったく変更されていないはずです。私のリンカファイルでは、ブートストラップコードを持つようにその領域を明確に定義しました: CODEPAGE NAME=bootloader START=0x0 END=0xFFF PROTECTED
[質問] この問題をデバッグする方法がわかりません。誰かがこの問題に遭遇しましたか? もしそうでなければ、あなたたちはそれにいくつかの手がかりを持っていますか?
事前にあなたの助けと提案をありがとう!
[編集] MPLABX v1.85 コンパイラ C18 v3.44 MPLink v4.45 マイクロコントローラ: PIC18F46J50