はじめに
Arduino UNO R4 Minimaは、従来のUNOシリーズとは異なり、ルネサスのRA4M1(Arm Cortex-M4)を搭載した32bitマイコンボードです。
最近ではArduino環境だけでなく、より低レイヤな組み込み開発にも使われることが増えてきました。
今回は、Arduino UNO R4 Minima上でリアルタイムOS「μT-Kernel 3.0」を動かす方法について整理してみます。
使用するのは、TRON Forumが公開している「μT-Kernel 3.0 BSP2」です。
本文
μT-Kernel 3.0とは
μT-Kernel 3.0は、TRONプロジェクト系のリアルタイムOSです。
特徴として:
- 軽量RTOS
- IEEE 2050-2018準拠
- 小規模組み込み向け
- IoT向け
- μT-Kernel 2.0との互換性
などがあります。
FreeRTOSと比べると、日本語情報や資料が充実しているのも特徴です。
Arduino UNO R4 Minimaについて
Arduino UNO R4 Minimaには、ルネサス製のRA4M1が搭載されています。
主な仕様:
- Arm Cortex-M4
- 48MHz
- 256KB Flash
- 32KB RAM
- 5V動作
- CAN対応
- DAC搭載
従来のUNO R3よりかなり高性能になっています。
また、SWD端子もあるため、本格的なデバッグもしやすくなっています。
μT-Kernel 3.0 BSP2
今回使用するのは「μT-Kernel 3.0 BSP2」です。
GitHub:
mtk3_bsp2 GitHub Repository
BSP2は、マイコンメーカー提供のSDKやHALを活用しながらμT-Kernelを動作させる仕組みです。
つまり:
- Renesas FSP
- e² studio
- ドライバ
などをそのまま利用できます。
これはかなり便利です。
Arduino UNO R4も公式サポートされている
μT-Kernel 3.0 BSP2では、Arduino UNO R4 Minimaもサポートされています。
対応ボード一覧にも:
- Arduino UNO R4 MINIMA
- RA4M1 Clicker
などが含まれています。
開発環境
今回必要になるもの:
- Arduino UNO R4 Minima
- e² studio
- Renesas FSP
- μT-Kernel 3.0 BSP2
- USB Type-Cケーブル
- E2エミュレーター Lite
BSP2はe² studio向けプロジェクトとして提供されています。
そのため、Arduino IDEではなく、ルネサス系の開発環境を使います。
ちなみにE2エミュレーター Liteがないとデバッグはできませんが、動かすことは可能です。
e² studioをインストール
ルネサス公式サイトからe² studioをインストールします。
e² studioはEclipseベースの統合開発環境で、RAシリーズの開発でよく使われます。
インストール時にはFSPも入れておくと便利です。
BSP2を取得する
GitHubからBSP2を取得します。
git clone --recursive https://github.com/tron-forum/mtk3_bsp2.gitBSP2には各種ボード向けプロジェクトが含まれています。
RTOSっぽいコード
μT-Kernelではタスクを生成して並列動作させます。
例えば:
void task(INT stacd, void *exinf)
{
while(1) {
tm_pprintf("Hello μT-Kernel\n");
tk_dly_tsk(1000);
}
}このように、タスク関数を定義して動かします。
Arduinoの loop() とはかなり違う雰囲気があります。
Arduino IDEとはかなり違う
Arduino IDEでは、
void setup() {
}
void loop() {
}のような単純な構成が基本です。
一方RTOSでは:
- タスク
- スケジューラ
- 割り込み
- 同期
- Queue
などを使います。
そのため、より「本格的な組み込み開発」に近くなります。
UNO R4はRTOS学習にも良さそう
Arduino UNO R4 Minimaは:
- 入手しやすい
- 安い
- 5V対応
- Cortex-M4
- SWDあり
- FreeRTOSも用意されている(FSPで)
という特徴があります。
そのため、「RTOSを触ってみたい」という用途にもかなり良さそうです。
特にμT-Kernelは日本語情報も比較的多いため、学習しやすい印象があります。
余談:デバッガーなしで書き込み
Arduino UNO R4 Minimaに搭載されているRA4M1は、USB経由でファームウェアを書き込むことができます。
そのため、E2 Liteなどのデバッガーがなくても、ファームウェアを書き込んで実行すること自体は可能です。
今回は、Renesas Flash Programmerを利用して書き込みを行いました。
書き込み時は、Arduino UNO R4 MinimaのMD端子をGNDへ接続してブートモードへ入ります。
その状態でUSB接続すると、Renesas Flash ProgrammerからRA4M1へ書き込みできるようになります。
ただし、この方法では:
- ブレークポイント
- ステップ実行
- レジスタ確認
などのデバッグ機能は使用できません。
そのため、「とりあえず動かしたい」場合には便利ですが、本格的なデバッグを行う場合はE2 Liteなどのデバッガーを使う方が快適です。
おわりに
今回はArduino UNO R4 MinimaでμT-Kernel 3.0を動かす方法について整理しました。
Arduino UNO R4は、従来のUNOシリーズとは違い、本格的な組み込み開発にも使いやすいボードになっています。
また、μT-Kernel 3.0 BSP2によって、Arduino UNO R4でもRTOS開発を比較的簡単に始められるようになっています。
Arduino IDEだけではなく、RTOSや低レイヤ開発にも触れてみたい人には、かなり面白い組み合わせだと思います。