デバッガベンダーの商用RTOS「embOS」は古いスタイルが故に安心して使える?:リアルタイムOS列伝(21)(3/3 ページ)
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第21回は、デバッグツールベンダーとして知られるSEGGERの商用RTOS「embOS」を紹介する。
評価を行う上で必要になる開発環境まで含めて無償で提供
APIそのものはC/C++に対応したSEGGER独自のもので、例えばPOSIX互換などは一切考慮されていない。その意味では最初はちょっと面倒かもしれないが、APIそのものは比較的分かりやすい。リスト1は、NXPの「LPCXpresso55S69」向けのLチカコードである。HP(High Priority)とLP(Low Priority)の2つのタスクを起動し、HPは消灯、LPは点灯するというものだ。
#include "RTOS.h" #include "BSP.h" static OS_STACKPTR int StackHP[128], StackLP[128]; // Task stacks static OS_TASK TCBHP, TCBLP; // Task control blocks static void HPTask(void) { while (1) { BSP_ToggleLED(0); OS_TASK_Delay(50); } } static void LPTask(void) { while (1) { BSP_ToggleLED(1); OS_TASK_Delay(200); } } /********************************************************************* * * main() */ int main(void) { OS_Init(); // Initialize embOS OS_InitHW(); // Initialize required hardware BSP_Init(); // Initialize LED ports OS_TASK_CREATE(&TCBHP, "HP Task", 100, HPTask, StackHP); OS_TASK_CREATE(&TCBLP, "LP Task", 50, LPTask, StackLP); OS_Start(); // Start embOS return 0; } /*************************** End of file ****************************/
周辺回路の初期化はBSP_Init()で行われており、その他の周辺回路への操作も全部BSP_xxx()でAPIが提供されているあたりは、SEGGERが各ボード向けにBSPを提供しているからこそ、中まで知らないでもアプリケーションを構築できるいう話である。このBSPの中身はオブジェクトファイルの形で提供されており、中のコードまで見たければソースコードライセンスが必要になるのを不便と考えるか、その部分で問題がありそうならサポートに投げてしまえばいいので楽と考えるかは、どういうスタンスでアプリケーション構築を行うかに絡んでくる話である。
今となってはやや古いスタイルのRTOSと言えなくもないが、古いスタイルが故に安心して使えるという側面もある。冒頭でも書いたがエンビテックとPositive ONEはどちらもembOSを扱っているから、英語(orドイツ語)で質問しなくても済む、というのも安心だろう。
BSP対象外のハードウェアを扱うにはいろいろと苦労が必要かもしれないが、取りあえずの評価を行う上で必要になる開発環境まで含めて無償で提供されているので、試してみるのは悪くないかもしれない。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 連載記事「リアルタイムOS列伝」バックナンバー
- RTOS以上組み込みLinux未満、Google第3のOS「Fuchsia」は大輪の花を咲かせるか
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第20回は、Googleの第3のOSと呼ばれる「Fuchsia」を紹介する。RTOSと言うべきかどうかは意見の分かれるところだが、組み込み向けを意識したOSであることだけは確かだ。 - オープンソースRTOS「seL4」の紆余曲折からマイクロカーネルの進化を俯瞰する
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第19回は、コモンクライテリアなどにも対応する第3世代マイクロカーネルのオープンソースRTOS「seL4」を紹介する。 - Rustをフル活用したリアルタイムOS「Tock」の特異性
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第18回は、カーネルやドライバをRustで記述することで、RTOSのレイテンシや安全性の問題をドラスチックにクリアした「Tock」を紹介する。 - 大学生まれのフル機能RTOS「RIOT-OS」は良くも悪くもビジネスと直結しない
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第17回は、欧州の大学の共同研究に出自を持つフル機能のRTOS「RIOT-OS」を紹介する。 - センサーノード向けに振り切りまくったRTOS「Contiki」が「Contiki-NG」へ進化
IoT(モノのインターネット)市場が拡大する中で、エッジ側の機器制御で重要な役割を果たすことが期待されているリアルタイムOS(RTOS)について解説する本連載。第16回は、センサーノード向けにいろいろと振り切りまくったRTOS「Contiki」とその進化版「Contiki-NG」を紹介する。