技術コラム Vol.5

今すぐ試せる!リアルタイムOSのすゝめ

開発部 エンジニア / 大見

公開日:2022/06/17

ルネサス エレクトロニクス社がラインナップしているRXマイコン、RZマイコン、RAマイコンには、さまざまな組込み機器向けのリアルタイムOSが対応しています。

リアルタイムOS(RTOS)はリアルタイム性を重視したOSで、組込みシステム向けのOSとして最も一般的です。数十KByte程度のメモリしかない小規模なマイコンでも動作するように設計されており、シンプルな構成で信頼性が高いことが特徴です。

国内では、μITRON仕様のRTOSが圧倒的に普及していましたが、IoTデバイス向けにAmazonやMicrosoftが参入したことで、新たな局面を迎えています。

今回は、RTOSのソフトウェア開発をはじめる方向けに

  1. RTOSの概要
  2. RTOSの実装とプログラムの作成

をご紹介いたします。

1. RTOSの概要

一口にRTOSと言っても、世界には有償/無償含めてさまざまな種類のRTOSが存在します。
以下はルネサス エレクトロニクス社のマイコンが対応するRTOSの一部です。

RTOS 開発元 対応マイコン※1
FreeRTOS™ Amazon RX、RZ、RA
Azure RTOS ThreadX マイクロソフト RX、RZ、RA、Synergy
μC3(マイクロ・シー・キューブ) イー・フォース RX、RZ、RA他
RI600V4 ルネサス エレクトロニクス RXのみ
TOPPERS TOPPERSプロジェクト SH、RX、RZ他
  • ※1対応するマイコンの詳細はルネサス エレクトロニクス社のホームページをご参照ください。

それぞれのRTOSの特長について簡単にご紹介いたします。

(1)FreeRTOS

  • 元はReal Time Engineersが開発・提供していたオープンソースのRTOSで、2017年にAmazonが買収し、現在はMITライセンスで配布され、無償で利用できます。
    なお、「FreeRTOS」と「Amazon FreeRTOS」は分かれており、現在は「FreeRTOS」にAWS用の最適化と拡張が施されているものが「Amazon FreeRTOS」と定義されているようです。
  • カーネルは独自仕様で、FATやTCPなどのミドルウェアライブラリも提供されています。
  • ルネサス エレクトロニクス社の対応マイコンでは、同社が提供する「SmartConfigurator」を利用すれば、GUI操作で容易に実装することができます。
ソフトウェアコンポーネント設定 FreeRTOS
SmartConfigurator上でのFreeRTOS設定画面

ダウンロード・関連サイト

(2)Azure RTOS ThreadX

  • 元はExpress Logic社が開発・提供していた商用RTOS「ThreadX」で、2019年にマイクロソフトが買収し、現在はオープンソースで配布されています。ライセンスはハードウェアライセンスが適用されているマイコンであれば、無償で利用可能で、ルネサス エレクトロニクス社のマイコンでは、RA、RX、RZ、Synergyの各マイコンで利用できます。
  • カーネルは独自仕様で、元が商用であったことからミドルウェアライブラリも充実しており、ファイルシステム(FileX)・GUI(GUIX)・TCP/IPプロトコルスタック(NetX)・USBスタック(USBX)なども無償で提供されています。
  • ルネサス エレクトロニクス社の対応マイコンでは、同社が提供する「SmartConfigurator」を利用すれば、GUI操作で容易に実装することができます。
ソフトウェアコンポーネント設定 Azure RTOS
SmartConfigurator上でのAzure RTOS設定画面

ダウンロード・関連サイト

(3)μC3(マイクロ・シー・キューブ)

  • イー・フォース株式会社が開発・提供しているμITRON4.0仕様※2に準拠したRTOSです。
  • マイコンの規模に応じて複数のラインナップが用意されており、ルネサス エレクトロニクス社のマイコン向けでは、主にμC3/CompactとμC3/Standardが提供されています。
  • 割り込み応答性を重視した、高リアルタイム性能が特徴です。
  • ネットワークやファイルシステムなどの各種ミドルウェアも提供されています。また、GUIコンフィグレーションツール「μC3/Configurator」によりベースコードを簡単に生成することができます。
  • 純国内メーカーで、日本語による的確な技術サポートが受けられます。
  • 当社のCPUボード向けのサンプルプログラムも提供されています。
  • ※2μITRONとは、日本のトロン協会で策定されたRTOSです。仕様は無償公開されており、各社からμITRON仕様のOSが発売されています。ある調査によると、世界の組込みOS搭載機器のうち、約60%がITRON仕様に準拠したRTOSが搭載されているそうです。
μC3Configuratorソース生成
μC3/Configurator設定画面例

関連サイト

(4)RI600V4

  • ルネサス エレクトロニクス社が開発・提供しているμITRON4.0仕様に準拠したRXマイコン専用のRTOSです。量産ライセンスと評価ライセンスが提供されており、評価ライセンスは無償で試すことができます。
  • 同じくルネサス エレクトロニクス社より提供されている統合開発環境CS+・e2studioと親和性が高く、シームレスに設定などができます。
  • RXマイコンに最適化されており、安定した動作と性能が期待できます。
RI600V4 GUI Configurator システム定義
GUI Configurator画面

ダウンロード・関連サイト

(5)TOPPERS

  • TOPPERSは特定非営利活動法人「TOPPERSプロジェクト」で開発されたオープンソースのRTOS、およびソフトウェアツールです。
  • TOPPERSライセンスで提供され、無償で利用することができます。
  • TOPPERSカーネルは主にITRON系と車載系の2系統で開発されており、ITRON系はITRON4.0仕様の第1世代から始まり、第2世代からはITRONを改良した新世代カーネル仕様となり、現在は第3世代まで提供されています。
  • 最小セットからマルチコア対応までさまざまな用途向けに派生版が展開されています。

関連サイト

2. RTOSの実装とプログラムの作成

RTOSを実装する手順は、採用するRTOSの種類やCPU、開発環境などによって異なります。
RTOSを利用したプログラムを開発する場合は、サンプルプログラムをベースに開発することが一番の近道です。

今回は、RAマイコンをターゲットに「FreeRTOS」を利用したプログラム開発の手順について説明します。
CPUボードは「RA6M5」を搭載した「AP-RA6M-1A」を使用します。

  1. (1)プロジェクトのインポート
  2. (2)RTOS機能の設定
  3. (3)アプリケーションプログラムの記述とビルド
  4. (4)デバッグ
AP-RA6M-1A
RA6M5 CPUボード「AP-RA6M-1A」

(1)プロジェクトのインポート

1. サンプルプログラムのインポート

まず初めにベースとなるサンプルプログラムをe2studioにインポートします。 e2studioの使い方については、技術コラムVol.2「今からはじめるRAマイコン開発」やAP-RA6M-1Aのアプリケーションノート「AN2002 RAファミリ開発チュートリアル」をご参照ください。

なお、AP-RA6M-1Aでは、FreeRTOSを実装したサンプルプログラムと、ベアメタル(RTOSなし)のサンプルプログラムを提供しています。下表のサンプルプログラムのうち、RTOSに対応したサンプルプログラムをご利用ください。

名称 プロジェクト名 RTOS対応
Ethernetサンプルプログラム ap_ra6m_1a_ether_sample
SDHIサンプルプログラム ap_ra6m_1a_sdhi_sample
ESPサンプルプログラム ap_ra6m_1a_esp_sample
CANサンプルプログラム ap_ra6m_1a_can_sample ×
UARTサンプルプログラム ap_ra6m_1a_sci_uart_sample ×
USBファンクション
サンプルプログラム
ap_ra6m_1a_usb_pcdc_sample ×

(2)RTOS機能の設定

1. Smart Configuratorの起動

サンプルプログラムのインポートができたら、プロジェクト・エクスプローラーからサンプルプログラムのconfiguration.xmlを開きます。すると「RA Smart Configurator」が起動するので、「Stacks」タブを開くと、「Stacks Configuration」として、デバイスドライバ・ミドルウェアの各モジュールの情報が表示されます。

「Stacks」タブ_「Stacks Configuration」_Threadリスト
「SmartConfigurator」 Stack Configuration

2. RTOSの設定(プロパティ)の確認

「Threads」リストにある「Thread」を選択すると、プロパティウィンドウに現在のFreeRTOSの設定情報が表示されます。
(プロパティウィンドウはe2studioの設定によって表示される場所が異なります。見つからない場合はツールバー「ウィンドウ」→「ビューの表示」→「プロパティ」を選択して下さい。)

プロパティウィンドウ マウスクリックで選択
FreeRTOSプロパティ

3. FreeRTOSの設定

FreeRTOSの設定は、同じ画面上から行うことができます。下記に簡単に紹介します。
サンプルプログラムをそのまま動作させる場合には、新たに設定・変更する必要はありません。

タスク(Thread)の新規作成ボタン・OS機能(セマフォ・メッセージバッファ等)の新規作成ボタン・リストから設定するOS機能を選択
FreeRTOSの設定1
Net Thread 設定値は、リスト選択か数値の直接入力で設定・マウスオーバーで説明を表示
FreeRTOSの設定2

4. ソースコードの出力

FreeRTOSの設定が完了した後、「Generate Project Content」ボタンを押すと、ソースコードが生成・出力されます。FreeRTOSに設定済みのSymbol名から始まるCファイルが自動で出力されます。

Stacks Configuration
ソースコードの生成「Generate Project Content」
プロジェクト・エクスプローラー
生成されたソースコードのファイル

(3)アプリケーションプログラムの記述とビルド

1. アプリケーションプログラムの記述

生成されたCソースファイルにユーザープログラムの記述箇所がありますので、アプリケーションプログラムを追記します。

ユーザープログラムの記述箇所
ユーザープログラムの記述箇所

2. プログラムのビルド

コーディングが完了したら、「e2studio」のビルドボタンを押して、ビルドします。

(4)デバッグ

1. 実機動作確認

ビルドが正常に完了したら、実機でのデバッグを行います。
「AP-RA6M-1A」にJTAGエミュレータを接続し、電源を投入後、e2studio上のデバッグボタンを押します。正常な場合は、マイコンにプログラムがダウンロードされ、デバッグが開始されます。
e2studioのデバッグ画面を操作して、プログラムが仕様通りに動作しているか確認します。ダウンロードでエラーが発生した場合は、設定を再度確認してください。

E2エミュレータLite
JTAGエミュレータ「E2エミュレータLite」と「AP-RA6M-1A」の接続
e2Studio
e2studioデバッグ画面

今回は、RTOSの概要とRAマイコンを使ったFreeRTOSのチュートリアルをご紹介しました。
ひと昔前と比較するとRTOSの開発環境は格段に整っており、USBやネットワークなど敷居が高かったインタフェースも、容易に扱えるようになっています。まだRTOSを使ったことが無い方は、ぜひRTOSを体験してみてください。
また、すでにRTOSを使っている方もFreeRTOSやAzure RTOSなど選択肢が増えていますので、ぜひお試しください。

製品のご案内

本コラム以外にも開発にお役立ていただける技術情報をアプリケーションノートとして公開しております。
ご興味のある方は、ぜひ製品をご利用ください。

  • ※ArmおよびCortexは、米国および/またはその他の地域におけるArm Limited(またはその子会社)の登録商標です。
  • ※記載されている会社名、製品名は、各社の登録商標または商標です。
  • ※記載の内容は改良のため、予告なく変更する場合がございます。