私はLPC5516チップを使用しています。
SWDプロトコルを使用してチッププログラムをSRAMに書き込み、実行したい。
しかし、プログラムがSRAMに書き込まれていなかったことが判明した。
SWD経由でチップのIDCODEを読み取り、カーネルの停止などの初期化処理を完了しました。
プログラムを0x04000000に書き込み、そのアドレスから読み戻したところ、読み取られたデータは0であることが判明した。
サンプルコードを通して、SWDプロトコルを使用して以下のようなAHB SRAMクロックをいくつか有効化しました。
SYSCON->AHBCLKCTRLSET[0] = SYSCON_AHBCLKCTRL0_SRAM_CTRL1_MASK | SYSCON_AHBCLKCTRL0_SRAM_CTRL2_MASK;
しかし、上記のプログラムを実行した後でも、SRAMに書き込まれたプログラムの読み出し値は依然として0のままです。
この状況の原因を分析するのを手伝っていただけませんか?
1.私は16進数で0x20000000を書き込もうとしましたが、0x4000000を書き込むのと同じ結果になりました。
2. JLINKのSWD波形を比較しましたが、波形が理解できません。変です。set 0xE000EDF0の前にackエラーのものを送信し、0xA05F0003で0xE000EDF0を設定し、0xE000EDF0読み取り、値が0x03030003です。
私のSWD波形はチップIDCODEを読み取り、その後チップを初期化します。0xE000EDF0を0xA05F0003に設定すると、読み戻された値は0x0になります。
Jlinkのスクリプトを教えてもらえますか?デバッグモードに入る前に何が送信されるのか知りたいです。
デバッグモードに入る前に、このチップで有効にする必要がある設定は何ですか?あるいは、何らかのレジスタを設定する必要があるのでしょうか?
こんにちは@1123HENRY
1) 0x04000000のSRAMX領域ではなく、0x20000000のSRAMにプログラムを書き込んでみてください。
2) MCUXpresso IDEまたはLinkFlashを外部デバッガで使用し、SRAMをプログラムし、SWD信号や波形をキャプチャし、プログラマで観察した波形と比較してください。
BR
アリス
私は自作のチップを使ってSWD命令を送信し、LPC5516チップのデバッグを行いました。デバッグを有効にするために、0xE000EDF0レジスタへの書き込みを試みましたが、うまくいきませんでした。
次に、SRAMへの書き込みを試みましたが、書き込み操作が失敗しました。デバイスがデバッグモードに入らなかったようです。
他にもエラーログを共有できますか?