SWDでLPC8xxデバッグ
はじめに
やること
構成
- 開発環境
MCUXPresso
C言語(LPCOpen使用)
※ ただしこの記事では特にコードは書きません - デバッガ
LPC-Link2
ハードウェア構成
デバッグ対象はLPC812M101JD20です。秋月電子で購入できました。
このLPC81xシリーズ、5年前ぐらいにトラ技の影響か何かでDIP8pinのLPC810が少ピンで32bit ARM Cortex-M0+というところが受けたのか、LPC810に至っては100円もしなかった記憶があります。
最近は下火のようで、あまり流通していないのでしょうか。
接続
SWD周りだけを示すとこんな感じ。
基本的につなぐだけですが2点ほどつまづいてました。
SWD伝送線路のダンピング抵抗
配線次第かと思いますが、ダンピング抵抗を入れないとデバッグのセッションが開始しませんでした。
LPC812のマイコンをSWDで使うのはまだ2度目なのですが、どちらも300Ωと何やら高めにしないとうまくいきませんでした。
これはリファレンスを見たわけでなく、調整の結果としてそうなりました。
配線次第なところもあるかと思いますので、これでうまくいく保証はありません。
この辺については、まだ考えが足りないところがあると思いますがこれで動いたので追うのをやめてしまいました。
時間のある時にもう少し追っていきたいと思います。ISPエントリピン
LPC81xはリセット解除の時点である特定のピンがLowレベルになっていればISPモードに変わるようです。
ブートローダのバージョン次第で、どこのピンがISPエントリになるかは変わります。
ブートローダのバージョンはマイコンのマーキングの3行目の右端の2文字でわかります。
マーキング | バージョン | ISPエントリpin |
---|---|---|
1A | v13.1 | PIO0_1 |
2A | v13.2 | PIO0_2 |
4C | v13.4 | PIO0_12(※DIP8はPIO0_1) |
4C
以降は4C
と同じようです。
詳細はユーザーマニュアル(UM10601)を読むと良いと思います。
ただ直接グラウンドへ落とすのでなく、100kΩの吊下げ抵抗をかましています。
直接グラウンドへ落とすと、リセットとのタイミングか何かがあるのかわかりませんが、プログラムの書き込みがうまくいきませんでした。
これについても仕様を追えていないところが多いので、今後の課題とします。
デバッガの準備
LPC-Link2というNXPの評価ボードをCMSIS-DAPプローブかJ-Linkプローブとして使うことができます。
LPC-Link2のJP1をオープンにした状態で、以下画像の一番下2つのProgram LPC-Link2 with ...
のどちらかプログラムを起動することで、CMSIS-DAPプローブかJ-Linkプローブのどちらかへ書き換えることができます。
MCUXPressoにてデバッグ
CMSIS-DAPプローブかJ-Linkプローブのどちらかに書き換えたかによりますが、Run->Debug->Debug As で2(CMSIS-DAP)か4(J-Link)を選ぶとデバッグが開始します。
はじめはこのようにmain()
にブレークがかかった状態でデバッグが開始します。
なので、リセット周りの関数は終わっていることとなります。
行番号をダブルクリックすることでブレークも仕掛けられます