デバッガベンダーの商用RTOS「embOS」は古いスタイルが故に安心して使える?リアルタイムOS列伝(21)(3/3 ページ)

» 2022年04月06日 10時00分 公開
[大原雄介MONOist]
前のページへ 1|2|3       

評価を行う上で必要になる開発環境まで含めて無償で提供

 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 ****************************/
リスト1 NXPの「LPCXpresso55S69」向けのLチカコード

 周辺回路の初期化はBSP_Init()で行われており、その他の周辺回路への操作も全部BSP_xxx()でAPIが提供されているあたりは、SEGGERが各ボード向けにBSPを提供しているからこそ、中まで知らないでもアプリケーションを構築できるいう話である。このBSPの中身はオブジェクトファイルの形で提供されており、中のコードまで見たければソースコードライセンスが必要になるのを不便と考えるか、その部分で問題がありそうならサポートに投げてしまえばいいので楽と考えるかは、どういうスタンスでアプリケーション構築を行うかに絡んでくる話である。

 今となってはやや古いスタイルのRTOSと言えなくもないが、古いスタイルが故に安心して使えるという側面もある。冒頭でも書いたがエンビテックPositive ONEはどちらもembOSを扱っているから、英語(orドイツ語)で質問しなくても済む、というのも安心だろう。

 BSP対象外のハードウェアを扱うにはいろいろと苦労が必要かもしれないが、取りあえずの評価を行う上で必要になる開発環境まで含めて無償で提供されているので、試してみるのは悪くないかもしれない。

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.