1.作成の準備
		
			プログラムを保存しておくためのディレクトリ(フォルダ)を作成します。
nxtOSEKでは、プログラムをコンパイルするためには複数のファイルが必要となり、実行ファイル作成時にも数個のファイルが作られるので、作成するプログラム毎にディレクトリを分けをするのが一般的です。
演習室環境では、ホームディレクトリ内(Zドライブ)に適当なディレクトリ(例えば nxtOSEK というディレクトリ)を作って、それ以下にプログラム毎のディレクトリを作成するのがよいでしょう。
ただし oil ファイルや Makefile がほぼ共通の場合は、同じディレクトリに異なるソースファイルをを置くこともあります。
nxtOSEKでは、プログラムをコンパイルするためには複数のファイルが必要となり、実行ファイル作成時にも数個のファイルが作られるので、作成するプログラム毎にディレクトリを分けをするのが一般的です。
演習室環境では、ホームディレクトリ内(Zドライブ)に適当なディレクトリ(例えば nxtOSEK というディレクトリ)を作って、それ以下にプログラム毎のディレクトリを作成するのがよいでしょう。
ただし oil ファイルや Makefile がほぼ共通の場合は、同じディレクトリに異なるソースファイルをを置くこともあります。
			2.材料をそろえる
		
			nxtOSEKでは、プログラムのコンパイルのためにソースファイル、oilファイル、makeファイル(Makefile)の3つのファイルが必要です。
各ファイルの役割は、
ソースファイル(*.c)…プログラムの処理を記述するファイル
oilファイル(*.oil)…プログラムをどう動かすか記述するファイル
makeファイル(Makefile)…コンパイルの仕方を記述するファイル
です。
今回は nxtOSEK のディレクトリの中に test というディレクトリを作成し、そこに次の3つのファイルを用意して実行ファイルを作成します。なお、ソースファイル(test.c)は、NXTのLCDに1秒毎に TASK1 と TASK2 という文字列を上下にずらして表示するプログラムです。
			
まだ意味の分からない所も多いかと思いますが結構です。
Makefile内では記述されているプログラムの名前やファイル、フォルダの位置が合っているか確認してください。
			
		
各ファイルの役割は、
ソースファイル(*.c)…プログラムの処理を記述するファイル
oilファイル(*.oil)…プログラムをどう動かすか記述するファイル
makeファイル(Makefile)…コンパイルの仕方を記述するファイル
です。
今回は nxtOSEK のディレクトリの中に test というディレクトリを作成し、そこに次の3つのファイルを用意して実行ファイルを作成します。なお、ソースファイル(test.c)は、NXTのLCDに1秒毎に TASK1 と TASK2 という文字列を上下にずらして表示するプログラムです。
			
			test.c
				
			
			test.oil
				
			
			Makefile
				
			
| 
#include "kernel.h"
#include "kernel_id.h"
#include "ecrobot_interface.h"
DeclareTask(Task1);
void ecrobot_device_initialize(){}		//OSEK起動時の処理(何もしない)
void ecrobot_device_terminate(){}		//OSEK終了時の処理(何もしない)
void user_1ms_isr_type2(void){}
TASK(Task1)
{
	while(1){
                display_clear(0);
                display_goto_xy(5,3);
                display_string("TASK1");                /* メッセージを表示する */
                display_update();
                systick_wait_ms(1000);                  /* 1秒待つ */
                display_clear(0);
                display_goto_xy(5,5);
                display_string("TASK2");                /* メッセージを表示する */
                display_update();
                systick_wait_ms(1000);                  /* 1秒待つ */
        }
	TerminateTask();					//処理終了
}
 | 
| 
#include "implementation.oil"
CPU ATMEL_AT91SAM7S256
{
  OS LEJOS_OSEK
  {
    STATUS = EXTENDED;
    STARTUPHOOK = FALSE;
    SHUTDOWNHOOK = FALSE;
    PRETASKHOOK = FALSE;
    POSTTASKHOOK = FALSE;
    USEGETSERVICEID = FALSE;
    USEPARAMETERACCESS = FALSE;
    USERESSCHEDULER = FALSE;
  };
  /* Definition of application mode */
  APPMODE appmode1{}; 
   TASK Task1						/* Task1 を定義する */
  {
    AUTOSTART = TRUE { APPMODE = appmode1; };
    PRIORITY = 1;
    ACTIVATION = 1;
    SCHEDULE = FULL;
    STACKSIZE = 512;
  };
};
 | 
| # Target specific macros TARGET = test # User application source(ここにソースファイルの名前を指定する) TARGET_SOURCES = test.c # 自分のフォルダから見たnxtOSEKフォルダの場所またはそのフルパスを指定する。ここでは次のフルパスを指定する。 NXTOSEK_ROOT = /nxtOSEK # OSEK OIL file(ここにoilファイルの名前を指定する) TOPPERS_OSEK_OIL_SOURCE = ./test.oil # below part should not be modified O_PATH ?= build include $(NXTOSEK_ROOT)/ecrobot/ecrobot.mak | 
まだ意味の分からない所も多いかと思いますが結構です。
Makefile内では記述されているプログラムの名前やファイル、フォルダの位置が合っているか確認してください。
			3.プログラムの編集について
		
			プログラムの作成は cygwin 内で vi コマンドを使って行うか、Windows で Visual Studio Code や TeraPad を使って行います。以下にその際の設定や注意点について説明します。
vi の使用法についてはUNIX入門 vi 講座を参照して下さい。
3.1 cygwin 内の vi で編集する場合
vi でチュートリアルページのプログラムを貼りつけるために、以下のことを行います。vi の使用法についてはUNIX入門 vi 講座を参照して下さい。
- cygwin の上のフレーム上でマウスを右クリックして、プロパティを選択し「簡易編集モード」をチェックします。
- コピー対象領域を選択し(Ctrl+C)、vi をインサートモードにした状態で右クリックし、選択領域をコピーします。
3.2 Windows 中の エディタを用いる使う場合
Windows では、Visual Stuido Code , Atom, TeraPad 等のエディタを使用して、プログラムの作成・修正を行います。- アプリケーション検索でエディタ(Visual Studio Code, Atom, Terapadのいずれか)を検索・選択します。
- ファイルの保存時に自動的に拡張子が付かないようにする。 Visual Studio Codeを使う場合は、保存時の「ファイルの種類」で「No Extention (*.)」を選択して保存すること。
- エディタの「ファイルを開く」の「ファイルの種類」で「全てのファイル(*.*)」を選択し、必要なファイルを開きます。
- 該当するファイルに上記のファイルの中身をコピー&ペーストして保存します。
			4.課題
		
			1.適当なディレクトリを作成し、そこにこのページの test.c, test.oil, Makefile を保存する。(Windows のエディタを用いる場合は「z:ドキュメント」以下にそのディレクトリを作成する)
	
	2.そのディレクトリで make all とタイプして、test.c をコンパイルする。
3.そのディレクトリで sh rxeflash.sh とタイプして、実行ファイル(test.rxe)を NXT へ転送する。
			4 .導入編 2.プログラムのコンパイル・転送・実行の「3.プログラムの実行」を参考に転送したプログラムを実行する。
			
(プログラムのコンパイルと転送が成功したかどうかについても、このページの説明を参考にすること)