uvision

mbedはブラウザ上でプログラミングできて、ファイルをマイコンにダウンロードするだけで、簡単にマイコンで遊べてとっても便利なのですが、複雑なプログラムになってくると、プログラムの途中で止めてみたり、変数の内容を確認したかったりします。
そこで、mbedをデバッグする方法を調べたのでまとめてみます。

1.開発環境をダウンロードしてインストールします。
ARM KEILをダウンロードします。
 ダウンロードには氏名やメールアドレスなど入力するとダウンロードできるページに行けます。
フリー版として使うにはコンパイルした結果が32kBまでという制限がありますが、LPC1114FN28/102は元々32kBしかないので、フリー版でも問題なく使えます。
armkeildownload
右下のMDK518.EXEをクリックするとダウンロードできます。
ダウンロードしたファイルをクリックしてインストールします。基本的に[NEXT]をクリックしていけばOKです。

armkeilsetuofinish

[Finish]をクリックすると、Pack Installerという画面が開きます。
armkeilpackinstaller

左側の[Device]タブの中の[All Devices]→[NXP]→[LPC1100 Series]→[LPC100XL]→[LPC1114FN28/102]を選択します。ウィンドが開いた当初は無いのですが、しばらくすると表示されます。
armkeilpackinstaller2
その状態で、右側の[Device Specific]の[Keil::LPC1100_DFP]の[Install]をクリックします。
もうひとつ[Generic]の[ARM::CMSIS-Driver_Validation]も[Install]をクリックします。
これらは必要かどうかわからないですが、とりえあず入れてみました。
 (2016.3.14追加 2つ目の[ARM::CMSIS-Driver_Validation]はインストールしなくてもいいみたいです。)
これでウィンドウを閉じます。

2.MDK v4 Legacy Supportをダウンロードしてインストールします。
先ほどインストールした開発環境はバージョンが5になっていますが、mbedのプログラムはバージョン4のプロジェクトファイルみないなので、4のプロジェクトファイルが開けるように、このプログラムをインストールします。
このページからダウンロードします。左側の「for Cortex-X」のボタンをクリックしてダウンロードしてください。
mdkv4download
ダウンロードしたファイルをクリックするとインストールが始まります。

mdkcortexmsetup
基本的に[Next]をクリックするだけでインストールできます。
最後[Finish]をクリックしてインストール終了です。

さてデスクトップの[Keil uVision5]をクリックして開発環境を起動してみましょう。
armkeilicon
armkeilstartimege
プロジェクトが無いので、何もありません。閉じましょう。

3.mbedのプロジェクトをKeil uVision5でオフラインコンパイルする
それでは、まずmbedのプログラムをKeil uVision5で開く準備をしましょう。
mbedprogramunoexport
webのmbedのページから、ダウンロードしたいプロジェクトの名前の上で右クリックして、「プログラムのエクスポート」をクリックします。

mbedprogramunoexport2
Export ToolchainがKeil uVision4になっているのを確かめて[Export]をクリックします。
zipファイルがダウンロードできます。
zipを展開して*.uvprojというファイルをクリックして開いてみてください。
mbedprogramunoexport3

Keil uVision5のソフトが起動します。
mbedprogramunoexport4
mbedのプログラムが開けました。
このままコンパイルしようとしてもできません。
開発環境にターゲットデバイスを教えてあげます。

[Project]の[Select Device for Target ...]をクリックします。
mbedprogramunoexport5

左下の窓の中の[NXP]→[LCP1000 Series]→[LPC1100XL]→[LPC1114FN28/102]をクリックして選択します。
mbedprogramunoexport6
[OK]でOK.

[F7]キーでコンパイルできます。
mbedprogramunoexport7

小さなプログラムの場合コンパイルが成功しますが、長いプログラムの場合webの環境ではコンパイルできるのに、オフラインでコンパイルするとエラーになってしまうという現象が発生します。「No space in execution regions with .ANY selector matching」みたいなエラーが出ます。これは、コンパイルの最適化が初期値がOFFのために発生します。デバッグのためには最適化は低い方が良いですが、仕方がないので最適化をONする設定をします。

プロジェクトツリーのプロジェクトの根元(下の図の赤丸)をクリックして選択してから
[Project]の[Options for Target ...]をクリックします。
mbedprogramunoexport8

[C/C++]タブの[Optimization:]のレベルを1か2に上げます。
mbedprogramunoexport9
ARMの資料によると
  •     [デフォルト](Default):コンパイラのデフォルト、または上位のターゲットまたはグループのレベルの設定を使用します。
  •     [レベル 0(-O0)](Level 0 (-O0)):一部の単純なソース変換を除き、すべての最適化をオフにします。
  •     [レベル 1(-O1)](Level 1 (-O1)):デバッグビューに著しく悪影響を及ぼす最適化をオフにします。
  •     [レベル 2(-O2)](Level 2 (-O2)):高度な最適化(デフォルトレベル)です。オブジェクトコードとソースコードとの間のマップが明確でない場合があるため、デバッグビューの質は低下します。
  •     [レベル 3(-O3)](Level 3 (-O3)):最大の最適化が行われます。[時間を最適化](Optimize for Time)と組み合わせてレベル 3 を使用すると、ループが展開される可能性があるため、生成されるコードがレベル 2 よりも多くなる場合があります。

とあるので、1で容量オーバーなら2にするみたいな感じでいいと思います。


さて長くなってしまったので、次回は実機でデバッグする方法を紹介します。




スポンサードリンク