この記事について
Mastering the FreeRTOS Real Time Kernel-A Hands-On Tutorial Guildの日本語訳
Preface
マルチタスクと小規模組み込みシステム
顧客価値
FreeRTOSは知的財産権が曖昧さを一切含まない。商業利用に完全フリーであり、プロプライエタリのソースコード開示要求も一切ない
用語
FreeRTOSではスレッドではなくタスクを使う。
なぜReal-time Kernelを使うのか?
組み込みソフトにはカーネルなしのテクニックが確立されてはいるが、カーネルを使うとシンプルにできる。複雑なケースになると一層優れているが、どの程度から「Kernel有り」が良いかは、いつも議論となる。
優先度はタスクの処理デッドラインを保証することができるが、ほかにもメリットあるので以下にいくつか記載する。
タイミング情報の抽象化
カーネルは実行タイミングと、実行タイミングに関連したAPIを提供する。これはアプリケーションコードをシンプルに、トータルではコードサイズを小さくできる。
保守性、拡張性 (Maintainalibility, Extensibility)
実行タイミングの抽象化は、モジュール間の依存を小さくすることができる。アプリケーションコードのパフォーマンスはハードウェアの影響を受けにくい。
モジュール性
タスクは独立したモジュールで、それぞれ目的が明確に定義される。
チーム開発
タスクは明確なインターフェースが定義されているので、チーム開発が容易となる。
テスト容易性
タスクは明確なインターフェースで独立したモジュールのため、個別にテストが可能
再利用性
モジュール性と独立性によって、再利用性も高まる。
効率性
カーネルはイベントドリブンでソフトを動かすので、ポーリングに比べて処理時間を無駄にしない。コードの実行は必要なときのみに行われる。
効率性とは逆になるが、タスクを切り替えるためにティック割り込みが必要になる。しかし、RTOSを使わないアプリケーションでもティック割り込みのようなものが必要になる。
idle time
アイドルタスクはスケジューラーによって自動的に生成されてスタートする。どのアプリケーションタスクも動いていない時はいつも動作をする。アイドルタスクは空いている実行時間の測定に使用される。またプロセッサを省電力モードにいれることもある。
電力管理
RTOSを使った効率性は、プロセッサを省電力モードに入れる頻度が上がる。
電力消費はアイドルタスクが走った時に入れると、かなり改善する。FreeRTOSはtick-lessモードがあり、なかった場合に比べて省電力モードを長く維持できる。
柔軟な割り込みハンドル
割り込みハンドラーはタスクを待たせることによって短さを維持できる
"Interrupt handlers can be kept very short"は何がショートかわからなかった。文脈からレイテンシのことかなあ
リアルタイム性の要求を混在できる
周期的、連続的、イベントドリブンなアプリケーション、割り込みを組み合わせて、ハードリアルタイム/ソフトリアルタイム両方の要求を実現可能。
ライセンス
- FreeRTOSは商業用として利用できる
- FReeRTOSはすべての人に無料で提供される
- FreeRTOSユーザーは知的財産所有権を保持する
詳細情報は http://www.FreeRTOS.org/license を参照。
ソースコードとプロジェクトファイル
Windows Visual Studio環境で動くコードは http://www.freertos.org/Documentation/code にあります
お手軽にFreeRTOSを試すにはこちらおすすめです。Visual C++入れておくとすぐ動きます