STMicroelectoronics製のマイコン評価ボードNUCLEO-L476RGにmrubyをポーティングしました。
mrubyは、人気の開発言語「Ruby」を軽量化したプログラミング言語で、組込みシステムや様々なソフトウェアに組み込むことができる高機能なプログラミング言語です。
NUCLEO-L476RGは、ARM Cortex-M4 80MHz, 1MB FLASH, 128KB SRAMを搭載したマイコン評価ボードで、mbed OSにも対応しています。
(カスタマイズなしの)mrubyは200KB程度のRAMを必要としますが、stm32l476-mbed-mrubyでは、下記を行うことで128KB(実際は16KB+96KB)のSRAMでmruby-1.3.01を動作させています。
- mrubyを省メモリ向けにカスタマイズ
- メモリ管理を自作
マイコンボードはNUCLEO-L476RGを使用していますが、SRAMが128KB以上、FLASHが256KB以上あるマイコンであればmrubyを動作させることは可能です。
128KBのRAMで本格的なアプリケーションを動作させることは流石に難しいですが、安価で入手可能なマイコンボードでも動作する軽量版Ruby「mruby」を是非体験してみて下さい。
- NUCLEO-L476RG マイコンボード
- Windows PC / Mac
- USB A-miniB ケーブル
Windows環境でのmrubyのビルドには、Microsoft Visual Studio(VC++)、MinGW(gcc)、Cygwin(gcc)等が利用可能ですが、ここではMinGWを使用する前提で説明していきます。
MinGWのダウンロードサイトからmingw-get-setup.exeをダウンロードして実行します。(インストール時の設定はデフォルトのままでOKです)
MinGW Installation Managerの画面が表示されたら
- mingw32-base
- mingw32-gcc-g++
- msys-base
の3項目を選択して、InstallationメニューのApply Changesを実行して下さい。
インストール完了後、以下のファイルのショートカットをデスクトップに作成します。
C:¥MinGW¥msys¥1.0¥msys.bat
注意
以下、Windows環境でのコマンド実行は、このmsys.batを実行して表示されるコマンド画面から実行するものとします。
XcodeのCommand Line Toolsをインストールして下さい。
mrubyをビルドするためには、本家Rubyが必要です。
RubyInstallerより、2.0.0以降のバージョンのインストーラをダウンロードして、Rubyをインストールして下さい。
プリインストールされているRuby、またはrbenvなどでインストールされたRubyがそのまま利用できます。
Bison for Windowsより、Complete package, except sourcesのSetupをダウンロードして、Bisonをインストールして下さい。
インストール先のフォルダ名は C:¥GnuWin32 に指定するものとします。
インストール実行後、環境変数 PATH に以下を追加して下さい。
C:¥GnuWin32¥bin
Homebrewを使用して、以下のコマンドでBisonをインストールします。
$ brew install bison
以下のコマンドを実行し、上記それぞれにパスが通っていることを確認します。
momo-mruby では mbed (GR-PEACH) 用にクロスコンパイルするために mbed CLI を使用します。
mbed CLIのセットアップ手順を以下に示します。
mbed CLI を利用するためには Python 2.7 が必要です。(Python 3は利用できません)
Python 2.7 をセットアップしてください。
※ momo-mruby上ではPythonは動作しません。
Git 1.9.5 以降をインストールしてください。
Mercurial 2.2.2 以降をインストールして下さい。
GNU ARM Embedded Toolchain 5.4 をインストールしてください。
以下のコマンドを実行し、上記それぞれにパスが通っていることを確認します。
Python
$ python --version
Python 2.7.xx
Git
$ git --version
git version 2.x.xxxxxx
Mercurial
$ hg --version
Mercurial - 分散構成管理ツール(バージョン 4.1.2)
(詳細は https://mercurial-scm.org を参照)
Copyright (C) 2005-2017 Matt Mackall and others
本製品はフリーソフトウェアです。
頒布条件に関しては同梱されるライセンス条項をお読みください。
市場適合性や特定用途への可否を含め、 本製品は無保証です。
GNU ARM Toolchain
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.4.1 20160609
...
コマンド実行がうまくいかない(パスが通っていない)場合は、パスを追加して下さい。
システムのプロパティ - 詳細設定 - 環境変数から、環境変数 PATH に以下を追加します。
- C:¥Python27
- C:¥Python27¥Scripts
- C:¥Program Files¥Git¥cmd
- C:¥Program Files (x86)¥GNU Tools ARM Embedded¥5.4 2016q2¥bin
※ 32bit版Windowsの場合は C:¥Program Files¥GNU Tools ARM Embedded¥5.4 2016q2¥bin
$ export PATH=$PATH:$INSTALL_DIR/gcc-arm-none-eabi-5_4-2016q2/bin
※ $INSTALL_DIRには、GNU ARM Toolchainsをインストールしたディレクトリを指定して下さい。
上記1〜4のインストールが完了したら、mbed CLIをインストールします。
$ pip install mbed-cli
以下のコマンドを実行して、 stm32l476-mbed-mruby のソースコードを取得します。
$ cd $WORKING_DIR
$ git clone https://github.com/mimaki/stm32l476-mbed-mruby.git --recursive
$ cd stm32l476-mbed-mruby
$ make first
- $WORKIND_DIRには、任意のディレクトリを指定して下さい。
make first
は初回のみ実行して下さい。
$ make
NUCLEO-L476RGをUSBケーブルでPCに接続すると NODE_L476RG
ドライブとして認識されます。
以下のファイルを NODE_L476RG
ドライブのルートディレクトリにコピーすることで、NUCLEO-L476RG
のファームウェアが更新・再起動されます。
BUILD/NUCLEO_L476RG/GCC_ARM/stm32l476-mbed-mruby.bin
サンプルアプリケーション (app.rb) では、putsによるコンソール出力とDigiralIO#writeによるLED制御が行われます。
コンソール出力を確認するためには、VCP(Virtual COM Port)ドライバとターミナルソフトをインストールする必要があります。
STmicroelectronicsのダウンロードサイトからVCPドライバをダウンロード・インストールして下さい。
FTDIが提供しているVCP Driverをダウンロード・インストールして下さい。
putsによるコンソール出力を確認するためには、CoolTermなどのターミナルソフトを使用します。 ターミナルソフトで下記を設定し、NUCLEO-L476RGをUSB接続してCOMポートに接続すると、コンソール出力が確認できます。
項目 | 値 |
---|---|
Port | Windowsの場合: COMx Macの場合: usbmodemXXXX (x, XXXXは任意の数字) |
Baudrate | 9600 |
Data bits | 8 |
Parity | none |
Stop bits | 1 |
Flow control | none |
サンプルアプリケーション (app.rb) の出力例
mruby!
Hello, mruby!
Hello, Hello, mruby!
Hello, Hello, Hello, mruby!
Hello, Hello, Hello, Hello, mruby!
Hello, Hello, Hello, Hello, Hello, mruby!
Hello, Hello, Hello, Hello, Hello, Hello, mruby!
Hello, Hello, Hello, Hello, Hello, Hello, Hello, mruby!
Hello, Hello, Hello, Hello, Hello, Hello, Hello, Hello, mruby!
Hello, Hello, Hello, Hello, Hello, Hello, Hello, Hello, Hello, mruby!
2
42.195
mrubymruby
[1, 4, 7, 1, 4, 7]
app.rbを変更した後、make
を実行して、ビルド結果の stm32l476-mbed-mruby.bin を NUCLEO-L476RG に書き込むことで、mrubyアプリケーションを更新することができます。
本ソフトウェアはMITライセンスのもとで公開しています。LICENSEを参照して下さい。
Footnotes
-
公開時点のmrubyの最新バージョンは1.4.1ですが、1.3.0の時代にポーティングを実施したため、少し古いmrubyを使用しています。 ↩