mbedで(pyOCD+CMSIS-DAP)のサブセットを作ったでLPC1114FN28とSWDで直接接続できるようになりました。
フラッシュ書込とセミホスト発行検出だけを確認しています。
動作確認プログラム:
lpcterm2 - dumb-terminal with semihosting
SWDプロトコルについて
・SWDプロコトルに応答させるにはJTAGからSWDに切替えるコマンドを送る必要がある。
・アドレス範囲外アクセス等でエラーが発生すると、解消するにはDP_ABORTを送る。
・エラー状態でもDP_IDCODEだけは読み取れる。
・メモリー(レジスタ)の読み取りにはAP_DRWを空読みしてからDP_RDBUFFを読み取る。
IAPについて
・フラッシュアルゴリズムをRAMに置かずに、PCプログラムカウンタをIAPに、LRをbkptに指してresumeしている。
・resumeした時に割込みが悪影響しそうに思えるが、対策をしていないが動いている。
・フラッシュアルゴリズムのターゲットの初期化をしてない。クロック変更すると動かなくなるかも。
・先頭512バイトのベクターテーブルはユーザフラッシュに書き込めるが、読み取れない時がある。切り替わるタイミングが不明。
(2013/9/2)
先頭512バイトのベクターテーブルはユーザフラッシュに書き込めるが、読み取れない時があるのは、
プログラミングを実行すると、printf()がSerialクラスを使うとNVIC_SetVector()が
割込みベクターを書き換えるためにベクターテーブルをRAMにマッピングするので、書き込み時のユーザフラッシュが見えなる。
(2013/9/25追加)
---
0 件のコメント:
コメントを投稿