はじめに
この記事はmbed Advent Calendar 2016の6日目の記事です。
mbed CLIがリリースされ、ローカル環境でのコンパイルが楽になりました。 しかし、コンパイルするときにボードを設定したり、コンパイルされたファイルが結構深い階層にあったりと、何度も手作業で繰り返すのは結構面倒です。 そこで一発でボードを自動的に判定し、mbedへのコピーまでやってくれるスクリプトを作ったので紹介します。
mbed CLI自体のインストールについては、既に日本語の記事がまとまっていますので、以下をご覧ください。
mbed CLI (コマンドライン・インタフェース)を Mac OS X で使ってみる | mbed
作ったスクリプト
#!/bin/bash set -eu PROGRAM_NAME=$(basename `pwd`) MBED_DETECT=$(mbed detect | grep Detected | sed 's/,//g' | head -n 1) if [ -z "${MBED_DETECT}" ];then echo "[info] No mbed boards are found." exit 1; fi TARGET=$(echo ${MBED_DETECT} | cut -d' ' -f3) MBED_VOLUME=$(echo ${MBED_DETECT} | cut -d' ' -f7) echo "[info] Target:"${TARGET}", Volume:"${MBED_VOLUME} TOOL_CHAIN="GCC_ARM" mbed compile --toolchain ${TOOL_CHAIN} --target ${TARGET} BUILD_PATH=$(echo "BUILD/"${TARGET}"/"${TOOL_CHAIN}"/"${PROGRAM_NAME}".bin") cp ${BUILD_PATH} ${MBED_VOLUME}/ echo "[info] Success to copy from "${BUILD_PATH}" to "${MBED_VOLUME}
適当な名前(compile.sh
など)で保存し、$ bash compile.sh
とするか実行権限をつけて直接スクリプトを叩けば実行されます。
手元のLPC1768で試して動くことを確認しましたが、それ以外のボードでは未検証です。動かない場合は教えてください。
なおMacでしか動かないと思います(Linuxは動くかもですが)。
やっていること
mbed detect
でターゲットとコピー先のボリュームを取得し、mbed compile
で生成されたbin
ファイルをコピーしています。
mbed new
やmbed import
するとディレクトリ名がbin
ファイルのファイル名となるので、それも利用しています。
複数のmbedがPCに接続されている場合はmbed detect
で先頭になる1台に対してコピーが行われます。