μVision4でデバッグ!
.
mbedでCMSIS-DAPに対応したファームウェアのリリースが始まりました。
実際に使ってみたので、簡単に操作手順をまとめてみました。 デバッガは、CMSIS-DAP対応済みの Keil MDK-ARM v4.54 μVision4 を使用しました。
1. CMSIS-DAPって?
CMSIS-DAPは、標準化されたデバッグユニット用のオープンな規格で、ターゲットのデバッグポートとホストのUSBを介して、実行制御やメモリのリードライトなどのデバッグ処理を行うものです。
詳細はこちら:
http://www.keil.com/support/man/docs/dapdebug/dapdebug_introduction.htm
要は、ホスト側で動作するデバッガからの制御が標準化されるので、デバッガベンダの開発が楽になる仕組みです(個々のデバッグユニットに個別対応しなくてよい)。
私は、CMSIS-DAPが直接エンドユーザ(この場合はターゲット用のソフトウェア開発者)に対して大きな利点になるとは思っていなかったのですが、mbedのファームウェアがこの仕様に対応した事で、かなり驚かされました。
簡単に言うと、mbed interface(mbed基板の裏に実装されているあの地味なやつ)がデバッグユニット(例えば、LPCXpressoのLPC-Link, ULINK2, J-Link)の代わりにデバッグ制御を行ってくれます。こちらにも技術解説があります。
https://mbed.org/handbook/CMSIS-DAP
坪井さん(@ytsuboi)が翻訳してくれたページは、こちら。
https://mbed.org/users/ytsuboi/notebook/ja-cmsis-dap/
追加ハードウェアは一切必要ないし、デバッガも無償の評価版が使えます。
2. ファームウェアのアップデート
以下のサイトから、CMSIS-DAPに対応したファームウェアを入手します。
http://mbed.org/handbook/CMSIS-DAP-MDK
ファームウェアのアップデート方法は通常と同じなので、ここでは説明しません。詳細は以下を参照してください。
http://mbed.org/handbook/Firmware
あと、ここにある最新のシリアルドライバをインストールしないと、CMSIS-DAPが見えませんのでご注意ください。
http://mbed.org/media/downloads/drivers/mbedWinSerial_16466.exe
CMSIS-DAP-MDKのページでは、一度デバイスマネージャから "mbed composite" を削除しろと記載してありますが、私の環境では削除しなくても問題なくインストールできました。
3. Keil MDK-ARM の入手とインストール
以下のリンクから、無償評価版をダウンロード可能です。
https://www.keil.com/demo/eval/arm.htm
評価版(Lite edition)は、作成できるオブジェクトサイズが32kバイトに制限されています。
評価版の制限事項は、以下に記載されています。試用期間の制限なども特にありません。
http://www.keil.com/demo/limits.asp
ダウンロードした mdk454.exe をダブルクリックしてインストールします。
4. テスト用プロジェクトの作成とエクスポート
mbedのオンライン環境で、テスト用のプロジェクトファイルを作成します。もちろん既存プロジェクトでも問題ありません。
Program Workspace で該当するプロジェクトアイコンを右クリックして、"Export Program ..." を選択します。
Export Program ダイアログが表示されるので、以下のように設定します(デフォルト設定)。
Export To : Keil uVision4 Export Target : mbed NXP LPC1768
Export Program ボタンを押すと、ブラウザによってzipファイルがダウンロードされます。zipファイルは、作業用に適当なディレクトリに展開しましょう。
5. Keil uVision4 によるプロジェクトのインポート
インポートと言っても特に難しいことはありません。拡張子「.uvproj」が uVision4 のプロジェクトファイルなので、ダブルクリックします。
uVision4 IDE が起動され、オンライン環境で作成したプロジェクトファイルが、オフライン環境で使用できるようになりました。
6. プロジェクトの設定とビルド
このままプロジェクトをビルドしても良いのですが、mbed デバイスが接続されているUSBドライブに直接バイナリを書き込めると便利なので、その設定を行います。
[Project] -> [Options for Target ...] で設定ダイアログを開きます。 User タブの Run #1 フィールドに以下にあるテキストを以下のように修正します。
【変更前】 fromelf --bin -o build\test_LPC1768.bin build\test.axf 【変更後】 fromelf --bin -o e:\test_LPC1768.bin build\test.axf
これによって、オフラインツールで生成されたバイナリが USB ドライブにマップされているmbedに直接書き込まれます(ドライブ名は、ご使用の環境に応じて変更してください)。
因みに、fromelf は、リンカによって生成された ELF ファイルの情報を表示したり、様々なフォーマットに変換したりするユーティリティです。上記コマンドは、bin オプションで plain binary に変換しています。
リビルドを選択し、エラーがなければ成功です。
Rebuild target 'mbed NXP LPC1768' compiling main.cpp... linking... Program Size: Code=3400 RO-data=324 RW-data=36 ZI-data=40 User command #1: fromelf --bin -o e:\test_LPC1768.bin build\test.axf ".\build\test.axf" - 0 Error(s), 0 Warning(s).
mbed のリセットボタンを押して、プログラムが正常に書き込まれて動作しているのを確認します。
実はここまでの操作手順は、mbed のファームウェアをアップデートしていなくても可能ですので、オフラインコンパイラに興味がある方は是非お試しください。
7. デバッグ!
念のため、デバッグ接続の設定を確認します。 [Options for Target ...] の debug タブの Use (ダイアログの右上)ラジオボタンが選択され、接続先が "CMSIS-DAP Debugger" になっている事を確認します。
さて、いよいよデバッグですが、"Start/Stop debug session" ボタンを押すだけです。
評価版の場合は、ここでダイアログが表示されます。
バイナリが mbed にダウンロードされ(Flashメモリへの書き込み)、実にあっけなくデバッグセッションが開始されます。
ブレークポイントの設定や、レジスタ、メモリ、変数の参照や変更が可能です。 追加ハードウェアなしで、ここまでのデバッグ環境が用意されているのは、なかなかお得ではないでしょうか。
8. シミュレーション環境
「でも、未だ CMSIS-DAP 対応のファームウェア持ってない」という方向けには、シミュレータの使用がお勧めです。
[Options for Target ...] の debug タブ左上の "Use Simulator" ラジオボタンでデバッグターゲットがソフトウェアシミュレータになります。実ハードウェアを使用しないシミュレータなので、ハードウェアに依存した部分のデバッグは制限されますが、デバッガの機能を試すには十分だと思います。
以上です。
3 comments on μVision4でデバッグ!:
Please log in to post comments.
Mooと申します。 普段はSHとPalmiceを使ってますが、仕事でmbedを使う必要に迫られ、今更printfでデバッグしたくないので、大変助かりました。
とても分かりやすく要点を説明して頂き、ほんの1時間ほどで環境を構築することが出来ました。 どうも有り難うございました。