現在、LPC54113チップのデバッグにSWDを使用しています。コアを停止させてから、0xE000から始まるデバッグレジスタをいくつか設定しました。
チップ内部フラッシュを読み取ると、アドレス0x0~0x200は常に誤ったデータが表示され、FLASHに保存されている実際のプログラムではなく割り込みベクターテーブルのように見えました。他のアドレスから読み取ることで、すべて0xFFFFFFFFされた正しいデータを得ることができます。
そのチップはデータを何も書き込んでいなかった。JLINKを使用して読み取ると、アドレス0x0~0x200は0xFFFFFFFFになります。しかし、JLINKは読み込みのためにRAMに書き込みを行うためにFLMを使っており、0x0のアドレス範囲への読み込みをどのように処理しているのか0x200わかりません。
私が実行した手順は以下のとおりです。
書き込み中止、0x1E
選択書き込み、0x0
tar を書き込む、0x0
cswを書き込む、0x23000012
そしてDRWを読み取り、内部フラッシュエンドアドレスまで読みます。
こんにちは、
物理的なフラッシュの内容ではなく、Cortex-Mのメモリエイリアスを読み取っている可能性があります。LPC54113では、アドレス0x00000000は、ブート構成とリマップ設定に応じて、現在アクティブなメモリ(フラッシュ、ブートROM、またはRAM)にマッピングされます。デバイスが空の場合、ブートROMは有効なベクターテーブルを0x0に表示できるため、割り込みベクターが表示される理由0xFFFFFFFF。
0x0番地の物理フラッシュメモリの内容を読み取りたいのですが、どうすればいいですか?
買掛金口座やその他の取引を変更する必要がありますか?
LPC5411Xには、物理フラッシュを読み取るためのIAPサンプルがありませんでした。
こんにちは、
TAR = 0x0を使用して SWD AHB-AP を介してメモリを読み取ると、返されるデータはCPU から見える現在のシステムメモリマッピングを反映します。LPC5411xデバイスでは、 アドレス0x00000000の最初の512バイトがブートROMに再マッピングされるSO、この領域で観察されるデータはFlashに保存された実際の内容ではなく有効な割り込みベクターテーブルとなります。TAR = 0x0 アクセスと連続した DRW アクセスを使った単純な線形読み込みに頼らないでください。代わりに、Jlinkを使って読み取るのと同じように、Flashの生のFlash配列内容にアクセスできるFlashアルゴリズムやIAPベースの方法を使うべきです。