ビュートローバーARMでソースコードデバッグする方法 - デバッグ・プローブ編
以前の記事 で ビュートローバーARM に printf
を導入する方法を紹介しましたが、やはり1行1行ソースコードを追いかけてデバッグしたいことってありますよね? せっかく LPC-Link へのインターフェースが付いているのに、なんとか利用できないものか… と、ここ数週間の間、せっせと情報集めをしていました。
ARM マイコンのデバッグの仕組み
ARM Cortex-M マイコンには、CoreSight というオンチップのデバッグ・ハードウェアが載っていて、DAP(Debug Access Port)を介してプロセッサの動作をトレースしたりメモリを覗いたりすることができるようになっています(出典:ARM Cortex-M3 システム開発ガイド)。
さらに ARM 社はこの DAP に JTAG の一部のピンとプロトコルを流用した SWD(Serial Wire Debug) を介して接続するインターフェース CMSIS-DAP を標準仕様として定めました。
ARM マイコンを製造する NXP 社の古いマイコンボードには、このインターフェースを搭載した LPC-Link というオマケのボードが付いていました。現在は MCU-Link にとって変わりましたが、LPC-Link を単体化した LPC-Link2 というデバッガも発売しています。(出典:一人1台!全Cortex ARMマイコン対応デバッガの仕組み)。
と言うことで、JTAG/SWD で CMSIS-DAP をサポートしたお手頃価格のデバッガとして以下の2つを購入し動作確認しました。
- 古い LPC 評価ボードの在庫処分品
- これまた古い トラ技ARMライタ
結論から言えば、前者はデバッガとしての起動に失敗、後者は成功し使えています。一応記録として前者の経緯を残しますが、興味がなければ読み飛ばしてください。
準備するもの
ビュートローバーARMとの接続用ピンソケットとケーブル
どちらも秋月電子で購入しました。
- ピンソケット(メス) 1×8(8P) … ビュートローバーARMの基板にハンダ付けします
- コネクタ付ケーブル 20cm 40P オスオス … 8ピン分を分離して使います
LPC 評価ボードの場合は、LPC-Link 側に取り付ける 1×8 のピンソケットがもう1つ必要です。
デバッグ・プローブの入手と設定
LPCXpresso Board の場合
僕が購入したのは LPC1104評価ボード で価格は税込 ¥1,000 でした。ちなみに最後の1枚だったので販売終了となっていますが、他にも多数が在庫処分品となっています(在庫数と価格は記事執筆時点のものです)。
秋月電子
- LPC1227評価ボードLPCXpressoBoard OM13008(在庫数 4、税込 ¥1,000)
- LPC812評価ボードLPCXpressoBoard OM13053(在庫数 39、税込 ¥2,000)
マルツオンライン
- XpressoLPC1104搭載ボード【OM13047-598】(在庫数 62、税込 ¥2,198)
- XpressoLPC812搭載ボード【OM13053-598】(在庫数 21、税込 ¥2,178)
使うのはオマケの LPC-Link の方で、回路図にも「パターンカットしてコネクタつけられるヨ」と書いてあるので、切り離します。
ガラスエポキシ基板は「超音波カッター」で切るのが良いのですが、普通のカッターの歯を何度も交換し、部品保護用の発泡ポリエチレンシートをうまく使いながら根気よく、指で押せば「パキッ」と割れるぐらいまで十分に基板の表裏に切り込みを入れていきます。
最後に 1×8 のピンソケットをハンダ付けします。改めて両者をケーブルで接続し、PC と USB で繋げた時に LPC1104 側の赤い LED が点滅すれば切り離し成功です。
デバイスドライバのインストール
初めて PC と接続した時にデバイスドライバがインストールされます。Windows の「デバイスマネージャー」で「USB デバイス」クラスに「USB Device with DFU Capabilites」が見つかれば一応は成功のようですが、LPCXpresso との接続で失敗します。フォーラムで同様の問題が議論 されているのを見つけましたが、僕は解決に至っていません。
僕の環境は Mac から VM(Parallels Desktop)を通して Windows を起動しているのですが、時々 Mac 側から「”LPC-Link Probe v1.3” を “Windows 7” に接続できません」と警告されるので、これが原因かもです。
もしかしたらネイティブの Windows なら成功するのかもしれませんが、一旦この問題は棚上げにしたいと思います(オィ)。
トラ技ARMライタの場合
さて、気を取り直して成功例の方を紹介します。
トラ技ARMライタは、WEBブラウザでプログラミングができると話題 だった mbed 対応のマイコンボードで、トラ技の付録だったボードで、全 Cortex-M シリーズがデバッグできる CMSIS-DAP 対応のデバッガにもなると言うシロモノです。
Amazon で書籍として購入できる他、マルツオンラインでボード+付属品が購入できます。断片的にでもネットに情報が公開されているので、デバッガとして使うだけなら後者が良いでしょう。回路図も特設ページ mbedの部屋 の TG-LPC11U35-501の回路図 から入手できます。
書籍版
Amazonへのリンク:mbed×デバッガ!一枚二役ARMマイコン基板: WEBブラウザで即席プログラミング!サクッと動かしてバッチリ仕上がる (トライアルシリーズ)
中身の一部が コチラのPDF に紹介されています。mbed に興味があればどうぞ。
付録にはピンソケットやスイッチ、USB コネクタなどが付いていて、基板へのハンダ付けが必要です。
単体版
マルツオンラインへのリンク:トラ技ARMライタ【TG-LPC11U35-501】
こちらは価格も安く 1.27mm(ハーフピッチ) 2×5(10P) ピンヘッダ付きフラットケーブル などがセットになっているのでオススメです(私はコチラを購入しました)。
ファームウェアの書き換え
トラ技の特設ページ から トラ技ARMライタ基板をCMSIS-DAP(デバッガ)として使うときのファームウェア をダウンロードし、中の README.TXT
に従い firmware.bin
を書き込みます。ビュートローバーARM の「リセットボタンを押しながら USB ケーブルをつなぐ」とウィンドーが開くアレと同じ仕掛けです。
ただしリセットボタンではなく ISP(In-System Programming) ボタンを押しながら USB ケーブルを接続するか、接続済みであればリセットと ISP の同時押しからリセットボタンを離し、次いで ISP ボタンを離すという手順になります。
デバイスドライバのインストール
デバッガ単体で PC と接続しても Windows は認識してくれず、デバイスドライバがインストールできませんでした。
そこでまずはビュートローバーARMとトラ技ARMライタをケーブルで接続します。ビュートローバー側に挿していた USB ケーブルをトラ技ARMライタ側に挿し替え PC と接続します。
デバイスドライバのインストールが成功すると、デバイスマネージャーの「ヒューマンインターフェースデバイス」に「HID準拠」のデバイスが見つかります。うまくいかない場合はトラ技ARMライタのリセットスイッチを押してみてください。また僕の環境ではドライバのインストール時に「ドライバーソフトウェアの最新版を自動検索します」を選択しないとダメでした。
いよいよデバッガを起動!
デバッグ対象の設定
LPCXpresso IDE の「Quickstart Panel」から「Debug」を選択するか、メニューから「Run → Debug Configurations…」を選択します。
特に後者の場合は「実行ファイルの選択画面」が出るので、ターゲットとなる axf(ARM ELF File Format)ファイルを指定します。
続いて「Apply」し「Debug」ボタンを押してしばらくするとデバッグ・プローブとの接続画面に遷移します。
デバッグ・プローブとの接続
ここまで順調にくれば、リストに「Toragi-LPC Writer CMSIS-DAP」が選択可能になっていると思います。万が一リストが空の場合には、改めてトラ技ARMライタのリセットボタンを押し「Search」ボタンを押してみます。LinkServer が良きに計らってくれるハズです。
デバッガの詳しい使い方は「LPCXpresso編」で!
Windows XP 時代のものを引っ張り出して遊ぶのにはそれなりの苦労がありますネ。僕の Mac も2013年製だし。でもあらためてトラ技ARMライタに感謝です