岡野さんのページを参考にmbedのオフライン開発環境を構築しました。https://developer.mbed.org/users/okano/notebook/setup-mbed-cli-on-mac-os-x-JP/準備¶パッケージ管理ソフトHomebrewとXcodeをインストールします。Storeを使ってXcodeをインストールした後、最新に更新してください。cliがインストールを促してくれます。以下のコマンドでHomebewがインストールされます。https://raw.githubusercontent.com/Homebrew/install/master/install)"brewコマンドでpythonとnpmをインストールします。pythonpythonのインストールで警告がでるので、以下のコマンドを実行します。python次にgit、Mercurial(hg)とGCCをインストールします。cliはpipコマンドを使ってインストールします。これでmbedオフライン開発環境が整いました。ために、Lチカのサンプル(blink)を作成します。modules...main.cppは、以下の様にしました。blink/main.cppblinkには、以下のディレクトリとファイルができています。mbedディレクトリには、必要なライブラリやインクルードファイルがダウンロードされるので、Githubには含めていません。LPC1768をMacに接続してみます。LPC1768を認識するかdetectコマンドで確認します。以下の様に入力すると、LPC1768として認識されていることが分かります。3それでは、toolchainをGCC_ARM、ターゲットをLPC1768にセットします。OS2ではライブラリのアップデート(新規の場合ダウンロード)が必要です。targetが見つかりません。その場合には、以下のコメントに従ってください。update準備が整ったのでコンパイルを実行します。./BUILD/LPC1768/GCC_ARM/blink.bin正常にビルドが完了したので、Imageファイル(blink.bin)をmbedに書き込みmbedのリセットボタンを押します。LEDが1秒間隔で点滅したら成功です。/Volumes/MBED/mbedのデバッグ¶オフラインの特徴であるデバッグ機能について、順を追って説明します。私の使っていた初期のものでpyocdを使うには、ファームウェアの更新が必要でした。更新が必要かどうかは、PCにmbedを差してマウントされたディスクにあるMBED.HTMをテキストエディタで開いて確認します。Shortcut</title></head><body></body></html>firmware=xxxxxの番号が1421212よりも小さい場合には、mbedのファームウェアの更新が必要です。以下のサイトから最新ファームウェア(mbedmicrocontroller_21164.if)をダウンロードし、mbedに書き込んでmbedの電源を入れ直してください。https://developer.mbed.org/handbook/Firmware-LPC1768-LPC11U24正常に更新されたら、MBED.HTMのfirmware=141212になっています。デバッグオプションを付けてコンパイル¶mbedのデバッグには、compile時にデバッグオプションを付けます。debug-infoを付けます。compileを実行してください。Debuggerを使って行います。ターミナルを開いて、以下のコマンドを入力してください。pyocd-gdbserverが起動し、デバッグの準備をします。port:3333OpenOCDと同様pyocdも以下の2つのポートを開いてデバッグコマンドを処理します。次にARM用のDGB(arm-none-eabi-gdb)を起動します。別のターミナルを開いて、mbedのプロジェクトのあるディレクトリに移動して、以下のコマンドを入力してください。found)...done.GDBが起動すると(gdb)のプロンプトが表示されますので、ここで以下のコマンドを入力します。!led1;(gdb)以下のGDBコマンドを使ってblinkをデバッグします。GDBの終了nを入力すると、次の行に進みます。wait_ms(500);もう一度cを入力して、8行目で止め、今度はsを入力してみましょう。read();で止まりました。led1で値を参照すると、内部ではled1.read()が呼び出されます。read();upコマンドでmainの呼び出し元に戻り、プリントコマンドで値を見てみましょう。1このようにデバッガ(GDB)を使って処理の流れを確認したり、値をみることができます。デバッガを終了するには、qを入力してください。本当に終了するか確認してきますので、yを入力するとGDBが終了し、合わせてpyocd-gdbserverも終了します。debugging.Emacsのgdbモードを使う¶コマンドベースのGDBでは、ソースのどの部分を実行しているのかが、いまいち掴みづらいので、Emacsのgdbモードを使ってみましょう。通常だとEclipseを使ったデバッグに進むのですが、テキストベースのEmacsの方でも十分デバッグができます。別のターミナルを開いて、mbedのプロジェクトのあるディレクトリに移動して、以下のコマンドを入力してください。system.Emacsの使い方の説明画面が表示されます。現在停止している箇所のソースが表示されます。ここで先ほどと同様にnコマンドを入力すると下部の画面の=>がwait_ms(500);に移動します。leと入力した後にTABを押すと補完され、led1が表示されます。)を追加して改行するとled1の値を確認することができます。stepを実行できます。Sheetを参照してください。Ctrl-rで文字列検索で過去のコマンドを検索できるので、キー入力が大幅に省略できます。Emacsを終了する前に、GDBにqを入力してデバッグを終了しましょう。Ctrl-cでEmacsを終了します。