2013年9月2日月曜日

mbedで(pyOCD+CMSIS-DAP)のサブセット

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 件のコメント: