¤·¤«¤·¡¢¥Þ¥ë¥Á¥¿¥¹¥¯¤Î¥×¥í¥°¥é¥à¤òºî¤ëºÝ¤Ë¤Ï¡¢º£¤Þ¤Ç̵¤«¤Ã¤¿ÌäÂ꤬ȯÀ¸¤·¤Þ¤¹¡£
ºÇ¤âÂåɽŪ¤ÊÎ㤬¥¿¥¹¥¯¤¬Â¾¤Î¥¿¥¹¥¯¤Î¼Â¹Ô¤ò˸³²¤¹¤ë¤³¤È¤Ç¤¹¡£
¤½¤ì¤¬¤É¤ó¤Ê¤È¤È¯À¸¤¹¤ë¤«¡¢¤É¤¦²ò·è¤¹¤ë¤«¤ò³Ø¤Ó¤Þ¤¹¡£
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ÅÙÀû²ó¤·¤Æ¡¢µÕÊý¸þ¤Ë¥È¥ì¡¼¥¹¤¹¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤»¤è¡£