こんにちは。LPC1778のFLMをデバッグしていたところ、FLMを使用して0x0~0x400にデータを書き込んだ後、データが正しくないことがわかりました。そのため、デバッガがチップに接続できません。ドキュメントを確認したところ、ベクタテーブルに書き込まれたデータが正しくなく、書き込もうとしていたデータと一致しないため、チェックサムが無効になっていると考えられます。ドキュメントによると、チェックサムが無効になると、チップはISPモードに入り、プログラムのダウンロードを待機するとのことです。
1. この状態から回復する方法を知りたいです。
2. FLMで0x0~0x400を書き込むと問題が発生するのに、0x400~0x7FFFFを書き込むと正常に動作するのはなぜですか?FLMのソースコードを見ると、チェックサムを自動的に変更するSET_VALID_CODEというパラメータがあります。この部分に何か問題があるのでしょうか?
こんにちは@BianHaopeng1
0x0000~0x0400の領域は、単なる通常のフラッシュデータ領域ではありません。ブートベクタテーブル、0x1Cの有効コードチェックサム、および0x2FCのCRP構成ワードが含まれています。チェックサムが正しくない場合、ROMブートローダーはユーザーコードが無効であると判断し、ISP(インサービスモジュール)に入ります。また、0x2FCに誤ってCRPパターンが書き込まれると、JTAG/SWDアクセスが制限されたり、通常のデバッグモードに戻れなくなったりする可能性もあります。
ISPごとに復旧の優先順位を設定できます。
P2[10]がローにプルダウンされると、チップがリセットされ、ブートローダーが引き継いでISPモードに入ります。
フルワイプを実行するか、有効なイメージを再ダウンロードするには、UART0:P0[2] / P0[3] を介して FlashMagic または同等の ISP ツールに接続します。
チェックサムのみが無効な場合は、ISPに入った後に消去および復元できるはずです。CRP1/CRP2が誤って書き込まれた場合は、JTAGは無効になりますが、ISPには限定的な復旧パスがまだあります。CRP3が誤って書き込まれた場合は、ドキュメントによるとJTAGとISPが完全にブロックされるため、通常のISP/JTAG経由での復旧は基本的に不可能です。
BR
ハリー