リアルタイムOS【マイコン開発には必須】

リアルタイムOSとは

めかのとろ

OS(オペレーティングシステム)とはコンピュータシステム全体を管理、コントロールしている基本的なソフトウェアのことで、PC、スマートフォン、タブレットで使われているマイクロソフト社のWindows、Google社のAndroid、アップル社のiOSそしてオープンソースのLinuxなどはよく耳にすることがあるかとおもいます。これらは汎用OSと呼ばれるものです。

オペレーティングシステム(汎用OSとリアルタイムOS)
めかのとろ

PCやタブレット等の使用者はCPU、メモリといったハードウェアとアプリケーションPCやスマートフォンを使うときに汎用OSがあるおかげでアプリケーションの使い方を知るだけでよく、PCの仕組みなどハードウェアを意識する必要はありません。通信プロトコルや画面表示用グラフィックなど多機能がOSに盛り込まれている分サイズは大きいです。

めかのとろ

汎用OSではアプリケーションを割り当てられた一定時間ごとに切り替えるラウンドロビンスケジューリングと呼ばれる方式ですので、すぐに処理を行いたいタスクの場合でも、他に実行しているタスクが完了するまで待たなければなりません。そのため、厳密な処理時間を管理するハードウェアのコントロールには向いていません。

汎用OS
めかのとろ

組み込みで使用するOSはリアルタイムOS(Real Time Operating System)と呼ばれるもので処理時間を予測でき、処理の順番を優先順位で調整して処理時間を厳密に守ることができるリアルタイム性をもって応答速度を重視したOSです。

めかのとろ

実行する各処理のことをタスク(スレッド)と呼び、複数のタスクに優先度を設けてタスクスケジューリングを行います。これをタスク優先度スケジューリングと呼んでいます。ハードウェアをコントロールするための必要な最低限の機能を備えていますのでサイズは小さく軽量です。

リアルタイムOS

組み込みでリアルタイムOSを使う理由

めかのとろ

アプリケーションで多機能となり処理が複数になってくると、通常に処理を順次実行するだけでは仕様を満たすのは困難です。処理には実行頻度の多いものがあれば少なくてすむものもあります。また、緊急性の高いものがあれば表示など比較的後回しにしてもよい処理もあります。

めかのとろ

緊急性の高い処理に関しては通常の処理に混じえて、割り込み処理を多用しなければなりませんが複数の割り込み処理が大部分を占めたプログラムというのもシステムの安定性からみて信頼性があるとはいえません。優先度も、頻度もまちまちな処理を割り込みだけで構成するのは大変です。

めかのとろ

そこでリアルタイムOSの出番です。リアルタイムOSでは処理をタスクという単位で取り扱い、優先度や、処理頻度(間隔)を設定することができます。アプリケーション内で必要に応じてタスクを有効や無効にするタスクの切り替えも簡単にできます。

めかのとろ

リアルタイムOSを活用することで、複雑で複数の処理を割り込み処理に頼らず、割り込み処理を使用しないときに比べてよりシンプルに体系的に記述でき、開発がより簡単に楽に行えるようになります。

めかのとろ

当サイトではリアルタイムOSの紹介としてFreeRTOSとSTM32アプリを組み合わせたものを一部取り上げ解説していきます。特に複数のタスク管理方法とキューについて詳細を解説しています。

めかのとろ

リアルタイムOSは細かな使用方法や設定はOSやマイコンの種類により異なってきますのでつど知識を更新する必要はありますがリアルタイムOSで利用できる基本的な概念はOSやマイコンの種類によらず共通のものですのでここではリアルタイムOSを使用しているときのプログラムの流れをつかむようにしてください。

めかのとろ

リアルタイムOSを使用したプログラムを構築するのに初めは試行錯誤する部分はありますが、一度完成すると後はテンプレートとして簡単に応用できます。

めかのとろ

当サイトでは使用する教材ボードのマイコンに合わせてFreeRTOSの設定を済ませています。すぐにリアルタイムOSを使用でき、動作確認ができるようになっているのでマイコンの学習をすすめながらぜひ同時にリアルタイムOSを使ってください