Hello World for nxtOSEK

 

nxtOSEKのHello Worldサンプルプログラムを紹介します。ただし、NXTの液晶画面にただ"Hello, World"と表示するだけでは面白くありません。そこで、同時にセンサデータ/モータ回転角度/NXT内部状態についても表示しています。nxtOSEKでは、アプリケーション用Cソースファイルに加えて、TOPPERS ATKのカーネル設定用OILファイルも合わせて作成する必要があります。 TOPPERS ATKに含まれているSG(System Generator)ツールは、OILファイル記述に基づいたカーネル設定CソースファイルをnxtOSEKビルド時に自動生成します。つまり、nxtOSEKのカーネルとアプリケーションは静的にリンクされてから実行されます。

samples\helloworld\helloworld.c

/* helloworld.c */
#include "kernel.h"
#include "ecrobot_interface.h"

/* nxtOSEK hook to be invoked from an ISR in category 2 */
void user_1ms_isr_type2(void){ /* do nothing */ }

TASK(OSEK_Task_Background)
{
  while(1){
    ecrobot_status_monitor("Hello, World!");
    systick_wait_ms(500); /* 500msec wait */
  }
}

samples\helloworld\helloworld.oil

#include "implementation.oil"

CPU ATMEL_AT91SAM7S256
{
  OS LEJOS_OSEK
  {
    STATUS = EXTENDED;
    STARTUPHOOK = FALSE;
    ERRORHOOK = FALSE;
    SHUTDOWNHOOK = FALSE;
    PRETASKHOOK = FALSE;
    POSTTASKHOOK = FALSE;
    USEGETSERVICEID = FALSE;
    USEPARAMETERACCESS = FALSE;
    USERESSCHEDULER = FALSE;
  };

  /* Definition of application mode */
  APPMODE appmode1{};

  /* Definition of OSEK_Task_Background */
  TASK OSEK_Task_Background
  {
    AUTOSTART = TRUE
    {
      APPMODE = appmode1;
    };
    PRIORITY = 1; /* lowest priority */
    ACTIVATION = 1;
    SCHEDULE = FULL;
    STACKSIZE = 512;
  };
};


 

Back to Samples