micro:bit のオフライン開発環境の構築

micro:bit ではさまざまなウェブベースの開発環境が提供されている。
この記事ではオフラインでの開発環境の構築方法(ただし Ubuntu Linux のみ)について説明する。
参考にしたのは以下のサイトである。
https://lancaster-university.github.io/microbit-docs/offline-toolchains/

yotta のインストール

最初にするのは yotta というビルドツールのインストールである。 yotta は Python で記述されているため、Python 関係の開発ツールをインストールしたあとで yotta をインストールする。

sudo apt-get install python-setuptools cmake build-essential ninja-build python-dev libffi-dev libssl-dev
sudo easy_install pip
pip install yotta

モジュールの依存関係を更新できるようにするため、以下のようにディレクトリのパーミッションを変更しておく。

sudo mkdir -p /usr/local/lib/yotta_modules
sudo chown $USER /usr/local/lib/yotta_modules
chmod 755 /usr/local/lib/yotta_modules

gcc のインストール

gcc-arm-none-eabi ではなく、ARMがメンテしている gcc をインストールする。そのために apt のレポジトリを追加する。

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update

gcc をインストールする。

sudo apt-get install gcc-arm-embedded

ついでに srecord をインストールする。

sudo apt-get install srecord

サンプルファイルのビルド

サンプルのプロジェクトを入手してビルドする。

git clone https://github.com/lancaster-university/microbit-samples
cd microbit-samples
yt target bbc-microbit-classic-gcc
yt build

ビルドが成功すると ./build/bbc-microbit-classic-gcc/source/microbit-samples-combined.hex ができるので、マウントした micro:bit にコピーする。

cp ./build/bbc-microbit-classic-gcc/source/microbit-samples-combined.hex /media/MICROBIT

トラブルシューティング

micro:bit の環境構築はなぜか 64bit 環境でうまくいかなかった。 yt build を行うとエラーが出てしまう。

% yt build
info: get versions for microbit
error: 'NoneType' object has no attribute 'rfind'

いろいろ調べたが解決策が見つからなかったので、 ubuntu-server 16.04 のi386版を新規にインストールして試してみたらうまくいった。
また、 yt target でもエラーが発生した。これは 以下のように pyopenssl を再インストールすることで回避できた。

sudo pip uninstall pyopenssl
sudo pip install pyopenssl