初心者でもわかる RTOS開発入門 (1)

本記事は【開発者から学べる入門ウェビナー】RTOS基礎編をベースとしており、[ RTOS(リアルタイムOS)の動作の仕組み ]、[ RTOS上でのアプリケーション作成の流れ ]、 [ μITRONの概要とタスク動作 ] について解説します。本記事は2部構成の前編です。RTOSの代表的な機能である時間管理、スケジューラーの仕組みとマルチタスクについては後編で解説しております。

こんな方におすすめです
  • RTOSやμITRONの基礎を学んでみたい
  • RTOSについて今さら聞けないことを復習したい
  • RTOS(特にμITRON)を使ったSW開発を行う可能性があるので勉強したい

RTOS上でのアプリ作成の流れ、μITRONの概要とタスク動作

1. RTOSを利用した開発の特徴

RTOSが必要になった経緯


昭和の家電黎明期、冷蔵庫や洗濯機、テレビのような白物家電はメカ的な動作で制御されていました。その後、家電にマイコンが搭載され、様々な機能が加わりました。例えば炊飯器では、お米が美味しく炊けるようセンサで温度を管理している他、表示やタイマーなどの制御もマイコンが担っています。

そして、現在の家電製品ではネットワーク機能が搭載され、スマホから制御可能になるなど機能が複雑化しています。ロボットや自動車、工場なども、多数のセンサがネットワーク接続され、対象をモニタリング・制御しています。取得したセンサデータはクラウドに送信されAIで解析後、最適化を図る流れができつつあります。組込みシステムが複雑化するにつれて、RTOSのようなマルチタスクを管理するツールへの需要は、ますます高まっています。

RTOSとは

要求される時間内に処理が実行できるシステム(リアルタイムシステム)を構築するためのOSのこと。産業ロボットや輸送機械など、主に組込み機器向けのOSとして使用されている。

組込みで使用するリアルタイムOS(RTOS)とは?入門者向けに意味、種類、特徴を解説

組込みでのリアルタイム処理で必要とされる要素

組込みシステムでは、音や光、温度、状態といった外部環境の変化をセンサが感知し、センサから入った情報に対して、定められた時間以内に処理を完了するリアルタイム性が求められます。通信処理や温度制御・機器制御などは、特に変化に対する応答時間の制約がシビアになります。

組込みシステム  現実の物理世界が組込みシステムの対象
何が必要とされるか 外部環境(音・光・温度・状態)の変化への対応
時間の制約 通信処理・温度制御・車の制御 変化への応答に時間の制約がある
リアルタイム処理 定められた時間内に処理(決められた手順)を完了する

2. RTOSを利用してアプリケーション構築するには

こちらの動画にてわかりやすく解説しております。
▶︎【基礎編】RTOSとは?

機能的に処理を分割

 上図はRTOSなしとRTOSありの場合の処理の違いを示したものです。RTOSなしの場合、全ての機能が大きな無限ループの中で実行され、複数の処理が一括りになっています。一方、RTOSありの場合は、タスクを利用して機能ごとに処理を分割しています。機能のモジュール化により複数の開発者での並列開発が可能となります。機能単位での保守性・拡張性も向上ます。

RTOSなしの場合

RTOSを使用しない場合リアルタイム処理の調整が困難になります。組込みシステムの内部では、様々なイベントが独立して発生しています。例えばボタンの押下やセンサーの入力、データ受信などですこれらのイベントは関連性がないため、CPUは定期的にイベントの発生をチェックする必要があります。これらの処理には実行頻度や、緊急性によって比較的後回しにできるものとできないものが混在します。

いわゆる一筆書きのプログラムのため、チェックする周期が長いとイベントの発生から検出までにタイムラグが生じますが、周期を短くしすぎると他の処理に影響がでてしまいます。また、一つの機能のタイミングを調整した後に他の機能を変更すると、調整が完了した部分に影響を与えてしまう事もあり、アプリケーションの変更や維持が困難になります。プログラムの規模が大きくなると、管理も複雑になるためRTOSが役立ちます。

※リアルタイム処理の調整が難しいと、産業用機器の制御において致命的なエラーが発生する可能性があります。(自動車では障害物検知に時間がかかるとブレーキの前に衝突事故が起きる可能性もあり、AV機器では処理の遅延が音飛びやコマ落ちの原因になります。)

RTOSありの場合

RTOSありの場合は各処理をタスクという単位で取り扱います。上図のように機能を分割して各タスクに処理を実装することにより、各タスクはイベント駆動型の処理を構築しています。特定のイベント(「ボタンが押された」「ポート入力があった」「受信した」など )が発生した場合に、割込みを利用してリアルタイム性が求められる処理を呼び出すことができます。

各タスクは、RTOSの制御下で独立して実行されます。タスク内のプログラムは逐次実行されますが、異なるタスクのプログラムはRTOSにより制御され、複数のタスクが疑似的に並列に実行されます。優先度が高いタスクから処理が実行されるため、処理が重なっても優先度の高いタスクが優先されます。これにより、各タスクは独立して処理を構築・調整でき、アプリケーションのリアルタイム性が向上します。

割込みとは

外部からの変化をトリガーとして、現在実行中の処理を退避させた後、予め指定したプログラムを実行すること。

実際のコード例

上図はTask Cを抜き出したコード例です。タスクは基本的には独立した関数ベースで処理を組みます。eForceの一部のパッケージ製品ではベースコードを自動で生成するコンフィグレータが付属しています。これにより、タスクや割込みサービスルーチンをより簡潔に定義し、必要なスケルトンコードを生成できます。

このスケルトンコードには、各タスクの優先度や属性が定義されており、必要な制御構造や関数の宣言、呼び出しなど、処理コア部分のプログラムの大枠が予め記述されています。そのスケルトン関数に対してTask Cの機能部は、for(;;)の形で永久ループとして作成し、割り込み待ちと処理の判定、判定に応じた具体的な処理をアプリケーションの開発者が記述します。割込みサービスルーチン処理には外部環境(音・光・温度・状態)の変化に対応する、タスク待ち解除を作ります。

3.μITRONの概要

こちらの動画にてわかりやすく解説しております。
▶︎【基礎編】RTOSとは?

μITORN4.0仕様

μITRONとは、リアルタイムOS(RTOS)の仕様の一つです。μITRONは、旧トロン協会によってAPIの仕様が策定されました。現在はトロンフォーラムに管理され、組込み機器に求められるリアルタイム処理を実現します。インターネット上でAPI仕様が公開されている国産のオープンアーキテクチャのため、商用μITRONが多数存在し組込みシステムに幅広く利用されています。また、「弱い標準化」というコンセプトに基づいて設計されており、多様なハードウェアで性能を最大限に発揮させることができます。eForce社のRTOS μC3は、μITRON4.0 仕様に準拠したRTOSとなっています。

μC3の無償評価版はこちらから
▶︎ダウンロード

弱い標準化とは

共通化すると実行時性能の低下につながるような部分については無理に標準化を行わず、ハードウェアやアプリケーションに依存して決めるべき部分として残すアプローチのこと

μTRONを使用するメリット

  • 機能のモジュール化ができる
    機能の追加削除が容易になる
    コードの可読性が高くなる
    モジュール単位で構築されているため他のシステムへの移植も検討しやすい
  • 複数名で並列開発が可能になる
    納期の短縮に繋がる
  • 機能単位での保守性・拡張性が高い
    製品の機能によって必要があるものだけを変更できる
    仕様変更や機能追加がタスク単位で対応できる
    仕様変更や機能追加がシステム全体に及ぼす影響が少ない
    RTOSなしでは困難になりがちな実行予測性が高まる

μITRONとは?入門者向けに意味・特徴・種類を解説

リアルタイム処理が得意なμITRON

μITRONの最大の利点はリアルタイム処理が得意なことです。μITRONと組込み用途にも使われる汎用OSであるLinuxとのシステム構成の比較を下図に示します。

μITRONのRTOSは、リアルタイムカーネルと呼ばれ、CPUと周辺デバイスを制御します。タスク間の同期通信のために割り込みとタスクとの連携機能を持ち、さらに割り込み処理もリアルタイムに構築することが可能です。Linuxはミドルウェアが充実している一方で、リアルタイム処理は苦手です。μITRONでは、カーネル部分を機能単位で構築し、機能に応じてコードサイズの調整も可能なため組込みシステム開発に適しています。主要機能のうち、タスクスケジューリング、タスク間協調、時間管理については初心者でもわかるRTOS開発入門(2)で詳細を述べます。

初心者でもわかる RTOS開発入門 (2)

システムコールとは

RTOSの機能を利用するためにアプリケーションから呼び出すAPIのこと。
μITRONのRTOSでは主要な機能はシステムコール(OS提供関数)で実現します。

国内はITORNが24年連続シェアNo.1

ITRON APIは国内で最も使用されているAPIで、産業機器、医療機器、IoT、通信、自動車、OA等、幅広い用途での採用実績があります。OSベンダ、ミドルウェアベンダ、CPUベンダ等サポートベンダ数もNo1です。μC3はμITRON仕様のRTOSです。

4.ミドルウェアの活用

アプリケーション開発では、Ethernet、Wi-Fi、USB、SD、Bluetooth、GUIなどOSには搭載されていない機能が必要な場合があります。これらの機能が共通部分としてパッケージ化されたミドルウェアを使用すると、システムに短期間で機能を組込むことができます。μITRONのシェアが大きく多くのベンダがミドルウェアを提供しているため、ユーザは選択肢が増え利便性が高まります。具体例として、ネットワーク接続が必要なシステムでは、イーサネットのミドルウェアを購入することでアプリケーション開発に注力でき、システムの構築や機能追加を短期間で実現できます。

ミドルウェアとは

開発を行うアプリケーションとRTOSの中間に存在して、アプリケーションの機能構築の手助けとなるソフトウェアのこと

ミドルウェアとは?定義、意味、特徴を初心者向けにわかりやすく解説

ハードウェアの違いをRTOSが吸収

組込みシステムにはスマホのように数百万台も生産するものがあります。こうしたシステムの場合、ハードウェアコストがわずか100円下がるだけで大幅なコストダウンにつながるため、ハードウェアを変更する場合があります。また、CPUや周辺ICの生産中止などに伴い、新たにハードウェアを作り直すこともあります。そのため、組込みシステムではプログラムの移植性が重要視されます。μITRONのRTOSを利用した開発の場合、ハードウェアの違いをRTOSとドライバが吸収することにより、アプリケーションの移植が容易となります。これにより、社内の資産が有効活用され、開発効率の向上に繋がります。

5.まとめ

ポイント
  • 組込み機器の複雑化はRTOSを使った開発で解決
  • RTOSの利用とはタスクを活用すること
    機能単位に処理を分割して開発
  • RTOSを利用した開発の特徴
    保守性や開発効率の向上
    メンテナンス、移植作業の効率が良い
    ミドルウェアを積極的に活用できる

次回はμITRONの具体的な機能とタスク動作について解説します。

初心者でもわかる RTOS開発入門 (2)

動画資料をご覧になりたい方へ

動画資料をご覧になりたい方はこちらからダウンロード可能です。