Index: atk1_sh2/trunk/cfg/impl_oil/impl_os_bcc1.oil
===================================================================
--- atk1_sh2/trunk/cfg/impl_oil/impl_os_bcc1.oil	(revision 5)
+++ atk1_sh2/trunk/cfg/impl_oil/impl_os_bcc1.oil	(revision 5)
@@ -0,0 +1,85 @@
+    OS {
+        ENUM [STANDARD, EXTENDED] STATUS = EXTENDED;
+        BOOLEAN STARTUPHOOK = FALSE;
+        BOOLEAN ERRORHOOK = FALSE;
+        BOOLEAN SHUTDOWNHOOK = FALSE;
+        BOOLEAN PRETASKHOOK = FALSE;
+        BOOLEAN POSTTASKHOOK = FALSE;
+        BOOLEAN USEGETSERVICEID = TRUE;
+        BOOLEAN USEPARAMETERACCESS = TRUE;
+        BOOLEAN USERESSCHEDULER = FALSE;
+    };
+
+    APPMODE { };
+
+    TASK {
+        BOOLEAN [
+            TRUE {
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+
+        UINT32 [0..7] PRIORITY = NO_DEFAULT;
+        UINT32 [1..1] ACTIVATION = NO_DEFAULT;
+        ENUM [NON, FULL] SCHEDULE = NO_DEFAULT;
+        EVENT_TYPE EVENT[];
+        RESOURCE_TYPE RESOURCE[];
+//        MESSAGE_TYPE MESSAGE[];
+
+        UINT32 STACKSIZE = 1024;
+    };
+
+    ISR {
+        UINT32 [1, 2] CATEGORY = NO_DEFAULT;
+        UINT32 PRIORITY = NO_DEFAULT;
+        UINT32 ENTRY = NO_DEFAULT;
+        RESOURCE_TYPE RESOURCE[];
+//        MESSAGE_TYPE MESSAGE[];
+    };
+
+    COUNTER {
+        UINT32 MINCYCLE = NO_DEFAULT;
+        UINT32 [1..2147483647] MAXALLOWEDVALUE = NO_DEFAULT;
+        UINT32 TICKSPERBASE = NO_DEFAULT;
+    };
+
+    ALARM {
+        COUNTER_TYPE COUNTER;
+        ENUM [
+            ACTIVATETASK {
+                TASK_TYPE TASK;
+            },
+            SETEVENT {
+                TASK_TYPE TASK;
+                EVENT_TYPE EVENT;
+            },
+            ALARMCALLBACK {
+                SYMBOLNAME ALARMCALLBACKNAME = NO_DEFAULT;
+            }
+        ] ACTION = NO_DEFAULT;
+
+        BOOLEAN [
+            TRUE {
+                UINT32 ALARMTIME = NO_DEFAULT;
+                UINT32 CYCLETIME = NO_DEFAULT;
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+    };
+
+    EVENT {
+        UINT32 WITH_AUTO MASK = AUTO;
+    };
+
+    RESOURCE {
+        ENUM [
+            STANDARD,
+            LINKED {
+                RESOURCE_TYPE LINKEDRESOURCE;
+            },
+            INTERNAL
+        ] RESOURCEPROPERTY = NO_DEFAULT;
+    };
+
Index: atk1_sh2/trunk/cfg/impl_oil/impl_os_bcc2.oil
===================================================================
--- atk1_sh2/trunk/cfg/impl_oil/impl_os_bcc2.oil	(revision 5)
+++ atk1_sh2/trunk/cfg/impl_oil/impl_os_bcc2.oil	(revision 5)
@@ -0,0 +1,85 @@
+    OS {
+        ENUM [STANDARD, EXTENDED] STATUS = EXTENDED;
+        BOOLEAN STARTUPHOOK = FALSE;
+        BOOLEAN ERRORHOOK = FALSE;
+        BOOLEAN SHUTDOWNHOOK = FALSE;
+        BOOLEAN PRETASKHOOK = FALSE;
+        BOOLEAN POSTTASKHOOK = FALSE;
+        BOOLEAN USEGETSERVICEID = TRUE;
+        BOOLEAN USEPARAMETERACCESS = TRUE;
+        BOOLEAN USERESSCHEDULER = FALSE;
+    };
+    
+    APPMODE { };
+
+    TASK {
+        BOOLEAN [
+            TRUE {
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+
+        UINT32 [0..7] PRIORITY = NO_DEFAULT;
+        UINT32 [1..256] ACTIVATION = NO_DEFAULT;
+        ENUM [NON, FULL] SCHEDULE = NO_DEFAULT;
+        EVENT_TYPE EVENT[];
+        RESOURCE_TYPE RESOURCE[];
+//        MESSAGE_TYPE MESSAGE[];
+
+        UINT32 STACKSIZE = 1024;
+    };
+
+    ISR {
+        UINT32 [1, 2] CATEGORY = NO_DEFAULT;
+        UINT32 PRIORITY = NO_DEFAULT;
+        UINT32 ENTRY = NO_DEFAULT;
+        RESOURCE_TYPE RESOURCE[];
+//        MESSAGE_TYPE MESSAGE[];
+    };
+
+    COUNTER {
+        UINT32 MINCYCLE = NO_DEFAULT;
+        UINT32 [1..2147483647] MAXALLOWEDVALUE = NO_DEFAULT;
+        UINT32 TICKSPERBASE = NO_DEFAULT;
+    };
+
+    ALARM {
+        COUNTER_TYPE COUNTER;
+        ENUM [
+            ACTIVATETASK {
+                TASK_TYPE TASK;
+            },
+            SETEVENT {
+                TASK_TYPE TASK;
+                EVENT_TYPE EVENT;
+            },
+            ALARMCALLBACK {
+                SYMBOLNAME ALARMCALLBACKNAME = NO_DEFAULT;
+            }
+        ] ACTION = NO_DEFAULT;
+
+        BOOLEAN [
+            TRUE {
+                UINT32 ALARMTIME = NO_DEFAULT;
+                UINT32 CYCLETIME = NO_DEFAULT;
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+    };
+
+    EVENT {
+        UINT32 WITH_AUTO MASK = AUTO;
+    };
+
+    RESOURCE {
+        ENUM [
+            STANDARD,
+            LINKED {
+                RESOURCE_TYPE LINKEDRESOURCE;
+            },
+            INTERNAL
+        ] RESOURCEPROPERTY = NO_DEFAULT;
+    };
+
Index: atk1_sh2/trunk/cfg/impl_oil/impl_os_ecc1.oil
===================================================================
--- atk1_sh2/trunk/cfg/impl_oil/impl_os_ecc1.oil	(revision 5)
+++ atk1_sh2/trunk/cfg/impl_oil/impl_os_ecc1.oil	(revision 5)
@@ -0,0 +1,85 @@
+    OS {
+        ENUM [STANDARD, EXTENDED] STATUS = EXTENDED;
+        BOOLEAN STARTUPHOOK = FALSE;
+        BOOLEAN ERRORHOOK = FALSE;
+        BOOLEAN SHUTDOWNHOOK = FALSE;
+        BOOLEAN PRETASKHOOK = FALSE;
+        BOOLEAN POSTTASKHOOK = FALSE;
+        BOOLEAN USEGETSERVICEID = TRUE;
+        BOOLEAN USEPARAMETERACCESS = TRUE;
+        BOOLEAN USERESSCHEDULER = FALSE;
+    };
+
+    APPMODE { };
+
+    TASK {
+        BOOLEAN [
+            TRUE {
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+
+        UINT32 [0..15] PRIORITY = NO_DEFAULT;
+        UINT32 [1..1] ACTIVATION = NO_DEFAULT;
+        ENUM [NON, FULL] SCHEDULE = NO_DEFAULT;
+        EVENT_TYPE EVENT[];
+        RESOURCE_TYPE RESOURCE[];
+//        MESSAGE_TYPE MESSAGE[];
+
+        UINT32 STACKSIZE = 1024;
+    };
+
+    ISR {
+        UINT32 [1, 2] CATEGORY = NO_DEFAULT;
+        UINT32 PRIORITY = NO_DEFAULT;
+        UINT32 ENTRY = NO_DEFAULT;
+        RESOURCE_TYPE RESOURCE[];
+//        MESSAGE_TYPE MESSAGE[];
+    };
+
+    COUNTER {
+        UINT32 MINCYCLE = NO_DEFAULT;
+        UINT32 [1..2147483647] MAXALLOWEDVALUE = NO_DEFAULT;
+        UINT32 TICKSPERBASE = NO_DEFAULT;
+    };
+
+    ALARM {
+        COUNTER_TYPE COUNTER;
+        ENUM [
+            ACTIVATETASK {
+                TASK_TYPE TASK;
+            },
+            SETEVENT {
+                TASK_TYPE TASK;
+                EVENT_TYPE EVENT;
+            },
+            ALARMCALLBACK {
+                SYMBOLNAME ALARMCALLBACKNAME = NO_DEFAULT;
+            }
+        ] ACTION = NO_DEFAULT;
+
+        BOOLEAN [
+            TRUE {
+                UINT32 ALARMTIME = NO_DEFAULT;
+                UINT32 CYCLETIME = NO_DEFAULT;
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+    };
+
+    EVENT {
+        UINT32 WITH_AUTO MASK = AUTO;
+    };
+
+    RESOURCE {
+        ENUM [
+            STANDARD,
+            LINKED {
+                RESOURCE_TYPE LINKEDRESOURCE;
+            },
+            INTERNAL
+        ] RESOURCEPROPERTY = NO_DEFAULT;
+    };
+
Index: atk1_sh2/trunk/cfg/impl_oil/impl_os_ecc2.oil
===================================================================
--- atk1_sh2/trunk/cfg/impl_oil/impl_os_ecc2.oil	(revision 5)
+++ atk1_sh2/trunk/cfg/impl_oil/impl_os_ecc2.oil	(revision 5)
@@ -0,0 +1,87 @@
+OIL_VERSION = "2.5";
+
+IMPLEMENTATION Standard {
+    OS {
+        ENUM [STANDARD, EXTENDED] STATUS = EXTENDED;
+        BOOLEAN STARTUPHOOK = FALSE;
+        BOOLEAN ERRORHOOK = FALSE;
+        BOOLEAN SHUTDOWNHOOK = FALSE;
+        BOOLEAN PRETASKHOOK = FALSE;
+        BOOLEAN POSTTASKHOOK = FALSE;
+        BOOLEAN USEGETSERVICEID = TRUE;
+        BOOLEAN USEPARAMETERACCESS = TRUE;
+        BOOLEAN USERESSCHEDULER = FALSE;
+    };
+
+    APPMODE { };
+
+    TASK {
+        BOOLEAN [
+            TRUE {
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+
+        UINT32 [0..15] PRIORITY = NO_DEFAULT;
+        UINT32 [1..256] ACTIVATION = NO_DEFAULT;
+        ENUM [NON, FULL] SCHEDULE = NO_DEFAULT;
+        EVENT_TYPE EVENT[];
+        RESOURCE_TYPE RESOURCE[];
+
+        UINT32 STACKSIZE = 1024;
+    };
+
+    ISR {
+        UINT32 [1, 2] CATEGORY = NO_DEFAULT;
+        UINT32 PRIORITY = NO_DEFAULT;
+        UINT32 ENTRY = NO_DEFAULT;
+        RESOURCE_TYPE RESOURCE[];
+    };
+
+    COUNTER {
+        UINT32 MINCYCLE = NO_DEFAULT;
+        UINT32 [1..2147483647] MAXALLOWEDVALUE = NO_DEFAULT;
+        UINT32 TICKSPERBASE = NO_DEFAULT;
+    };
+    
+    ALARM {
+        COUNTER_TYPE COUNTER;
+        ENUM [
+            ACTIVATETASK {
+                TASK_TYPE TASK;
+            },
+            SETEVENT {
+                TASK_TYPE TASK;
+                EVENT_TYPE EVENT;
+            },
+            ALARMCALLBACK {
+                STRING ALARMCALLBACKNAME = NO_DEFAULT;
+            }
+        ] ACTION = NO_DEFAULT;
+
+        BOOLEAN [
+            TRUE {
+                UINT32 ALARMTIME = NO_DEFAULT;
+                UINT32 CYCLETIME = NO_DEFAULT;
+                APPMODE_TYPE APPMODE[];
+            },
+            FALSE
+        ] AUTOSTART = FALSE;
+    };
+
+    EVENT {
+        UINT32 WITH_AUTO MASK = AUTO;
+    };
+
+    RESOURCE {
+        ENUM [
+            STANDARD,
+            LINKED {
+                RESOURCE_TYPE LINKEDRESOURCE;
+            },
+            INTERNAL
+        ] RESOURCEPROPERTY = NO_DEFAULT;
+    };
+
+};
Index: atk1_sh2/trunk/kernel/ecc2/atk_object_table.csv
===================================================================
--- atk1_sh2/trunk/kernel/ecc2/atk_object_table.csv	(revision 5)
+++ atk1_sh2/trunk/kernel/ecc2/atk_object_table.csv	(revision 5)
@@ -0,0 +1,1 @@
+OS,APPMODE,TASK,EVENT,ISR,RESOURCE,COUNTER,ALARM
Index: atk1_sh2/trunk/kernel/ecc2/kernel_def.csv
===================================================================
--- atk1_sh2/trunk/kernel/ecc2/kernel_def.csv	(revision 5)
+++ atk1_sh2/trunk/kernel/ecc2/kernel_def.csv	(revision 5)
@@ -0,0 +1,9 @@
+TPRI_MINTASK,TPRI_MINTASK
+TPRI_MAXTASK,TPRI_MAXTASK
+TPRI_MINISR,TPRI_MINISR
+EVTMASK_BITS,sizeof(EventMaskType)
+APPMODE_BITS,sizeof(AppModeType) * 8
+OSDEFAULTAPPMODE,OSDEFAULTAPPMODE
+UINT32_MAX,0xFFFFFFFF
+UINT16_MAX,0xFFFF
+UINT8_MAX,0xFF
Index: atk1_sh2/trunk/kernel/ecc2/kernel_ecc2.tf
===================================================================
--- atk1_sh2/trunk/kernel/ecc2/kernel_ecc2.tf	(revision 5)
+++ atk1_sh2/trunk/kernel/ecc2/kernel_ecc2.tf	(revision 5)
@@ -0,0 +1,661 @@
+$ 
+$  TOPPERS Automotive Kernel
+$      Toyohashi Open Platform for Embedded Real-Time Systems
+$      Automotive Kernel
+$ 
+$  Copyright (C) 2010 by Meika Sugimoto
+$ 
+$  上記著作権者は，以下の (1)〜(4) の条件か，Free Software Foundation 
+$  によって公表されている GNU General Public License の Version 2 に記
+$  述されている条件を満たす場合に限り，本ソフトウェア（本ソフトウェア
+$  を改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，
+$  利用と呼ぶ）することを無償で許諾する．
+$  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+$      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+$      スコード中に含まれていること．
+$  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+$      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+$      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+$      の無保証規定を掲載すること．
+$  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+$      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+$      と．
+$    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+$        作権表示，この利用条件および下記の無保証規定を掲載すること．
+$    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+$        報告すること．
+$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+$      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+$ 
+$  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+$  よびTOPPERSプロジェクトは，本ソフトウェアに関して，その適用可能性も
+$  含めて，いかなる保証も行わない．また，本ソフトウェアの利用により直
+$  接的または間接的に生じたいかなる損害に関しても，その責任を負わない．
+$ 
+
+$ カーネルコンフィギュレーション定義テンプレートファイルのインクルード
+$INCLUDE "kernel_config.tf"$
+
+$FILE "kernel_cfg.c"$
+
+/*$NL$
+$SPC$*$TAB$kernel_cfg.c$NL$
+$SPC$*$TAB$Generated time : $+CFG_VERSION$$NL$
+$SPC$*$TAB$CFG Vertion : $CFG_VERSION$$NL$
+$SPC$*/$NL$
+
+$NL$
+
+#include "osek_kernel.h"$NL$
+#include "kernel_id.h"$NL$
+#include "alarm.h"$NL$
+#include "interrupt.h"$NL$
+#include "resource.h"$NL$
+#include "task.h"$NL$
+
+$NL$
+$NL$
+
+$ スタックサイズを計算するためのマクロ定義
+
+#define __STK_UNIT VP$NL$
+#define __TCOUNT_STK_UNIT(sz) (((sz) + sizeof(__STK_UNIT) - 1) / sizeof(__STK_UNIT))$NL$
+
+$NL$
+
+$ 
+$ タスクリストの再割り当て
+$ 
+$ 拡張タスクの定義の後に基本タスクを割当てなければならないため，
+$ TASK.ID_LISTを作りなおす．
+$ 
+
+$TASK_LIST = {}$
+$EXTTSK_LIST = {}$
+
+$FOREACH tskid TASK.ID_LIST$
+$ イベントがあれば前に代入，なければ後ろに代入
+	$IF LENGTH(TASK.EVENT[tskid])$
+ 		$TASK_LIST = APPEND(TASK[tskid] , TASK_LIST)$
+ 		$EXTTSK_LIST = APPEND(TASK[tskid] , EXTTSK_LIST)$
+	$ELSE$
+ 		$TASK_LIST = APPEND(TASK_LIST , TASK[tskid])$
+	$END$
+$END$
+
+$ 
+$ ISRカテゴリ1/2のリスト作成
+$ 
+
+$ISR1_LIST = {}$
+$ISR2_LIST = {}$
+
+$FOREACH isrid ISR.ID_LIST$
+$ CATEGORY属性で判定
+	$IF EQ(ISR.CATEGORY[isrid] , "1")$
+		$ISR1_LIST = APPEND(ISR1_LIST , ISR[isrid])$
+	$ELSE$
+		$ISR2_LIST = APPEND(ISR2_LIST , ISR[isrid])$
+	$END$
+$END$
+
+
+
+$ 
+$ オブジェクト数の定義
+$ 
+
+/*
+$SPC$オブジェクト数の定義
+$SPC$*/$NL$
+
+#define$TAB$TNUM_ALARM$TAB$$TAB$$LENGTH(ALARM.ID_LIST)$$NL$
+#define$TAB$TNUM_COUNTER$TAB$$LENGTH(COUNTER.ID_LIST)$$NL$
+#define$TAB$TNUM_ISR2$TAB$$TAB$$LENGTH(ISR2_LIST)$$NL$
+$IF EQ(OS.USERESSCHEDULER[0] , "TRUE")$
+	#define$TAB$TNUM_RESOURCE$TAB$$LENGTH(RESOURCE.ID_LIST) + 1$$NL$
+$ELSE$
+	#define$TAB$TNUM_RESOURCE$TAB$$LENGTH(RESOURCE.ID_LIST)$$NL$
+$END$
+#define$TAB$TNUM_TASK$TAB$$TAB$$LENGTH(TASK.ID_LIST)$$NL$
+#define$TAB$TNUM_EXTTASK$TAB$$LENGTH(EXTTSK_LIST)$$NL$
+
+$NL$
+
+const UINT8 tnum_alarm    = TNUM_ALARM;$NL$
+const UINT8 tnum_counter  = TNUM_COUNTER;$NL$
+const UINT8 tnum_isr2     = TNUM_ISR2;$NL$
+const UINT8 tnum_resource = TNUM_RESOURCE;$NL$
+const UINT8 tnum_task     = TNUM_TASK;$NL$
+const UINT8 tnum_exttask  = TNUM_EXTTASK;$NL$
+
+$NL$
+$NL$
+
+
+/****** Object OS ******/$NL$
+$NL$
+
+$ OSオブジェクトが複数定義されていないかのチェック
+
+$IF LENGTH(OS.ID_LIST) == 0$
+	$ERROR$ $FORMAT("OS Object not defined.")$ $END$
+$ELSE$
+$IF LENGTH(OS.ID_LIST) > 1$
+	$ERROR$ $FORMAT("OS Object can define once.")$ $END$
+$END$
+$END$
+
+$ 
+$ ATK1ではSTATUSはEXTENDEDしか使用できない
+$ (ヴィッツ製SGではエラーにしていないが，厳密にチェックをすることとした
+$ 
+
+$IF EQ(OS.STATUS[0] , "STANDARD")$
+	$ERROR$ $FORMAT("Object OS parameter STATUS must set EXTENDED.")$ $END$
+$END$
+
+/****** Object TASK ******/$NL$
+$NL$
+
+$ 
+$ リソース優先度の算出
+$ 
+$ タスクの実行時優先度を決定するために必要であるため,先に処理を行う．
+$ （リソースの実体の出力は後で行う）
+$ 
+$ タスクの優先度に異常があるとロジック上問題があるが，タスク生成部での
+$ エラーチェックでエラーとなるので問題ない．
+$ 
+
+$RESOURCE_PRIORITY = {}$
+$FOREACH resid RESOURCE.ID_LIST$
+	$PRIORITY_MAX = 0$
+	
+	$IF !EQ(RESOURCE.RESOURCEPROPERTY , "LINKED")$
+		$FOREACH tskid TASK_LIST$
+			$IF (LENGTH(FIND(TASK.RESOURCE[tskid] , resid)))
+				&& (TASK.PRIORITY[tskid] > PRIORITY_MAX)$
+					$PRIORITY_MAX = 
+						VALUE(FORMAT("TPRI_MINTASK + %1%" , TASK.PRIORITY[tskid]) , TASK.PRIORITY[tskid])$
+			$END$
+		$END$
+		
+		$FOREACH isrid ISR.ID_LIST$
+			$IF (LENGTH(FIND(ISR.RESOURCE[isrid] , resid)))
+				&& ((ISR.PRIORITY[isrid] + TPRI_MINISR) > PRIORITY_MAX)$
+				$PRIORITY_MAX = 
+					VALUE(FORMAT("TPRI_MINISR + %1%" , ISR.PRIORITY[isrid]) , ISR.PRIORITY[isrid] + TPRI_MINISR)$
+			$END$
+		$END$
+		
+	$END$
+	
+	$RESOURCE_PRIORITY[resid] = PRIORITY_MAX$
+$END$
+
+$ /// LINKEDはここでなめて参照を解決して算出
+
+$ 
+$ タスク管理情報生成部
+$ 
+
+$FOREACH tskid TASK.ID_LIST$
+
+$ タスク優先度のチェックはコンフィギュレータ側(実装部の整合性チェック）でチェック可能
+$ 	$IF TASK.PRIORITY[tskid] > TPRI_MAXTASK$
+$ 		$ERROR$
+$ 			$FORMAT("Task %1%'s PRIORITY over range[%2% - %3%]" , tskid , +TPRI_MINTASK , +TPRI_MAXTASK)$
+$ 		$END$
+$ 	$END$
+
+$ スタックサイズのチェック
+	$IF (TASK.STACKSIZE[tskid] == 0) || (TASK.STACKSIZE[tskid] > UINT32_MAX)$
+		$ERROR$
+			$FORMAT("TASK %1%'s STACKSIZE over range[%2% - %3%] or '0'." , tskid , 1 , UINT32_MAX)$
+		$END$
+	$END$
+
+$ 最大起動要求回数のチェック
+	$IF (LENGTH(TASK.EVENT[tskid]) != 0)
+			&& (TASK.ACTIVATION[tskid] > 1)$
+$ 拡張タスクは'1'でならなければならない
+		$ERROR$
+			$FORMAT("Task %1%'s ACTIVATION is %2% , but because %1% is extended task , ACTIVATION must be 1." ,
+						 tskid , +TASK.ACTIVATION[tskid])$
+		$END$
+	$ELSE$
+	$IF TASK.ACTIVATION[tskid] > UINT8_MAX$
+$ 基本タスクは1-UINT8_MAX
+		$ERROR$
+			$FORMAT("Task %1%'s ACTIVATION over %1% , you can set [1 - %2%]" , tskid , +UINT8_MAX)$
+		$END$
+	$END$
+	$END$
+	
+$ 自動起動設定のチェックはコンフィギュレータ側(実装部の整合性チェック）でチェック可能
+
+$ イベント参照のチェックはコンフィギュレータ側(実装部の整合性チェック）でチェック可能
+
+$ リソースはコンフィギュレータ側(実装部の整合性チェック）でチェック可能
+
+$END$
+
+
+$ 
+$ タスク設定出力
+$ 
+
+
+$COUNT = 0$
+/* タスクIDの定義 */$NL$
+$FOREACH tskid TASK_LIST$
+	const TaskType $tskid$ = $COUNT$;$NL$
+	$COUNT = COUNT + 1$
+$END$
+
+$NL$
+
+/* タスクの外部宣言の定義 */$NL$
+$FOREACH tskid TASK_LIST$
+	extern void TASKNAME( $tskid$ )( void );$NL$
+$END$
+
+$NL$
+
+/* スタックを共有しないタスクのスタック領域の定義 */$NL$
+$FOREACH tskid TASK_LIST$
+	$IF EQ(TASK.SCHEDULE[tskid] , "FULL")
+		|| LENGTH(TASK.EVENT[tskid])$
+		static __STK_UNIT _stack_$tskid$[__TCOUNT_STK_UNIT($TASK.STACKSIZE[tskid]$)];$NL$
+	$END$
+$END$
+
+$NL$
+
+/* スタックを共有するタスクのスタック領域の定義 */$NL$
+$ NONPRIかつ，イベントを持たない同一優先度のタスクがスタックを共有できる
+
+$ 設定できる優先度のリストを作成する
+$MAX_PRIORITY_RANGE = { 0,1, ... ,255 }$
+$PRIORITY_RANGE = {}$
+$STACKSIZE_PER_PRIORITY = {}$
+
+$FOREACH priority MAX_PRIORITY_RANGE$
+	$IF (+TPRI_MINTASK <= priority) && (priority <= +TPRI_MAXTASK)$
+		$PRIORITY_RANGE = APPEND(PRIORITY_RANGE , priority)$
+	$END$
+$END$
+
+$ 優先度順に最大値を算出
+$FOREACH priority PRIORITY_RANGE$
+	$STACKSIZE_PER_PRIORITY[priority] = 0$
+	$FOREACH tskid TASK_LIST$
+		$IF (TASK.PRIORITY[tskid] == priority)
+			&& (EQ(TASK.SCHEDULE[tskid] , "NON") && !LENGTH(TASK.EVENT[tskid]))
+			&& (TASK.STACKSIZE[tskid] > STACKSIZE_PER_PRIORITY[priority])$
+				$STACKSIZE_PER_PRIORITY[priority] = TASK.STACKSIZE[tskid]$
+		$END$
+	$END$
+$END$
+
+/* サイズが0でないものを出力 */
+$FOREACH priority PRIORITY_RANGE$
+	$IF STACKSIZE_PER_PRIORITY[priority] != 0$
+		static __STK_UNIT _stack_priority_$priority$[__TCOUNT_STK_UNIT( $STACKSIZE_PER_PRIORITY[priority]$)];$NL$
+	$END$
+$END$
+
+$NL$
+
+/* タスクの初期優先度 */$NL$
+const Priority tinib_inipri[TNUM_TASK] = $NL$
+{$NL$
+$JOINEACH tskid TASK_LIST " , \n"$
+	$TAB$TPRI_MINTASK + $TASK.PRIORITY[tskid]$$TAB$/* $tskid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* タスクの実行優先度 */$NL$
+const Priority tinib_exepri[TNUM_TASK] = $NL$
+{$NL$
+
+$JOINEACH tskid TASK_LIST " , \n"$
+
+$TASK_EXEPRI = TPRI_MINTASK + TASK.PRIORITY[tskid]$
+$ NONプリエンプティブタスクは最大値を設定
+	$IF EQ(TASK.SCHEDULE[tskid] , "NON")$
+		$TASK_EXEPRI = TPRI_MINTASK + TPRI_MAXTASK$
+	$ELSE$
+$ INTERFALリソースを持っていれば,その中リソースの優先度を設定する．
+		$IF LENGTH(TASK.RESOURCE[tskid])$
+			$TASK_EXEPRI = TPRI_MINTASK + TASK.PRIORITY[tskid]$
+			$FOREACH tsk_resid TASK.RESOURCE[tskid]$
+				$IF EQ(RESOURCE.RESOURCEPROPERTY[tsk_resid] , "INTERNAL")$
+					$TASK_EXEPRI = RESOURCE_PRIORITY[tsk_resid]$
+				$END$
+			$END$
+		$END$
+	$END$
+	$TAB$TPRI_MINTASK + $TASK_EXEPRI$$TAB$/* $tskid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* タスクの最大起動要求数 */$NL$
+const UINT8 tinib_maxact[TNUM_TASK] = $NL$
+{$NL$
+$JOINEACH tskid TASK_LIST " , \n"$
+	$TAB$(($+TASK.ACTIVATION[tskid]$) - 1)$TAB$/* $tskid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* 自動起動属性 */
+const AppModeType tinib_autoact[TNUM_TASK] = $NL$
+{$NL$
+$JOINEACH tskid TASK_LIST " , \n"$
+	$IF EQ(TASK.AUTOSTART[tskid] , "TRUE")$
+		$TAB$(
+			$JOINEACH appmode TASK.AUTOSTART.TRUE.APPMODE[tskid] " | "$
+				$appmode$
+			$END$
+		)$TAB$/* $tskid$ */
+	$ELSE$
+		$TAB$0x00000000
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* タスクの起動番地 */$NL$
+const FP tinib_task[TNUM_TASK] = $NL$
+{$NL$
+$JOINEACH tskid TASK_LIST " , \n"$
+	$TAB$TASKNAME( $tskid$ )$TAB$/* $tskid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* タスクのスタック領域 */$NL$
+const __STK_UNIT tinib_stk[TNUM_TASK] = $NL$
+{$NL$
+$JOINEACH tskid TASK_LIST " , \n"$
+	$IF EQ(TASK.SCHEDULE[tskid] , "FULL") || LENGTH(TASK.EVENT[tskid])$
+		$TAB$(__STK_UNIT)_stack_$tskid$$TAB$/* $tskid$ */
+	$ELSE$
+		$TAB$(__STK_UNIT)_stack_priority_$TASK.PRIORITY[tskid]$$TAB$/* $tskid$ , priority : $TASK.PRIORITY[tskid]$ */
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* タスクのスタックサイズ */$NL$
+const UINT16 tinib_stksz[TNUM_TASK] = $NL$
+{$NL$
+$JOINEACH tskid TASK_LIST " , \n"$
+	$IF EQ(TASK.SCHEDULE[tskid] , "FULL") || LENGTH(TASK.EVENT[tskid])$
+		$TAB$$+TASK.STACKSIZE[tskid]$$TAB$/* $tskid$ */
+	$ELSE$
+		$TAB$$+TASK.PRIORITY[tskid]$$TAB$/* $tskid$ */
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+/* TCBの定義 */$NL$
+UINT8 tcb_tstat[TNUM_TASK];$NL$
+Priority tcb_curpri[TNUM_TASK];$NL$
+DEFINE_CTXB(TNUM_TASK);$NL$
+TaskType tcb_next[TNUM_TASK];$NL$
+EventMaskType tcb_curevt[TNUM_EXTTASK];$NL$
+EventMaskType tcb_waievt[TNUM_EXTTASK];$NL$
+UINT8 tcb_actcnt[TNUM_TASK];$NL$
+ResourceType tcb_lastres[TNUM_TASK];$NL$
+
+$NL$
+$NL$
+
+$ 
+$ カウンタ及びアラームのオブジェクト定義はコンフォーマンスクラスに依存しない
+$ 
+$INCLUDE "kernel.tf"$
+$FILE "kernel_cfg.c"$
+
+
+/****** Object RESOURCE ******/$NL$
+$ RESSCHEDULERの設定で始まりのIDが変わる
+$RESID_INCREMENT = 0$
+$IF EQ(OS.USERESSCHEDULER[0] , "TRUE")$
+	$RESID_INCREMENT = 1$
+$END$
+
+/* リソースIDの定義 */$NL$
+$NL$
+
+$FOREACH resid RESOURCE.ID_LIST$
+	const ResourceType $resid$ = $+resid + RESID_INCREMENT$;$NL$
+$END$
+
+$NL$
+
+const Priority resinib_ceilpri[TNUM_RESOURCE] =$NL$
+{$NL$
+
+$IF EQ(OS.USERESSCHEDULER[0] , "TRUE")$
+	$TAB$TPRI_SCHEDULER
+$END$
+
+$IF LENGTH(RESOURCE.ID_LIST)$
+	$SPC$,$SPC$$NL$
+	$JOINEACH resid RESOURCE.ID_LIST " , \n"$
+		$TAB$$RESOURCE_PRIORITY[resid]$$TAB$/* $resid$ */
+	$END$
+$END$
+
+$NL$};
+$NL$
+
+Priority rescb_prevpri[TNUM_RESOURCE];$NL$
+ResourceType rescb_prevres[TNUM_RESOURCE];$NL$
+
+$NL$
+$NL$
+
+/****** Object EVENT ******/$NL$
+$NL$
+
+$NUM_EVTMASK_AUTO = 0$
+$ASSIGNABLE_AUTO_EVTMASK = EVTMASK_BITS$
+
+$FOREACH evtid EVENT.ID_LIST$
+$ AUTOの場合
+	$IF EQ(EVENT.MASK[evtid] , "AUTO")$
+		$IF NUM_EVTMASK_AUTO < ASSIGNABLE_AUTO_EVTMASK$
+			const EventMaskType $evtid$ = (1U << $NUM_EVTMASK_AUTO$);$NL$
+			$NUM_EVTMASK_AUTO = NUM_EVTMASK_AUTO + 1$
+		$ELSE$
+			$ERROR$
+				$FORMAT("Total of AUTO EVENT is over. Auto assigned event can define until %1%." , 
+							ASSIGNABLE_AUTO_EVTMASK)$
+			$END$
+		$END$
+	$ELSE$
+$ AUTO以外
+		const EventMaskType $evtid$ = $FORMAT("0x%x" , +EVENT.MASK[evtid])$;$NL$
+		$IF +EVENT.MASK[evtid] == 0x00000000$
+			$WARNING$
+				$FORMAT("Event %1% is 0x00000000 , can't wait and set event." , evtid)$
+			$END$
+		$END$
+	$END$
+	
+$ 参照されないイベントのチェック
+	$REFERED = 0$
+	$FOREACH ext_tskid EXTTSK_LIST$
+		$IF LENGTH(FIND(TASK.EVENT[ext_tskid] , evtid)) != 0$
+			$REFERED = 1$
+		$END$
+	$END$
+	$IF REFERED == 0$
+		$WARNING$
+			$FORMAT("Event %1% is no referenced from any task." , evtid)$
+		$END$
+	$END$
+$END$
+
+
+
+
+$NL$
+$NL$
+
+/****** Object ISR ******/$NL$
+$NL$
+
+$ 
+$ ISR定義情報生成部
+$ 
+
+$ エラーチェック部
+$USED_ENTRY = {}$
+$FOREACH isrid ISR.ID_LIST$
+$ 割込み範囲のチェック
+	$IF !LENGTH(FIND(ISR_PRIORITY_LIST , +ISR.PRIORITY[isrid]))$
+		$ERROR$
+			$FORMAT("ISR %1%'s PRIORITY(%2%) is no in range[%3% - %4%]." , 
+						isrid , ISR.PRIORITY[isrid] , AT(ISR_PRIORITY_LIST , 0) , 
+						AT(ISR_PRIORITY_LIST , (LENGTH(ISR_PRIORITY_LIST) - 1)))$
+		$END$
+	$END$
+$ 割込みエントリが範囲内にあるかチェック
+	$IF !LENGTH(FIND(ISR_ENTRY_LIST , +ISR.ENTRY[isrid]))$
+		$ERROR$
+			$FORMAT("ISR %1%'s ENTRY(%2%) is no in range[%3% - %4%]." , 
+						isrid , ISR.ENTRY[isrid] , AT(ISR_ENTRY_LIST , 0) , 
+						AT(ISR_ENTRY_LIST , (LENGTH(ISR_ENTRY_LIST) - 1)))$
+		$END$
+	$END$
+$ 割込みエントリが重複していないかのチェック
+	$IF LENGTH(FIND(USED_ENTRY , ISR.ENTRY[isrid]))$
+		$ERROR$
+			$FORMAT("ISR %1%'s ENTRY(%2%) is duplicated." , isrid , ISR.ENTRY[isrid])$
+		$END$
+	$END$
+	
+$ 使用されている割込みエントリの追加
+	$USED_ENTRY = APPEND(USED_ENTRY , ISR.ENTRY[isrid])$
+$END$
+
+$ カテゴリ2 ISR割込み優先度の最大値がカテゴリ1割込み優先度の最大値を超えていないかチェック
+
+$ 値の算出
+$ISR1_MIN_PRIORITY = AT(ISR_PRIORITY_LIST , (LENGTH(ISR_PRIORITY_LIST) - 1))$
+$FOREACH isr1id ISR1_LIST$
+	$IF ISR.PRIORITY[isr1id] < ISR1_MIN_PRIORITY$
+		$ISR1_MIN_PRIORITY = ISR.PRIORITY[isr1id]$
+	$END$
+$END$
+
+$ISR2_MAX_PRIORITY = 0$
+$FOREACH isr2id ISR2_LIST$
+	$IF ISR.PRIORITY[isr2id] > ISR2_MAX_PRIORITY$
+		$ISR2_MAX_PRIORITY = ISR.PRIORITY[isr2id]$
+	$END$
+$END$
+
+$ 値の比較
+$IF ((LENGTH(ISR1_LIST) != 0)
+	&& (LENGTH(ISR2_LIST) != 0)
+	&& (ISR2_MAX_PRIORITY >= ISR1_MIN_PRIORITY))$
+	$ERROR$
+		$FORMAT("Max value of Category 2 ISR(%1%) is greater than min value of Category 1 ISR(%2%)." , 
+					ISR2_MAX_PRIORITY , ISR1_MIN_PRIORITY)$
+	$END$
+$END$
+
+
+$NL$
+
+#define IPL_MAXISR2$TAB$$ISR2_MAX_PRIORITY$$NL$
+const IPL ipl_maxisr2 = IPL_MAXISR2;$NL$
+$NL$
+
+const Priority isrinib_intpri[TNUM_ISR2] =$NL$
+{$NL$
+
+$JOINEACH isr2id ISR2_LIST " , \n"$
+	$TAB$(TPRI_MINISR + $ISR.PRIORITY[isr2id]$)$TAB$/* $isr2id$ */
+$END$
+$NL$};
+
+$NL$
+$NL$
+
+ResourceType isrcb_lastres[TNUM_ISR2];$NL$
+
+$NL$
+$NL$
+
+/****** Object APPMODE ******/$NL$
+/* 出力する情報はない */$NL$
+
+$NL$
+$NL$
+
+/* オブジェクト初期化関数の生成 */$NL$
+void object_initialize(void)$NL$
+{$NL$
+$IF LENGTH(ALARM.ID_LIST)$
+	$TAB$alarm_initialize();$NL$
+$END$
+
+$IF LENGTH(ISR.ID_LIST)$
+	$TAB$interrupt_initialize();$NL$
+$END$
+
+$IF LENGTH(RESOURCE.ID_LIST)$
+	$TAB$resource_initialize();$NL$
+$END$
+
+$IF LENGTH(TASK.ID_LIST)$
+	$TAB$task_initialize();$NL$
+$END$
+
+}$NL$
+
+
+$NL$
+
+
+$ 
+$ 依存部出力部
+$ 
+
+$INCLUDE "sys.tf"$
+$INCLUDE "cpu.tf"$
+
+$ EOF
+
Index: atk1_sh2/trunk/kernel/kernel.tf
===================================================================
--- atk1_sh2/trunk/kernel/kernel.tf	(revision 5)
+++ atk1_sh2/trunk/kernel/kernel.tf	(revision 5)
@@ -0,0 +1,328 @@
+$ 
+$  TOPPERS Automotive Kernel
+$      Toyohashi Open Platform for Embedded Real-Time Systems
+$      Automotive Kernel
+$ 
+$  Copyright (C) 2010 by Meika Sugimoto
+$ 
+$  上記著作権者は，以下の (1)〜(4) の条件か，Free Software Foundation 
+$  によって公表されている GNU General Public License の Version 2 に記
+$  述されている条件を満たす場合に限り，本ソフトウェア（本ソフトウェア
+$  を改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，
+$  利用と呼ぶ）することを無償で許諾する．
+$  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+$      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+$      スコード中に含まれていること．
+$  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+$      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+$      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+$      の無保証規定を掲載すること．
+$  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+$      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+$      と．
+$    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+$        作権表示，この利用条件および下記の無保証規定を掲載すること．
+$    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+$        報告すること．
+$  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+$      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+$ 
+$  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+$  よびTOPPERSプロジェクトは，本ソフトウェアに関して，その適用可能性も
+$  含めて，いかなる保証も行わない．また，本ソフトウェアの利用により直
+$  接的または間接的に生じたいかなる損害に関しても，その責任を負わない．
+$ 
+
+$FILE "kernel_id.h"$
+
+/*$NL$
+$SPC$*$TAB$kernel_id.h$NL$
+$SPC$*$TAB$Generated time : $+CFG_VERSION$$NL$
+$SPC$*$TAB$CFG Vertion : $CFG_VERSION$$NL$
+$SPC$*/$NL$
+
+$NL$$NL$
+
+#ifndef KERNEL_ID_H$NL$
+#define KERNEL_ID_H$NL$
+
+$NL$
+
+$ OSオブジェクトの設定の出力
+
+/****** Object OS ******/$NL$
+$NL$
+
+$IF EQ(OS.STARTUPHOOK[0] , "TRUE")$
+	#define$SPC$USE_STARTUPHOOK$NL$
+$END$
+
+$IF EQ(OS.SHUTDOWNHOOK[0] , "TRUE")$
+	#define$SPC$USE_SHUTDOWNHOOK$NL$
+$END$
+
+$IF EQ(OS.ERRORHOOK[0] , "TRUE")$
+	#define$SPC$USE_ERRORHOOK$NL$
+$END$
+
+$IF EQ(OS.PRETASKHOOK[0] , "TRUE")$
+	#define$SPC$USE_PRETASKHOOK$NL$
+$END$
+
+$IF EQ(OS.POSTTASKHOOK[0] , "TRUE")$
+	#define$SPC$USE_POSTTASKHOOKK$NL$
+$END$
+
+$NL$
+
+$ これらのオブジェクトは特に出力する内容はない．
+
+/****** Object TASK ******/$NL$
+$NL$
+/****** Object COUNTER ******/$NL$
+$NL$
+/****** Object ALARM ******/$NL$
+$NL$
+/****** Object RESOURCE ******/$NL$
+$NL$
+/****** Object EVENT ******/$NL$
+$NL$
+/****** Object ISR ******/$NL$
+$NL$
+
+/****** Object APPMODE ******/$NL$
+$NL$
+
+
+$ 
+$ アプリケーションモード
+$ 
+
+$ 一つもない場合は警告とする(DEFAULT_APPMODEは使用可能O)
+
+$IF LENGTH(APPMODE.ID_LIST) == 0$
+	$WARNING$
+		$FORMAT("No Application Mode defined , you can use OSDEFAULTAPPMODE")$
+	$END$
+$ELSE$
+$IF LENGTH(APPMODE.ID_LIST) >= APPMODE_BITS$
+	$ERROR$
+		$FORMAT("Application Mode defined over %1%." , +APPMODE_BITS)$
+	$END$
+$END$
+$END$
+
+$ アプリケーションモードの値を付加して出力
+
+$FOREACH appmode APPMODE.ORDER_LIST$
+	#define$TAB$$appmode$$TAB$(AppModeType)(1U << $+appmode$)$NL$
+$END$
+
+$NL$
+#endif	/* ! KERNEL_ID_H */$NL$
+
+
+$ 
+$ カウンタ及びアラームのオブジェクト定義
+$ 
+$FILE "kernel_cfg.c"$
+
+/****** Object COUNTER ******/$NL$
+$NL$
+
+$ カウンタIDの定義
+$FOREACH cntid COUNTER.ID_LIST$
+	const CounterType $cntid$ = $+cntid$;$NL$
+$END$
+
+$NL$
+
+const TickType cntinib_maxval[TNUM_COUNTER] =$NL$
+{$NL$
+$JOINEACH cntid COUNTER.ID_LIST " , \n"$
+	$TAB$$COUNTER.MAXALLOWEDVALUE[cntid]$$TAB$/* $cntid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const TickType cntinib_maxval2[TNUM_COUNTER] =$NL$
+{$NL$
+$JOINEACH cntid COUNTER.ID_LIST " , \n"$
+	$TAB$(($COUNTER.MAXALLOWEDVALUE[cntid]$ * 2) + 1)$TAB$/* $cntid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const TickType cntinib_tickbase[TNUM_COUNTER] =$NL$
+{$NL$
+$JOINEACH cntid COUNTER.ID_LIST " , \n"$
+	$TAB$$COUNTER.TICKSPERBASE[cntid]$$TAB$/* $cntid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const TickType cntinib_mincyc[TNUM_COUNTER] =$NL$
+{$NL$
+$JOINEACH cntid COUNTER.ID_LIST " , \n"$
+	$TAB$$COUNTER.MINCYCLE[cntid]$$TAB$/* $cntid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+AlarmType cntcb_almque[TNUM_COUNTER];$NL$
+TickType cntcb_curval[TNUM_COUNTER];$NL$
+
+$NL$
+$NL$
+
+/****** Object ALARM ******/$NL$
+$NL$
+
+$ アラームIDの定義
+/* アラームIDの定義 */$NL$
+$FOREACH almid ALARM.ID_LIST$
+	const AlarmType $almid$ = $+almid$;$NL$
+$END$
+
+$NL$
+
+$ コールバックルーチンの生成
+$FOREACH almid ALARM.ID_LIST$
+	/* $almid$アラームで実行するコールバック関数の定義 */$NL$
+	$IF EQ(ALARM.ACTION[almid] , "SETEVENT")$
+		DeclareTask($ALARM.ACTION.SETEVENT.TASK[almid]$);$NL$
+		DeclareEvent($ALARM.ACTION.SETEVENT.EVENT[almid]$);$NL$
+		$NL$
+		static void _setevent_alarm_$almid$(void);$NL$
+		static void _setevent_alarm_$almid$(void)$NL$
+		{$NL$
+			$TAB$(void)SetEvent($ALARM.ACTION.SETEVENT.TASK[almid]$ , $ALARM.ACTION.SETEVENT.EVENT[almid]$);$NL$
+		}$NL$
+		$NL$
+	$ELSE$
+	$IF EQ(ALARM.ACTION[almid] , "ACTIVATETASK")$
+		DeclareTask($ALARM.ACTION.ACTIVATETASK.TASK[almid]$);$NL$
+		$NL$
+		static void _activatetak_alarm_$almid$(void);$NL$
+		static void _activatetak_alarm_$almid$(void)$NL$
+		{$NL$
+			$TAB$(void)ActivateTask($ALARM.ACTION.ACTIVATETASK.TASK[almid]$);$NL$
+		}$NL$
+		$NL$
+	$ELSE$
+	$IF EQ(ALARM.ACTION[almid] , "ALARMCALLBACK")$
+		extern void ALARMCALLBACKNAME(
+			$UNESCSTR(ALARM.ACTION.ALARMCALLBACK.ALARMCALLBACKNAME[almid])$)(void);$NL$
+		$NL$
+	$END$
+	$END$
+	$END$
+$END$
+
+$NL$
+
+$ データブロックの定義
+/* データブロックの定義 */$NL$
+const CounterType alminib_cntid[TNUM_ALARM] =$NL$
+{$NL$
+$JOINEACH almid  ALARM.ID_LIST " , \n"$
+	$TAB$$+ALARM.COUNTER[almid]$$TAB$/* ( = $ALARM.COUNTER[almid]$) $almid$ */
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const FP alminib_cback[TNUM_ALARM] =$NL$
+{$NL$
+$JOINEACH almid  ALARM.ID_LIST " , \n"$
+	$IF EQ(ALARM.ACTION[almid] , "SETEVENT")$
+		$TAB$_setevent_alarm_$almid$$TAB$/* $almid$ */
+	$ELSE$
+	$IF EQ(ALARM.ACTION[almid] , "ACTIVATETASK")$
+		$TAB$_activatetak_alarm_$almid$$TAB$/* $almid$ */
+	$ELSE$
+	$IF EQ(ALARM.ACTION[almid] , "ALARMCALLBACK")$
+		$TAB$ALARMCALLBACKNAME(
+				$UNESCSTR(ALARM.ACTION.ALARMCALLBACK.ALARMCALLBACKNAME[almid])$
+			)$TAB$/* $almid$ */
+	$END$
+	$END$
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const AppModeType alminib_autosta[TNUM_ALARM] =$NL$
+{$NL$
+$JOINEACH almid  ALARM.ID_LIST " , \n"$
+	$IF EQ(ALARM.AUTOSTART[almid] , "TRUE")$
+		$TAB$(
+		$JOINEACH alm_appmode ALARM.AUTOSTART.TRUE.APPMODE[almid] " | "$
+			$alm_appmode$
+		$END$
+		)$TAB$/* $almid$ */
+	$ELSE$
+		$TAB$0x00000000$TAB$/* $almid$ */
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const TickType alminib_almval[TNUM_ALARM] =$NL$
+{$NL$
+$JOINEACH almid  ALARM.ID_LIST " , \n"$
+	$IF EQ(ALARM.AUTOSTART[almid] , "TRUE")$
+		$TAB$$ALARM.AUTOSTART.TRUE.ALARMTIME[almid]$$TAB$/* $almid$ */
+	$ELSE$
+		$TAB$0$TAB$/* $almid$ */
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+const TickType alminib_cycle[TNUM_ALARM] =$NL$
+{$NL$
+$JOINEACH almid  ALARM.ID_LIST " , \n"$
+	$IF EQ(ALARM.AUTOSTART[almid] , "TRUE")$
+		$TAB$$ALARM.AUTOSTART.TRUE.CYCLETIME[almid]$$TAB$/* $almid$ */
+	$ELSE$
+		$TAB$0$TAB$/* $almid$ */
+	$END$
+$END$
+$NL$
+};
+
+$NL$
+$NL$
+
+AlarmType almcb_next[TNUM_ALARM];$NL$
+AlarmType almcb_prev[TNUM_ALARM];$NL$
+TickType almcb_almval[TNUM_ALARM];$NL$
+TickType almcb_cycle[TNUM_ALARM];$NL$
+
+$NL$
+$NL$
+
Index: atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/Makefile
===================================================================
--- atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/Makefile	(revision 5)
+++ atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/Makefile	(revision 5)
@@ -0,0 +1,397 @@
+#
+#  TOPPERS/OSEK Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      OSEK Kernel
+# 
+#  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2004-2006 by Witz Corporation, JAPAN
+#  Copyright (C) 2010 by Meika Sugimoto
+# 
+#  上記著作権者は，以下の (1)〜(4) の条件か，Free Software Foundation 
+#  によって公表されている GNU General Public License の Version 2 に記
+#  述されている条件を満たす場合に限り，本ソフトウェア（本ソフトウェア
+#  を改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，
+#  利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+# 
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，その適用可能性も
+#  含めて，いかなる保証も行わない．また，本ソフトウェアの利用により直
+#  接的または間接的に生じたいかなる損害に関しても，その責任を負わない．
+#
+#
+
+all:
+#
+#  ターゲット名の定義
+#
+CPU = sh2-gnu
+SYS = cq7144a
+
+#
+#  コンフォーマンスクラスの定義
+#
+
+CONFCLASS = ecc2
+
+#
+#  ソースファイルのトップディレクトリの定義
+#
+TOPDIR = ../../..
+
+#
+#  出力ファイルのディレクトリの定義
+#
+OUTDIR = ./output
+
+#
+#  コンフィギュレーションファイルの改行コード変換ツール定義
+#
+#  SystemGeneratorにより出力されるコンフィグレーションファイルの
+#  改行コードはCR+LFとなっているため、
+#  LFに変換するツール名・パス名・オプションを定義する。
+#  使用するツールは任意。以下は参考使用例
+#
+#CHANGELINE_TOOL = nkf.exe
+#CHANGELINE_TOOL_PATH = 
+#CHANGELINE_TOOL_OPTION = -d
+
+#
+#  ターゲット依存の定義のインクルード
+#
+include $(TOPDIR)/config/$(CPU)/$(SYS)/Makefile.config
+include $(TOPDIR)/config/$(CPU)/Makefile.config
+
+#
+#  共通コンパイルオプションの定義
+#
+COPTS := $(COPTS)
+CDEFS := $(CDEFS)
+INCLUDES := -I. -I$(TOPDIR)/include $(INCLUDES) \
+			-I$(TOPDIR)/syslib -I$(TOPDIR)/syslib/$(CPU)/$(SYS)
+LDFLAGS := -nostdlib -lgcc $(LDFLAGS)
+LIBS := $(LIBS)
+CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
+
+#
+#  アプリケーションプログラムに関する定義
+#
+UNAME = sample1_ecc2
+UTASK_DIR := $(UTASK_DIR):$(TOPDIR)/sample
+UTASK_ASMOBJS =
+UTASK_COBJS = $(UNAME).o sample1_log_ecc2.o
+UTASK_CFLAGS =
+UTASK_LIBS =
+
+#
+#  システムサービスに関する定義
+#  （現在システムサービスに関する定義は存在しないが、将来の追加のため準備してある）
+#
+STASK_DIR := $(STASK_DIR)
+STASK_ASMOBJS := $(STASK_ASMOBJS)
+STASK_COBJS := $(STASK_COBJS)
+STASK_CFLAGS := $(STASK_CFLAGS)
+STASK_LIBS := $(STASK_LIBS)
+
+#
+#  カーネルに関する定義
+#
+#  KERNEL_ASMOBJS: カーネルライブラリに含める，ソースがアセンブリ言語の
+#		   オブジェクトファイル．
+#  KERNEL_COBJS: カーネルのライブラリに含める，ソースがC言語で，ソース
+#		 ファイルと1対1に対応するオブジェクトファイル．
+KERNEL = $(TOPDIR)/kernel
+KERNEL_DIR := $(KERNEL_DIR):$(KERNEL):$(KERNEL)/$(CONFCLASS)
+KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
+KERNEL_COBJS := alarm.o event.o interrupt.o osctl.o resource.o \
+				task.o task_manage.o $(KERNEL_COBJS)
+KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(KERNEL) -I$(KERNEL)/$(CONFCLASS)
+
+#
+#  システムライブラリに関する定義
+#
+SYSLIB_DIR := $(SYSLIB_DIR):$(TOPDIR)/syslib:$(TOPDIR)/syslib/$(CPU)/$(SYS)
+SYSLIB_ASMOBJS =
+SYSLIB_COBJS := $(SYSLIB_COBJS) serial.o sys_timer.o
+SYSLIB_CFLAGS =
+SYSLIB_LIBS =
+
+#
+#  システムライブラリ依存部に関する定義
+#
+SYSLIB_DIR := $(SYSLIB_DIR):$(TOPDIR)/syslib/$(CPU)/$(SYS)
+SYSLIB_ASMOBJS =
+SYSLIB_COBJS := $(SYSLIB_COBJS) hw_serial.o hw_sys_timer.o sample_config.o
+SYSLIB_CFLAGS =
+SYSLIB_LIBS =
+
+#
+#  オブジェクトファイル名の拡張子の設定
+#
+OBJEXT = elf
+
+#
+#  オブジェクトファイル名の定義
+#
+OBJNAME = toppers_osek_$(SYS)
+ifdef OBJEXT
+    OBJFILE = $(OUTDIR)/$(OBJNAME).$(OBJEXT)
+else
+    OBJFILE = $(OUTDIR)/$(OBJNAME)
+endif
+
+#
+#  ターゲットファイル（複数を同時に選択してはならない）
+#
+all: $(OBJNAME).mot
+
+
+##### 以下は編集しないこと #####
+
+#
+#  ソースファイルのあるディレクトリに関する定義
+#
+vpath %.c $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR):$(SYSLIB_DIR)
+vpath %.S $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR):$(SYSLIB_DIR)
+
+#
+#  オブジェクトファイルのあるディレクトリに関する定義
+#
+vpath %.o $(OUTDIR)
+
+#
+#  コンパイルのための変数の定義
+#
+START_OBJS  = $(START_ASMOBJS)
+KERNEL_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS)
+STASK_OBJS  = $(STASK_ASMOBJS) $(STASK_COBJS)
+UTASK_OBJS  = $(UTASK_ASMOBJS) $(UTASK_COBJS)
+SYSLIB_OBJS = $(SYSLIB_ASMOBJS) $(SYSLIB_COBJS)
+
+ALL_OBJS  = $(START_OBJS) kernel_cfg.o $(KERNEL_OBJS) $(UTASK_OBJS) $(STASK_OBJS) $(SYSLIB_OBJS)
+
+ifdef LDSCRIPT
+	LDFLAGS := $(LDFLAGS) -T $(TOPDIR)/config/$(LDSCRIPT)
+endif
+
+#
+#  全体のリンク
+#
+$(OBJFILE): $(ALL_OBJS)
+	$(LINK) $(CFLAGS) -Wl,-Map,$(OUTDIR)/$(OBJNAME).map -o $(OBJFILE) $(addprefix $(OUTDIR)/, $(ALL_OBJS)) $(LDFLAGS)
+	$(NM) $(OBJFILE) > $(OUTDIR)/$(OBJNAME).syms
+
+#
+#  MOTファイルの生成（Sレコードファイルと同一）
+#
+$(OBJNAME).mot: $(OBJFILE)
+	$(OBJCOPY) -O srec -S $(OBJFILE) $(OUTDIR)/$(OBJNAME).mot
+
+
+#
+#  コンパイル結果の消去
+#
+clean:
+	rm -f \#* *~ $(OUTDIR)/*.o tmpfile?
+	rm -f $(OUTDIR)/$(OBJNAME).map
+	rm -f $(OUTDIR)/$(OBJNAME)
+	rm -f $(OUTDIR)/$(OBJNAME).syms $(OUTDIR)/$(OBJNAME).mot
+	rm -f $(OUTDIR)/$(OBJNAME).elf
+	rm -f kernel_cfg.c kernel_id.h
+	rm -f cfg1_out*
+
+cleandep:
+	rm -f Makefile.depend
+
+realclean: cleandep clean
+
+#
+#  カーネルのコンフィギュレーションファイルの生成
+#
+
+# !!kernel_config.tfも必要なので定義を依存部に分離要
+TF =  $(KERNEL)/$(CONFCLASS)/kernel_ecc2.tf $(KERNEL)/kernel.tf	\
+	$(TOPDIR)/config/$(CPU)/cpu.tf	\
+	$(TOPDIR)/config/$(CPU)/$(SYS)/sys.tf
+
+kernel_cfg.c kernel_id.h: cfg1_out.srec cfg1_out.syms $(UNAME).oil $(TF)
+	$(TOPDIR)/cfg/cfg.exe $(UNAME).oil -I$(TOPDIR)/cfg/impl_oil			\
+		--pass 2 --kernel atk1 -T $(KERNEL)/$(CONFCLASS)/kernel_ecc2.tf	\
+		$(INCLUDES) -I$(KERNEL) 										\
+		--api-table $(KERNEL)/$(CONFCLASS)/atk_object_table.csv			\
+		--cfg1-def-table $(TOPDIR)/config/$(CPU)/cpu_def.csv			\
+		--cfg1-def-table $(TOPDIR)/config/$(CPU)/$(SYS)/sys_def.csv		\
+		--cfg1-def-table $(KERNEL)/$(CONFCLASS)/kernel_def.csv
+
+cfg1_out.srec cfg1_out.syms : cfg1_out.c
+	$(CC) -c $(KERNEL_CFLAGS) $(INCLUDES) $<
+	$(LD) cfg1_out.o -o cfg1_out
+	$(NM) cfg1_out > cfg1_out.syms
+	$(OBJCOPY) -O srec cfg1_out cfg1_out.srec
+
+cfg1_out.c : $(UNAME).oil $(TOPDIR)/config/$(CPU)/cpu_def.csv	\
+				$(TOPDIR)/config/$(CPU)/$(SYS)/sys_def.csv	\
+				$(KERNEL)/$(CONFCLASS)/kernel_def.csv
+	$(TOPDIR)/cfg/cfg.exe $< --pass 1 --kernel atk1	\
+		-I $(TOPDIR)/cfg/impl_oil					\
+		--api-table $(KERNEL)/$(CONFCLASS)/atk_object_table.csv		\
+		--cfg1-def-table $(TOPDIR)/config/$(CPU)/cpu_def.csv		\
+		--cfg1-def-table $(TOPDIR)/config/$(CPU)/$(SYS)/sys_def.csv	\
+		--cfg1-def-table $(KERNEL)/$(CONFCLASS)/kernel_def.csv
+
+#
+#  コンフィギュレーションファイルの改行コード変換
+#  上記SystemGeneratorにより出力されるコンフィグレーションファイルの
+#  改行コードはCR+LFとなっているため、LFに変換する。
+#
+ifdef CHANGELINE_TOOL
+	@echo "kernel_cfg.c/kernel_id.h Change Line CR+LF -> LF!!"
+	$(CHANGELINE_TOOL_PATH)/$(CHANGELINE_TOOL) $(CHANGELINE_TOOL_OPTION) kernel_cfg.c
+	$(CHANGELINE_TOOL_PATH)/$(CHANGELINE_TOOL) $(CHANGELINE_TOOL_OPTION) kernel_id.h
+endif
+
+#
+#  kernel_cfg.c のコンパイルルール
+#
+#  kernel_cfg.c は，アプリケーションプログラム用，システムサービス用，
+#  カーネル用のすべてのオプションを付けてコンパイルする．
+#
+KERNEL_CFG_CFLAGS = $(UTASK_CFLAGS) $(STASK_CFLAGS) $(KERNEL_CFLAGS) $(SYSLIB_CFLAGS)
+
+kernel_cfg.o: kernel_cfg.c
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/kernel_cfg.o $(KERNEL_CFG_CFLAGS) $<
+
+kernel_cfg.d: kernel_cfg.c
+	$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(KERNEL_CFG_CFLAGS)" $< >> Makefile.depend
+
+#
+#  依存関係ファイルの生成
+#
+gendepend:
+	@echo "Generating Makefile.depend."
+
+depend: cleandep gendepend $(ALL_OBJS:.o=.d)
+
+#
+#  依存関係ファイルをインクルード
+#
+-include Makefile.depend
+
+#
+#  開発ツールのコマンド名の定義
+#
+#
+#  GNU開発環境用
+#
+TARGET_PREFIX = $(TARGET)-
+
+CC = $(TARGET_PREFIX)gcc
+CXX = $(TARGET_PREFIX)g++
+AS = $(TARGET_PREFIX)as
+LD = $(TARGET_PREFIX)ld
+AR = $(TARGET_PREFIX)ar
+NM = $(TARGET_PREFIX)nm
+RANLIB = $(TARGET_PREFIX)ranlib
+OBJCOPY = $(TARGET_PREFIX)objcopy
+OBJDUMP = $(TARGET_PREFIX)objdump
+
+LINK = $(CC)
+
+PERL = perl
+
+#
+#  コンパイルルールの定義
+#
+$(KERNEL_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(KERNEL_CFLAGS) $<
+
+$(KERNEL_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<)) $(KERNEL_CFLAGS) $<
+
+$(STASK_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(STASK_CFLAGS) $<
+
+$(STASK_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<)) $(STASK_CFLAGS) $<
+
+$(UTASK_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(UTASK_CFLAGS) $<
+
+$(UTASK_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<))) $(UTASK_CFLAGS) $<
+
+$(SYSLIB_COBJS): %.o: %.c
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.c,%.o,$(notdir $<)) $(SYSLIB_CFLAGS) $<
+
+$(SYSLIB_ASMOBJS): %.o: %.S
+	$(CC) -c $(CFLAGS) -o $(OUTDIR)/$(patsubst %.S,%.o,$(notdir $<)) $(SYSLIB_CFLAGS) $<
+
+#
+#  依存関係作成ルールの定義
+#
+$(KERNEL_COBJS:.o=.d): %.d: %.c
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+$(KERNEL_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
+
+$(STASK_COBJS:.o=.d): %.d: %.c
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
+
+$(STASK_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
+
+$(UTASK_COBJS:.o=.d): %.d: %.c
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
+
+$(UTASK_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
+
+$(SYSLIB_COBJS:.o=.d): %.d: %.c
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(SYSLIB_CFLAGS)" $< >> Makefile.depend
+
+$(SYSLIB_ASMOBJS:.o=.d): %.d: %.S
+	@$(PERL) makedep -C $(CC) \
+		-O "$(CFLAGS) $(SYSLIB_CFLAGS)" $< >> Makefile.depend
+
+#
+#  デフォルトコンパイルルールを上書き
+#
+%.o: %.c
+	@echo "*** Default compile rules should not be used."
+	$(CC) -c $(CFLAGS) $<
+
+%.s: %.c
+	@echo "*** Default compile rules should not be used."
+	$(CC) -S $(CFLAGS) $<
+
+%.o: %.S
+	@echo "*** Default compile rules should not be used."
+	$(CC) -c $(CFLAGS) $<
+
+test:
+	@echo $(INCLUDES) $(KERNEL)
Index: atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/makedep
===================================================================
--- atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/makedep	(revision 5)
+++ atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/makedep	(revision 5)
@@ -0,0 +1,145 @@
+#! /usr/bin/perl 
+#
+#  TOPPERS/OSEK Kernel
+#      Toyohashi Open Platform for Embedded Real-Time Systems/
+#      OSEK Kernel
+# 
+#  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
+#                              Toyohashi Univ. of Technology, JAPAN
+#  Copyright (C) 2004-2006 by Witz Corporation, JAPAN
+# 
+#  上記著作権者は，以下の (1)〜(4) の条件か，Free Software Foundation 
+#  によって公表されている GNU General Public License の Version 2 に記
+#  述されている条件を満たす場合に限り，本ソフトウェア（本ソフトウェア
+#  を改変したものを含む．以下同じ）を使用・複製・改変・再配布（以下，
+#  利用と呼ぶ）することを無償で許諾する．
+#  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
+#      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
+#      スコード中に含まれていること．
+#  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
+#      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
+#      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
+#      の無保証規定を掲載すること．
+#  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
+#      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
+#      と．
+#    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
+#        作権表示，この利用条件および下記の無保証規定を掲載すること．
+#    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
+#        報告すること．
+#  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
+#      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
+# 
+#  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
+#  よびTOPPERSプロジェクトは，本ソフトウェアに関して，その適用可能性も
+#  含めて，いかなる保証も行わない．また，本ソフトウェアの利用により直
+#  接的または間接的に生じたいかなる損害に関しても，その責任を負わない．
+# 
+# 
+
+require "getopt.pl";
+
+#  オプションの定義
+#
+#  -C <cc_path>	Cコンパイラのコマンド名
+#  -O <cc_opts>	Cコンパイラ/CPPに渡すオプション
+#
+#  -X		ソースファイルを強制的にCヘッダファイルと見なす
+#
+#  -T <target>	ターゲットのファイル名
+#  -D <t_dir>	ターゲットのディレクトリ名を指定する
+#  -d		ターゲットのディレクトリ部を保持する
+#  -s		ターゲットのサフィックスを ".s" にする（デフォルトは ".o"）
+
+#
+#  オプションの処理
+#
+do Getopt("COTD");
+
+$cc_path = $opt_C;
+$cc_opts = $opt_O;
+
+$suffix = $opt_s ? "s" : "o";
+if ($opt_T) {
+	$target_file = $opt_T;
+}
+elsif ($opt_D) {
+	$target_dir = $opt_D;
+}
+elsif (!$opt_d) {
+	$target_dir = "";
+}
+
+#
+#  %dependlist に作られた依存関係を出力する
+#
+sub output_dependlist {
+	local($file) = @_;
+	local($target, $column, $len);
+
+	if ($target_file) {
+		$target = $target_file;
+	}
+	else {
+		$target = $file;
+		$target =~ s/(.*)\.(.)/$1.$suffix/;
+	}	
+	if (defined($target_dir)) {
+		$target =~ s/^.*\/([^\/]+)$/$1/;
+		if ($target_dir) {
+			$target = $target_dir."/".$target;
+		}
+	}
+	print $target, ": ";
+	$column = length($target) + 2;
+    
+	foreach $file (keys(%dependlist)) {
+		$len = length($file) + 1;
+		if ($column > 8 && $column + $len >= 70) {
+			print "\\\n\t";
+			$column = 8;
+		}
+		$column += $len;
+		print "$file ";
+	}
+	print "\n";
+}
+
+#
+#  $file の依存関係を %dependlist に作る
+#
+sub makedepend_one {
+	local($file) = @_;
+	local($command, $input, $dir, $filename);
+
+	$command = "$cc_path -E $cc_opts";
+	if ($opt_X) {
+		$command .= " -x c-header";
+	}
+	unless (open(INPUT, "$command $file |")) {
+		print STDERR "makedep: can't open $file\n";
+		exit(1);
+	}
+	while ($line = <INPUT>) {
+		if ($line =~ /^\#\s*([0-9]+)\s*\"([^\"]+)\"/) {
+			$filename = $2;
+			$filename =~ s/ /\\ /;
+			if ($filename !~ /^\<.*\>$/ && $filename !~ /\/$/) {
+				$dependlist{$filename} = 1;
+			}
+		}
+	}
+	unless (close(INPUT)) {
+		print STDERR "makedep: can't execute $command\n";
+		exit(1);
+	}
+}
+
+#
+#  メインルーチン
+#
+foreach $file (@ARGV) {
+	%dependlist = ();
+	do makedepend_one($file);
+	do output_dependlist($file) if (%dependlist);
+}
Index: atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/sample1_ecc2.oil
===================================================================
--- atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/sample1_ecc2.oil	(revision 5)
+++ atk1_sh2/trunk/tools/sh2-gnu/cq7144a_cfg/sample1_ecc2.oil	(revision 5)
@@ -0,0 +1,302 @@
+/*
+ *  サンプルプログラム(1)のOILファイル．
+ */
+
+/*
+ *  定義部のインクルード
+ */
+#include "impl_os_ecc2.oil"
+
+/*
+ *  実装部
+ */
+CPU current {
+
+	/*
+	 *  OS定義
+	 */
+	OS os {
+		STATUS = EXTENDED;
+		STARTUPHOOK = TRUE;
+		ERRORHOOK = TRUE;
+		SHUTDOWNHOOK = TRUE;
+		PRETASKHOOK = FALSE;
+		POSTTASKHOOK = FALSE;
+		USEGETSERVICEID = TRUE;
+		USEPARAMETERACCESS = TRUE;
+		USERESSCHEDULER = TRUE;
+	};
+
+	/*
+	 *  アプリケーションモード定義
+	 */
+	APPMODE AppMode1 {};	/* 並列実行タスク自動起動なし	*/
+	APPMODE AppMode2 {};	/* タスク1自動起動モード		*/
+	APPMODE AppMode3 {};	/* タスク3自動起動モード		*/
+
+	/*
+	 *  タスク定義
+	 */
+	/* メインタスク	*/
+	TASK MainTask {
+		AUTOSTART = TRUE {
+			APPMODE = AppMode1;
+			APPMODE = AppMode2;
+			APPMODE = AppMode3;
+		};
+		PRIORITY = 14;
+		STACKSIZE = 0x0400;
+		ACTIVATION = 1;
+		SCHEDULE = NON;
+		EVENT = MainEvt;
+		EVENT = TestEvt;
+	};
+
+	/* 最高優先度タスク	*/
+	TASK HighPriorityTask {
+		AUTOSTART = FALSE;
+		PRIORITY = 15;
+		STACKSIZE = 0x00C0;
+		ACTIVATION = 1;
+		SCHEDULE = FULL;
+	};
+
+	/* ノンプリエンプティブタスク	*/
+	TASK NonPriTask {
+		AUTOSTART = FALSE;
+		PRIORITY = 1;
+		STACKSIZE = 0x0100;
+		ACTIVATION = 8;
+		SCHEDULE = NON;
+	};
+
+	/* 並列実行タスク1	*/
+	TASK Task1 {
+		AUTOSTART = TRUE {
+			APPMODE = AppMode2;
+		};
+		PRIORITY = 4;
+		STACKSIZE = 0x0100;
+		ACTIVATION = 8;
+		SCHEDULE = FULL;
+		RESOURCE = TskLevelRes;
+		RESOURCE = IntLevelRes;
+	};
+
+	/* 並列実行タスク2	*/
+	TASK Task2 {
+		AUTOSTART = FALSE;
+		PRIORITY = 7;
+		STACKSIZE = 0x0100;
+		ACTIVATION = 1;
+		SCHEDULE = FULL;
+		RESOURCE = TskLevelRes;
+		RESOURCE = IntLevelRes;
+		EVENT = T2Evt;
+	};
+
+	/* 並列実行タスク3	*/
+	TASK Task3 {
+		AUTOSTART = TRUE {
+			APPMODE = AppMode3;
+		};
+		PRIORITY = 12;
+		STACKSIZE = 0x0100;
+		ACTIVATION = 1;
+		SCHEDULE = FULL;
+		RESOURCE = IntLevelRes;
+		EVENT = T3Evt;
+	};
+
+	/* 並列実行タスク4	*/
+	TASK Task4 {
+		AUTOSTART = FALSE;
+		PRIORITY = 6;
+		STACKSIZE = 0x0100;
+		ACTIVATION = 5;
+		SCHEDULE = FULL;
+		RESOURCE = GroupRes;
+		RESOURCE = TskLevelRes;
+		RESOURCE = IntLevelRes;
+	};
+
+	/* 並列実行タスク5	*/
+	TASK Task5 {
+		AUTOSTART = FALSE;
+		PRIORITY = 9;
+		STACKSIZE = 0x0100;
+		ACTIVATION = 5;
+		SCHEDULE = FULL;
+		RESOURCE = GroupRes;
+		RESOURCE = TskLevelRes;
+		RESOURCE = IntLevelRes;
+	};
+
+	/*
+	 *  割込みサービスルーチン定義
+	 */
+	/* シリアルIOエラー割込み(SCI1)	*/
+	ISR ErrHwSerialInt {
+		CATEGORY = 1;
+		ENTRY = 132;
+		PRIORITY = 6;
+	};
+
+	/* シリアルIO受信割込み(SCI1)	*/
+	ISR RxHwSerialInt {
+		CATEGORY = 1;
+		ENTRY = 133;
+		PRIORITY = 6;
+	};
+
+	/* HWカウンタ割込み1	*/
+	ISR HwCnt1Int {
+		CATEGORY = 1;
+		ENTRY = 96;
+		PRIORITY = 5;
+	};
+
+	/* システムタイマ割込み	*/
+	ISR SysTimerInt {
+		CATEGORY = 2;
+		ENTRY = 144;
+		PRIORITY = 4;
+	};
+
+	/* サンプルカウンタソース割込み	*/
+	ISR CounterInt {
+		CATEGORY = 2;
+		ENTRY = 148;
+		PRIORITY = 3;
+	};
+
+	/* HWカウンタ割込み2	*/
+	ISR HwCnt2Int {
+		CATEGORY = 2;
+		ENTRY = 105;
+		PRIORITY = 2;
+		RESOURCE = IntLevelRes;
+	};
+
+	/*
+	 *  リソース定義
+	 */
+	/* タスク・タスク間リソース	*/
+	RESOURCE TskLevelRes {
+		RESOURCEPROPERTY = STANDARD;
+	};
+
+	/* タスク・割込み間リソース	*/
+	RESOURCE IntLevelRes {
+		RESOURCEPROPERTY = STANDARD;
+	};
+
+	/* グループタスク用内部リソース	*/
+	RESOURCE GroupRes {
+		RESOURCEPROPERTY = INTERNAL;
+	};
+
+	/*
+	 *  イベント定義
+	 */
+	/* メインタスク周期イベント	*/
+	EVENT MainEvt {
+		MASK = AUTO;
+	};
+
+	/* 並列実行タスク2用イベント	*/
+	EVENT T2Evt {
+		MASK = AUTO;
+	};
+
+	/* 並列実行タスク3用イベント	*/
+	EVENT T3Evt {
+		MASK = AUTO;
+	};
+
+	/* 並列実行タスク3用イベント	*/
+	EVENT TestEvt {
+		MASK = AUTO;
+	};
+	
+	/*
+	 *  カウンタ定義
+	 */
+	/* システムタイマカウンタ	*/
+	COUNTER SysTimerCnt { 
+		MINCYCLE = 1;
+		MAXALLOWEDVALUE = 999; 
+		TICKSPERBASE = 1; 
+	};
+
+	/* サンプルカウンタ	*/
+	COUNTER SampleCnt { 
+		MINCYCLE = 10;
+		MAXALLOWEDVALUE = 99; 
+		TICKSPERBASE = 10; 
+	};
+
+	/*
+	 *  アラーム定義
+	 */
+	/* メインタスク周期アラーム	*/
+	ALARM MainCycArm { 
+		COUNTER = SysTimerCnt;
+		ACTION  = SETEVENT {
+			TASK = MainTask;
+			EVENT = MainEvt;
+		};
+		AUTOSTART = TRUE {
+			APPMODE = AppMode1;
+			APPMODE = AppMode2;
+			APPMODE = AppMode3;
+			ALARMTIME = 100; 
+			CYCLETIME = 100;
+		};
+	};
+
+	/* タスク起動用アラーム	*/
+	ALARM ActTskArm { 
+		COUNTER = SysTimerCnt;
+		ACTION  = ACTIVATETASK {
+			TASK = Task1;
+		};
+		AUTOSTART = FALSE;
+	};
+
+	/* イベント設定用アラーム	*/
+	ALARM SetEvtArm { 
+		COUNTER = SysTimerCnt;
+		ACTION  = SETEVENT {
+			TASK = Task3;
+			EVENT = T3Evt;
+		};
+		AUTOSTART = FALSE;
+	};
+
+	/* コールバック実行用アラーム	*/
+	ALARM CallBackArm { 
+		COUNTER = SysTimerCnt;
+		ACTION  = ALARMCALLBACK {
+			ALARMCALLBACKNAME = "SysTimerAlmCb";
+		};
+		AUTOSTART = FALSE;
+	};
+
+	/* サンプルカウンタ動作確認用アラーム	*/
+	ALARM SampleArm { 
+		COUNTER = SampleCnt;
+		ACTION  = ALARMCALLBACK {
+			ALARMCALLBACKNAME = "SampleAlmCb";
+		};
+		AUTOSTART = TRUE {
+			APPMODE = AppMode1;
+			APPMODE = AppMode2;
+			APPMODE = AppMode3;
+			ALARMTIME = 10; 
+			CYCLETIME = 10;
+		};
+	};
+
+};
+
