やまどり
Arduino UNO R4 MinimaでμT-Kernel 3.0を動かしてみる

Arduino UNO R4 MinimaでμT-Kernel 3.0を動かしてみる

Arduino UNO R4 MinimaでμT-Kernel 3.0を動かしてみます。e² studioやBSP2を使ったRTOS開発環境を整理します。

はじめに

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を取得します。

bash
git clone --recursive https://github.com/tron-forum/mtk3_bsp2.git

BSP2には各種ボード向けプロジェクトが含まれています。

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や低レイヤ開発にも触れてみたい人には、かなり面白い組み合わせだと思います。