¤·¤«¤·¡¢¥Þ¥ë¥Á¥¿¥¹¥¯¤Î¥×¥í¥°¥é¥à¤òºî¤ëºÝ¤Ë¤Ï¡¢º£¤Þ¤Ç̵¤«¤Ã¤¿ÌäÂ꤬ȯÀ¸¤·¤Þ¤¹¡£
ºÇ¤âÂåɽŪ¤ÊÎ㤬¥¿¥¹¥¯¤¬Â¾¤Î¥¿¥¹¥¯¤Î¼Â¹Ô¤ò˸³²¤¹¤ë¤³¤È¤Ç¤¹¡£
¤½¤ì¤¬¤É¤ó¤Ê¤È¤È¯À¸¤¹¤ë¤«¡¢¤É¤¦²ò·è¤¹¤ë¤«¤ò³Ø¤Ó¤Þ¤¹¡£
1¡¥Æ°ºî¤Î˸³²
¥Þ¥ë¥Á¥¿¥¹¥¯ÆÃͤÎÌäÂê¤òÂ賤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£
¼¡¤Î¥×¥í¥°¥é¥à¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ïresource1.c¤È¤·¤Þ¤·¤¿¡£
¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï£²¤Ä¤Î¥¿¥¹¥¯¤Ï°Ê²¼¤Î¤è¤¦¤Êưºî¤ò¤¹¤ë¤è¤¦¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢Task1¤Î¤Û¤¦¤¬Task_bg¤è¤êÍ¥ÀèÅÙ¤¬¹â¤¯ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£
¤¹¤ë¤È¡¢¥×¥í¥°¥é¥à¤Îή¤ì¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

Task_bg¤Îή¤ì¤ò¸«¤ë¤È¡¢¼Â¹Ô¤¬ÅÓÀÚ¤ìÅÓÀÚ¤ì¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¤½¤Î´Ö¤ËTask1¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£ Task_bg¤Îưºî¤Ï¡¢¥â¡¼¥¿¤Ë»ØÎá¤ò½Ð¤·¤Æ»ØÄꤵ¤ì¤¿»þ´ÖÂԤġ¢¤È¤¤¤¦Æ°ºî¤Ç¤¹¡£
¤·¤«¤·¡¢ÀÞ³ÑTask_bg¤¬¥â¡¼¥¿¤Ë»ØÎá¤ò½Ð¤·¤Æ¤â¡¢¤½¤Î¸åTask1¤«¤é¤Î¥â¡¼¥¿¤Ø¤Î»ØÎá¤Ë¤è¤Ã¤Æ¾Ã¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤³¤ì¤¬¹â®¤Ç·«¤êÊÖ¤µ¤ì¤ë¤Î¤Ç¡¢Task_bg¤Ïưºî¤·¤Æ¤¤¤Ê¤¤¤è¤¦¤Ë´¶¤¸¤ë¤Î¤Ç¤¹¡£
¤Ê¤é¤Ð¡¢Task_bg¤ÎÍ¥ÀèÅÙ¤òTask1¤è¤ê¹â¤¯¤¹¤ì¤ÐÎɤ¤¤Î¤Ç¤·¤ç¤¦¤«¡£¤½¤Î¤È¤¤Î¥×¥í¥°¥é¥à¤Îή¤ì¤Ï¤³¤¦¤Ê¤ê¤Þ¤¹¡£

Task1¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤ì¤Ç¤Ï¡¢ÌÜŪ¤Îưºî¤ò¤·¤Ê¤¤¤Î¤ÏÌÀ³Î¤Ç¤¹¡£
¤ä¤Ï¤ê¡¢Â¾¤Ë²¿¤«¹©Éפ¬É¬ÍפǤ¹¡£
¼¡¤Î¥×¥í¥°¥é¥à¤òºîÀ®¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤³¤Ç¤Ïresource1.c¤È¤·¤Þ¤·¤¿¡£
resource1.c
resource1.oil
#include "kernel.h" #include "kernel_id.h" #include "ecrobot_interface.h" #include "myrobot_interface.h" DeclareCounter(SysTimerCnt); DeclareTask(Task1); /* Task1¤òÀë¸À */ DeclareTask(Task_bg); /* Task_bg¤òÀë¸À */ int i=0; void ecrobot_device_initialize(){ /* OSEKµ¯Æ°»þ¤Î½èÍý¡Ê¥â¡¼¥¿Ää»ß¡Ë*/ nxt_motor_set_speed(NXT_PORT_B,0,0); nxt_motor_set_speed(R_MOTOR,0,0); } void ecrobot_device_terminate(){ /* OSEK½ªÎ»»þ¤Î½èÍý¡Ê¥â¡¼¥¿Ää»ß¡Ë*/ nxt_motor_set_speed(L_MOTOR,0,0); nxt_motor_set_speed(R_MOTOR,0,0); } void user_1ms_isr_type2(void){ SignalCounter(SysTimerCnt); /* ¥«¥¦¥ó¥¿´Ê°×ÈÇ */ } #define SPEED 60 #define TURN_CNT 40 #define MOVE_CNT 120 #define TURN_TIME 500 #define MOVE_TIME 1000 TASK(Task1) { if(i <= MOVE_CNT){ nxt_motor_set_speed(L_MOTOR,SPEED,1); nxt_motor_set_speed(R_MOTOR,SPEED,1); }else if(i > MOVE_CNT && i <= TURN_CNT+MOVE_CNT){ nxt_motor_set_speed(L_MOTOR,SPEED,1); nxt_motor_set_speed(R_MOTOR,-1*SPEED,1); }else{ i=0; } display_clear(0); display_goto_xy(0,1); display_string("I="); /* ÊÑ¿ô¤ÎÆâÍÆ¤òɽ¼¨ */ display_int(i, 5); display_update(); i++; TerminateTask(); /* ½èÍý½ªÎ» */ } TASK(Task_bg){ while(1){ if(ecrobot_get_touch_sensor(PORT_TOUCH) == 1){ nxt_motor_set_speed(L_MOTOR,-1*SPEED,1); nxt_motor_set_speed(R_MOTOR,-1*SPEED,1); systick_wait_ms(MOVE_TIME); nxt_motor_set_speed(L_MOTOR,SPEED,1); nxt_motor_set_speed(R_MOTOR,-1*SPEED,1); systick_wait_ms(TURN_TIME); nxt_motor_set_speed(L_MOTOR,0,1); nxt_motor_set_speed(R_MOTOR,0,1); } } TerminateTask(); } |
resource1.oil
#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 = FALSE; PRIORITY = 2; ACTIVATION = 1; SCHEDULE = FULL; STACKSIZE = 512; }; TASK Task_bg /* Task_bg ¤òÄêµÁ */ { AUTOSTART = TRUE { APPMODE = appmode1; }; PRIORITY = 1; ACTIVATION = 1; SCHEDULE = FULL; STACKSIZE = 512; }; COUNTER SysTimerCnt /* SysTimerCnt¤òÄêµÁ */ { MINCYCLE = 1; MAXALLOWEDVALUE = 10000; TICKSPERBASE = 1; /* One tick is equal to 1msec */ }; ALARM cyclic_alarm1 /* ¼þ´ü¥¢¥é¡¼¥à1¤òÄêµÁ */ { COUNTER = SysTimerCnt; ACTION = ACTIVATETASK { TASK = Task1; }; AUTOSTART = TRUE { ALARMTIME = 1; CYCLETIME = 10; /* Task1¤Ï10msec¤´¤È¤Ëµ¯Æ° */ APPMODE = appmode1; }; }; }; |
¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï£²¤Ä¤Î¥¿¥¹¥¯¤Ï°Ê²¼¤Î¤è¤¦¤Êưºî¤ò¤¹¤ë¤è¤¦¤Ë¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
- ¥í¥Ü¥Ã¥È¤¬±¦²ó¤ê¤Ë»Í³Ñ¤òÉÁ¤¯¤è¤¦¤ËÁö¹Ô¤¹¤ë¥¿¥¹¥¯(Task1)
- ¥¿¥Ã¥Á¥»¥ó¥µ¤¬²¡¤µ¤ì¤¿¤é¡¢¸åÂࢪº¸ÀÞ¤ò¹Ô¤¦¥¿¥¹¥¯(Task_bg)
¤³¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢Task1¤Î¤Û¤¦¤¬Task_bg¤è¤êÍ¥ÀèÅÙ¤¬¹â¤¯ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤¹¡£
¤¹¤ë¤È¡¢¥×¥í¥°¥é¥à¤Îή¤ì¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

Task_bg¤Îή¤ì¤ò¸«¤ë¤È¡¢¼Â¹Ô¤¬ÅÓÀÚ¤ìÅÓÀÚ¤ì¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¤½¤Î´Ö¤ËTask1¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬¤ï¤«¤ê¤Þ¤¹¡£ Task_bg¤Îưºî¤Ï¡¢¥â¡¼¥¿¤Ë»ØÎá¤ò½Ð¤·¤Æ»ØÄꤵ¤ì¤¿»þ´ÖÂԤġ¢¤È¤¤¤¦Æ°ºî¤Ç¤¹¡£
¤·¤«¤·¡¢ÀÞ³ÑTask_bg¤¬¥â¡¼¥¿¤Ë»ØÎá¤ò½Ð¤·¤Æ¤â¡¢¤½¤Î¸åTask1¤«¤é¤Î¥â¡¼¥¿¤Ø¤Î»ØÎá¤Ë¤è¤Ã¤Æ¾Ã¤µ¤ì¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
¤³¤ì¤¬¹â®¤Ç·«¤êÊÖ¤µ¤ì¤ë¤Î¤Ç¡¢Task_bg¤Ïưºî¤·¤Æ¤¤¤Ê¤¤¤è¤¦¤Ë´¶¤¸¤ë¤Î¤Ç¤¹¡£
¤Ê¤é¤Ð¡¢Task_bg¤ÎÍ¥ÀèÅÙ¤òTask1¤è¤ê¹â¤¯¤¹¤ì¤ÐÎɤ¤¤Î¤Ç¤·¤ç¤¦¤«¡£¤½¤Î¤È¤¤Î¥×¥í¥°¥é¥à¤Îή¤ì¤Ï¤³¤¦¤Ê¤ê¤Þ¤¹¡£

Task1¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤ì¤Ç¤Ï¡¢ÌÜŪ¤Îưºî¤ò¤·¤Ê¤¤¤Î¤ÏÌÀ³Î¤Ç¤¹¡£
¤ä¤Ï¤ê¡¢Â¾¤Ë²¿¤«¹©Éפ¬É¬ÍפǤ¹¡£
2¡¥¥¿¥¹¥¯´Ö¤ÎÇÓ¾À©¸æ
ÌäÂê¤Î¸¶°ø¤¬Ê¬¤«¤Ã¤¿½ê¤Ç¡¢²ò·èË¡¤ò³Ø½¬¤·¤Þ¤·¤ç¤¦¡£
¼¡¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤
¥×¥í¥°¥é¥à¤òưºî¤µ¤»¤Æ¸«¤Þ¤·¤ç¤¦¡£
º£ÅÙ¤ÏÀµ¤·¤¯Æ°¤¯¤Ï¤º¤Ç¤¹¡£
¤½¤ì¤Ç¤Ï¡¢¿·¤·¤¯ÍѤ¤¤Æ¤¤¤ë´Ø¿ô¤Î²òÀâ¤ò¤·¤Æ¤¤¤¤Þ¤¹
¡¦ ¥½¡¼¥¹¥Õ¥¡¥¤¥ë
¡¦ oil¥Õ¥¡¥¤¥ë
¥×¥í¥°¥é¥à¤Îή¤ì¤Ï¤³¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

½ç¤òÄɤäÆÀâÌÀ¤¹¤ë¤È¡¢
¥ê¥½¡¼¥¹¤ò¼èÆÀ¤¹¤ë¤È¡¢Â¾¤ÎTask¥ª¥Ö¥¸¥§¥¯¥È¤ÎÃæ¤Ç¥ê¥½¡¼¥¹¤ò»ØÄꤷ¤Æ¤¤¤ë¥¿¥¹¥¯¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
¤³¤ì¤Ï¡¢¥ê¥½¡¼¥¹¤ò¼èÆÀ¤·¤¿ºÝ¤ËÍ¥ÀèÅÙ¤¬Â¾¤è¤ê¹â¤¯¤Ê¤ë¤³¤È¤Ë¤è¤ê¼Â¸½¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¥â¡¼¥¿¤Ê¤É¡¢Æ±¤¸»ñ¸»¤ò¶¦Í¤¹¤ë¥¿¥¹¥¯¤ËƱ¤¸¥ê¥½¡¼¥¹¤ò»ØÄꤷ¤Æ¤ª¤±¤Ð¡¢¥Þ¥ë¥Á¥¿¥¹¥¯¤Ë¤è¤ëÌäÂê¤òËɤ°¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¢¨ÉáÄ̤νèÍý·Ï¤Ë¤â¾Ü¤·¤¤Êý¤Ø
¼¡¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤
resource2.c
resource2.oil
#include "kernel.h" #include "kernel_id.h" #include "ecrobot_interface.h" #include "myrobot_interface.h" DeclareCounter(SysTimerCnt); DeclareResource(resource1); DeclareTask(Task1); /* Task1¤òÀë¸À */ DeclareTask(Task_bg); /* Task_bg¤òÀë¸À */ int i=0; void ecrobot_device_initialize(){ /* OSEKµ¯Æ°»þ¤Î½èÍý¡Ê¥â¡¼¥¿Ää»ß¡Ë*/ nxt_motor_set_speed(NXT_PORT_B,0,0); nxt_motor_set_speed(R_MOTOR,0,0); } void ecrobot_device_terminate(){ /* OSEK½ªÎ»»þ¤Î½èÍý¡Ê¥â¡¼¥¿Ää»ß¡Ë*/ nxt_motor_set_speed(L_MOTOR,0,0); nxt_motor_set_speed(R_MOTOR,0,0); } void user_1ms_isr_type2(void){ SignalCounter(SysTimerCnt); /* ¥«¥¦¥ó¥¿´Ê°×ÈÇ */ } #define SPEED 60 #define TURN_CNT 40 #define MOVE_CNT 120 #define TURN_TIME 500 #define MOVE_TIME 1000 TASK(Task1) { if(i <= MOVE_CNT){ nxt_motor_set_speed(L_MOTOR,SPEED,1); nxt_motor_set_speed(R_MOTOR,SPEED,1); }else if(i > MOVE_CNT && i <= TURN_CNT+MOVE_CNT){ nxt_motor_set_speed(L_MOTOR,SPEED,1); nxt_motor_set_speed(R_MOTOR,-1*SPEED,1); }else{ i=0; } display_clear(0); display_goto_xy(0,1); display_string("I="); /* ÊÑ¿ô¤ÎÆâÍÆ¤òɽ¼¨ */ display_int(i, 5); display_update(); i++; TerminateTask(); /* ½èÍý½ªÎ» */ } TASK(Task_bg){ while(1){ if(ecrobot_get_touch_sensor(PORT_TOUCH) == 1){ GetResource(resource1); nxt_motor_set_speed(L_MOTOR,-1*SPEED,1); nxt_motor_set_speed(R_MOTOR,-1*SPEED,1); systick_wait_ms(MOVE_TIME); nxt_motor_set_speed(L_MOTOR,SPEED,1); nxt_motor_set_speed(R_MOTOR,-1*SPEED,1); systick_wait_ms(TURN_TIME); nxt_motor_set_speed(L_MOTOR,0,1); nxt_motor_set_speed(R_MOTOR,0,1); ReleaseResource(resource1); } } TerminateTask(); } |
resource2.oil
#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 = FALSE; PRIORITY = 2; ACTIVATION = 1; RESOURCE = resource1; SCHEDULE = FULL; STACKSIZE = 512; }; TASK Task_bg /* Task_bg ¤òÄêµÁ */ { AUTOSTART = TRUE { APPMODE = appmode1; }; PRIORITY = 1; ACTIVATION = 1; RESOURCE = resource1; SCHEDULE = FULL; STACKSIZE = 512; }; COUNTER SysTimerCnt /* SysTimerCnt¤òÄêµÁ */ { MINCYCLE = 1; MAXALLOWEDVALUE = 10000; TICKSPERBASE = 1; /* One tick is equal to 1msec */ }; ALARM cyclic_alarm1 /* ¼þ´ü¥¢¥é¡¼¥à1¤òÄêµÁ */ { COUNTER = SysTimerCnt; ACTION = ACTIVATETASK { TASK = Task1; }; AUTOSTART = TRUE { ALARMTIME = 1; CYCLETIME = 10; /* Task1¤Ï10msec¤´¤È¤Ëµ¯Æ° */ APPMODE = appmode1; }; }; RESOURCE resource1 { RESOURCEPROPERTY = STANDARD; }; }; |
¥×¥í¥°¥é¥à¤òưºî¤µ¤»¤Æ¸«¤Þ¤·¤ç¤¦¡£
º£ÅÙ¤ÏÀµ¤·¤¯Æ°¤¯¤Ï¤º¤Ç¤¹¡£
¤½¤ì¤Ç¤Ï¡¢¿·¤·¤¯ÍѤ¤¤Æ¤¤¤ë´Ø¿ô¤Î²òÀâ¤ò¤·¤Æ¤¤¤¤Þ¤¹
¡¦ ¥½¡¼¥¹¥Õ¥¡¥¤¥ë
DeclareResource(resource1)
GetResource(resource1)
¥ê¥½¡¼¥¹¤òÀë¸À¤·¤Þ¤¹¡£
GetResource(resource1)
¥ê¥½¡¼¥¹¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó¤ËÆþ¤ê¤Þ¤¹¡£
ReleaseResource(resource1)
¥ê¥½¡¼¥¹¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥¯¥ê¥Æ¥£¥«¥ë¥»¥¯¥·¥ç¥ó¤«¤éÈ´¤±¤Þ¤¹¡£
¡¦ oil¥Õ¥¡¥¤¥ë
RESOURCE = resource1
RESOURCEPROPERTY = STANDARD
³ÍÆÀ¤¹¤ë¥ê¥½¡¼¥¹¤Î¥ê¥¹¥È¤Ç¤¹¡£¥ê¥½¡¼¥¹¤ò³ÍÆÀ¤·¤¨¤ë¥¿¥¹¥¯¤¹¤Ù¤Æ¤ËÄêµÁ¤·¤Þ¤¹¡£
RESOURCE resource1{¡Ä}
¥ê¥½¡¼¥¹¥ª¥Ö¥¸¥§¥¯¥È¤òÄêµÁ¤·¤Þ¤¹¡£
RESOURCEPROPERTY = STANDARD
STANDARD¤Î¤Û¤«¤Ë¡¢LINKED, INTERNAL¤¬»ØÄê¤Ç¤¤Þ¤¹¡£
Ä̾ï¤ÏSTANDARD¤ò»ÈÍѤ·¤Þ¤¹¡£
Ä̾ï¤ÏSTANDARD¤ò»ÈÍѤ·¤Þ¤¹¡£
¥×¥í¥°¥é¥à¤Îή¤ì¤Ï¤³¤¦¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

½ç¤òÄɤäÆÀâÌÀ¤¹¤ë¤È¡¢
¡Task_bg¤¬GetResource¤¹¤ë¤È¡¢Task_bg¤ÏÇÓ¾Ū½èÍý¤È¤Ê¤ë¡£
¢Task_bg¤ÏÇÓ¾Ū½èÍý¾õÂ֤ˤ¢¤ë¤Î¤Ç¡¢Task1¤Ï¼Â¹ÔÂÔ¤Á¤È¤Ê¤ë¡£
£Task_bg¤¬ReleaseResource¤¹¤ë¤È¡¢Ä̾ï¤Î½èÍý¤ËÌá¤ë¡£
¤Í¥ÀèÅ٤ι⤤Task1¤Ë¼Â¹Ô¸¢¤¬ÅϤµ¤ì¤ë¡£
¥Task1¤Î½èÍý¤¬½ª¤ï¤ë¤È¡¢Task_bg¤¬¼Â¹Ô¤µ¤ì¤ë¡£¤¢¤È¤ÏÉáÄÌ¤ÎÆ°ºî¤ò¤¹¤ë¡£
¢Task_bg¤ÏÇÓ¾Ū½èÍý¾õÂ֤ˤ¢¤ë¤Î¤Ç¡¢Task1¤Ï¼Â¹ÔÂÔ¤Á¤È¤Ê¤ë¡£
£Task_bg¤¬ReleaseResource¤¹¤ë¤È¡¢Ä̾ï¤Î½èÍý¤ËÌá¤ë¡£
¤Í¥ÀèÅ٤ι⤤Task1¤Ë¼Â¹Ô¸¢¤¬ÅϤµ¤ì¤ë¡£
¥Task1¤Î½èÍý¤¬½ª¤ï¤ë¤È¡¢Task_bg¤¬¼Â¹Ô¤µ¤ì¤ë¡£¤¢¤È¤ÏÉáÄÌ¤ÎÆ°ºî¤ò¤¹¤ë¡£
¥ê¥½¡¼¥¹¤ò¼èÆÀ¤¹¤ë¤È¡¢Â¾¤ÎTask¥ª¥Ö¥¸¥§¥¯¥È¤ÎÃæ¤Ç¥ê¥½¡¼¥¹¤ò»ØÄꤷ¤Æ¤¤¤ë¥¿¥¹¥¯¤Ï¼Â¹Ô¤µ¤ì¤Þ¤»¤ó¡£
¤³¤ì¤Ï¡¢¥ê¥½¡¼¥¹¤ò¼èÆÀ¤·¤¿ºÝ¤ËÍ¥ÀèÅÙ¤¬Â¾¤è¤ê¹â¤¯¤Ê¤ë¤³¤È¤Ë¤è¤ê¼Â¸½¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¥â¡¼¥¿¤Ê¤É¡¢Æ±¤¸»ñ¸»¤ò¶¦Í¤¹¤ë¥¿¥¹¥¯¤ËƱ¤¸¥ê¥½¡¼¥¹¤ò»ØÄꤷ¤Æ¤ª¤±¤Ð¡¢¥Þ¥ë¥Á¥¿¥¹¥¯¤Ë¤è¤ëÌäÂê¤òËɤ°¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¢¨ÉáÄ̤νèÍý·Ï¤Ë¤â¾Ü¤·¤¤Êý¤Ø
ÉáÄ̤νèÍý·Ï¤Ë¤ª¤¤¤ÆÇÓ¾À©¸æ¤ò¼Â¸½¤¹¤ë¤Ë¤Ï¡¢¥»¥Þ¥Õ¥©¤ä¥ß¥å¡¼¥Æ¥Ã¥¯¥¹¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£
nxtOSEK¤Î¾ì¹ç¡¢¥é¥¦¥ó¥É¥í¥Ó¥ó¤Ê¤É¤Îµ¡Ç½¤¬Ìµ¤¯¡¢¥¿¥¹¥¯ÀÚ¤êÂØ¤¨¤Î¥¿¥¤¥ß¥ó¥°¤¬ÌÀ³Î¤Ç¤¢¤ë°Ù¤«¤é¤«¡¢¥»¥Þ¥Õ¥©¤ä¥ß¥å¡¼¥Æ¥Ã¥¯¥¹¤Îµ¡Ç½¤ÏÄ󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
¤Þ¤¿¡¢Â¿½Åµ¯Æ°¤Ïoil¥Õ¥¡¥¤¥ëÃæ¤Î¥¿¥¹¥¯ÄêµÁ¤Ë¤è¤êËɻߤǤ¤ë¤¿¤á¡¢Â¿½Åµ¯Æ°Ëɻߤ¿¤á¤Ë¥ß¥å¡¼¥Æ¥Ã¥¯¥¹Åù¤òƳÆþ¤¹¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¡£
¤³¤ì¤¬¡¢OSEK¤ÎÆÃħ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤¿¤À¤·¡¢Get/ReleaseResource¤Ë¤è¤ëÇÓ¾À©¸æ¤Ï¡¢¥ß¥å¡¼¥Æ¥Ã¥¯¥¹¤ÈƱÅù¤ÎÌò³ä¤ò²Ì¤¿¤·¤Þ¤¹¡£
nxtOSEK¤Î¾ì¹ç¡¢¥é¥¦¥ó¥É¥í¥Ó¥ó¤Ê¤É¤Îµ¡Ç½¤¬Ìµ¤¯¡¢¥¿¥¹¥¯ÀÚ¤êÂØ¤¨¤Î¥¿¥¤¥ß¥ó¥°¤¬ÌÀ³Î¤Ç¤¢¤ë°Ù¤«¤é¤«¡¢¥»¥Þ¥Õ¥©¤ä¥ß¥å¡¼¥Æ¥Ã¥¯¥¹¤Îµ¡Ç½¤ÏÄ󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
¤Þ¤¿¡¢Â¿½Åµ¯Æ°¤Ïoil¥Õ¥¡¥¤¥ëÃæ¤Î¥¿¥¹¥¯ÄêµÁ¤Ë¤è¤êËɻߤǤ¤ë¤¿¤á¡¢Â¿½Åµ¯Æ°Ëɻߤ¿¤á¤Ë¥ß¥å¡¼¥Æ¥Ã¥¯¥¹Åù¤òƳÆþ¤¹¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¡£
¤³¤ì¤¬¡¢OSEK¤ÎÆÃħ¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£
¤¿¤À¤·¡¢Get/ReleaseResource¤Ë¤è¤ëÇÓ¾À©¸æ¤Ï¡¢¥ß¥å¡¼¥Æ¥Ã¥¯¥¹¤ÈƱÅù¤ÎÌò³ä¤ò²Ì¤¿¤·¤Þ¤¹¡£
3¡¥²ÝÂê
£±¡¥¾å¤Î2¤Ä¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤òNXT¤Ë¥À¥¦¥ó¥í¡¼¥É¤·¡¢Æ°ºî¤ò³Îǧ¤»¤è¡£
£²¡¥¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¥³¡¼¥¹¾å¤Ë¾ã³²Êª¤¬¤¢¤Ã¤¿¾ì¹ç¡¢180ÅÙÀû²ó¤·¤Æ¡¢µÕÊý¸þ¤Ë¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤»¤è¡£
£²¡¥¥é¥¤¥ó¥È¥ì¡¼¥¹¤¹¤ë¥³¡¼¥¹¾å¤Ë¾ã³²Êª¤¬¤¢¤Ã¤¿¾ì¹ç¡¢180ÅÙÀû²ó¤·¤Æ¡¢µÕÊý¸þ¤Ë¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤»¤è¡£