秋月の新商品として、Microchip 社から MPLAB Snap なる商品が出てきました。どうやら Microchip 系のマイコンで使えるデバッガということらしいです。
...価格はなんと 1,740円ポッキリ。これは買うしか無いですね!
これまでの Microchip 社が出していたデバッガは2から3万円程度、書き込み器は PicKit3 が5,000円、最新の PicKit4 が5,700円(いずれも秋月販売価格)とのことです。この MPLAB Snap はやや制約があるものの、多種多様なマイコンに対応していて、かつ PicKit よりも安いデバッガなのです。
また、対応OSも、MPLAB X IDE が動けば OK という幅広い対応なので、実際に購入して見ました。
なお、データシートはここの Microchip のサイトから持ってこれます。
本記事では PIC32 に書き込み & デバッグという内容で記載したいと思います。
使ってみた所感
- 電圧レベルがフレキシブルなのは良いと思う
- ボード上のチップが熱くてカイロになる
最初は接続時に熱くて、「えっ?これ初期不良で死んだか??」って不安になりましたが、しばらく接続していても何も出ないし、IDE から認識されているみたいだったのでなるほどと言った感じでしたww
書き込み、デバッグ共に高速で、さすが純正ツールだなと思いました。なお、このツールを使うために、MPLAB X IDE は最新版にしてください。
対応デバイス
データシートによると、高電圧プログラミングを用いない PIC、dsPIC、AVR、DSC といった 8bit デバイス、SAM、CEC、PIC32 といった 32bit デバイスに対応しているらしい。
書き込み方式は従来の ICSP だけでなく、JTAG も SWD も対応。すごい。
手元にあるマイコンをざっと確認したところ、所持している対応ターゲットは AVR、SAM、PIC32 のみでした(HVP を行わない設定にしてある PIC18 とかも対応しているのかな?よくわからない)。
回路接続
データシートの通りです。...というのは説明になっていないので、もうちょい詳しく。まずはデータシート記載のピンアサインです。どうやら ICSP 仕様で書かれているよう。
このデバッガは出力電圧にフレキシブルに対応しています。どうやら 1.2V から 5.5V までの電圧を吐くことができるようです。
では、上の図の VDD とは何だ、ということですが、データシートには「ボード側へは外部電源使ってね」と言っています。そしてその外部電源端子を VDD と GND に接続するようです。この記載だけ見ると、電源線をもう1つ持ってこなきゃいけなくて面倒臭そうですが、実際はデバッガ側から電源を利用できます。デバッガの USB 端子側をよくご覧ください。ホールに 3.3V、5V の記載がありませんか?そこから電源は持ってこれます。便利ですねぇ。
まとめると、VDD はそこから電圧が出るわけではなく、電源電圧に対して入力する端子です。3.3V と 5V は外部接続なしでもデバッガから取ってこれます。おそらくこれによって、デバッグ信号線の電圧レベルを決定しているのでしょう。
ということで、僕の PIC32MX270 に接続する際のターゲット-デバッガ間のピンアサインを書いておきましょう。PIC32 自体への電源の接続方法はデータシートをよく読みましょう。そして VCAP のコンデンサ接続もお忘れなく。
PIC32側No. | PIC32側ピン名 | デバッガ側No. | デバッガ側ピン名 | 備考 | |
---|---|---|---|---|---|
2 | VDD | 3.3Vに接続 | |||
3 | Ground | GND | |||
1 | MCLR# | 1 | MCLR# | ||
4 | PGED1 | 4 | PGD | ||
5 | PGEC1 | 5 | PGC |
IDE側の設定、書き込み
それでは IDE の設定です。
デバッガの指定
各プロジェクトごとの設定になります。プロジェクト作成時には指定する画面が出ますので、その時に Snap を選択すればいいです。
既に作成してあるプロジェクトで使用したい場合は左ペインのプロジェクト名を右クリックしてプロパティを開いてもらうと、そこでデバッガの指定ができます。
書き込み
画面上側のツールバーより、以下のボタンが見えると思います。
これは左から、プログラムの実行、プログラムをターゲットに書き込む、プログラムをターゲットから読み込む、という意味になっています。1番目と2番目の違いがよくわからないですが。いずれにしろボタンを押すとビルド、書き込み、実行が始まります。サクッと出来てしまいました。。。
なお、書き込み後、動かないときは一旦 MPLAB Snap の電源を切るといいです。
デバッグ
さぁ、ここからデバッガとして本領発揮です。
ブレークポイントでの一時停止
まずソースコードにブレークポイントを張ってみましょう。デバッグではコンパイラの最適化を切る((追記: どうやらデバッグ時には IDE さんがいい感じに判断して、-O0
)ことを強くおすすめします(Optimize out されてしまうため)。-O0
相当の設定になるようです。ですので特別設定値を変える必要はなさそうです)コード中の行番号をクリックするとブレークポイントを張ることが出来ます。
そうしたらツールバーより以下の画像に見える一番右側をクリックして、デバッグを開始です!
そうすると、デバッグ用のボタンたちがツールバー中に隠れた状態で出現しますので(ここハマりどころ)、なんとか見つけて操作しやすいところにドラッグしておいてやってください。こんな感じのやつです↓
あとは普通に Step In、Step Over 等々出来ます。
IOレジスタや変数の監視
メニューバーから対応するウィンドウ(?)を出しておきましょう。
ウォッチポイントの設定はこれとは別にメニューバーの Debug -> New Watchpoint... から設定できます。ブレークポイント中に IO レジスタの値を見たい場合は IO View から見れます。もちろん、Value を変更して Enter を押すと、即座にその変更がターゲットに書き込まれます。これで完全手動Lチカが出来ますね。
デバッガファームウェアのリカバリ
実は書き込み前に MPLAB X IDE 側が MPLAB Snap のファームウェア更新を掛けることがあるのですが、運悪くそのタイミングで接続断してしまうとかすると、デバッガはもはや正常に動かなくなってしまいます。その時に備えてリカバリの機能が用意されています。
メニューバーから Debug -> Hardware Tool Emergency Boot Firmware Recovery を選択すると、ソフトウェア的に故障してしまったデバッガを修復することが出来ます。なんか動かないな?と思ったらやりましょう。僕も1回やりましたwその際は Active の LED がオフ、Status の LED がオフ(ハイインピーダンスなのか、弱く光っていた)という状況でした。
〆
今回は PIC32 のみでしたが、一通り使い方を書いたつもりです。わかりにくい箇所があったらぜひご指摘ください。
また、HVP を行わない場合は旧来の PIC18 でも書けるのか、今後試してみたいと思います。