在OIL文件中,始终包含一个名为“Implementation.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 Task1 */
TASK Task1
{
AUTOSTART = FALSE;
PRIORITY = 1; /* Smaller value means lower priority */
ACTIVATION = 1;
SCHEDULE = FULL;
STACKSIZE = 512; /* Stack size */
};
`
答案 0 :(得分:2)
"实施" section用于定义可以分配给" CPU"中相应属性的值范围。部分(即限制任务激活的最大数量,任务优先级等,以加速代码执行或减少代码大小或其他原因)。将软件应用程序从一个OSEK / VDX OS实现移植到另一个(例如Trampoline到Erika,Lejos到Trampoline等)时,这非常有用。
答案 1 :(得分:1)
希望这是您正在寻找的,这将有助于您理解OSEK / VDX RTOS
http://igm.univ-mlv.fr/~masson/Teaching/IMC5-1EO/osek.pdf
刚刚发现它将从Vector中寻找OIL配置工具用户手册。学分归于大学:/
答案 2 :(得分:1)
好吧,如果有人有兴趣,这就是implementation.oil文件的样子:
IMPLEMENTATION trampoline {
OS {
ENUM [STANDARD, EXTENDED] STATUS;
BOOLEAN STARTUPHOOK = FALSE;
BOOLEAN ERRORHOOK = FALSE;
BOOLEAN SHUTDOWNHOOK = FALSE;
BOOLEAN PRETASKHOOK = FALSE;
BOOLEAN POSTTASKHOOK = FALSE;
BOOLEAN USEGETSERVICEID = FALSE;
BOOLEAN USEPARAMETERACCESS = FALSE;
BOOLEAN USERESSCHEDULER = TRUE;
BOOLEAN SYSTEM_CALL = FALSE;
BOOLEAN DEBUG = FALSE;
BOOLEAN INTERRUPTTABLE = FALSE;
BOOLEAN PACKED_DATA = FALSE;
IDENTIFIER SCHEDULER = osek;
BOOLEAN [
TRUE {
ENUM [
elxr { STRING SCRIPT = "script.ld"; },
gnu_ld { STRING SCRIPT = "script.ld"; },
mwld { STRING SCRIPT = "script.mcf"; }
] LINKER;
ENUM [gcc, ghs, mwc] COMPILER;
ENUM [gnu_as] ASSEMBLER;
BOOLEAN MEMORY_PROTECTION = FALSE;
},
FALSE
] MEMMAP = FALSE;
BOOLEAN [
TRUE {
STRING APP_SRC[];
STRING CFLAGS[];
STRING CPPFLAGS[];
STRING ASFLAGS[];
STRING LDFLAGS[];
STRING APP_NAME[];
STRING COMPILER[];
STRING ASSEMBLER[];
STRING LINKER[];
},
FALSE
] BUILD = FALSE;
BOOLEAN [
TRUE {
ENUM [ FILE { STRING NAME; } ] METHOD;
ENUM [xml, txt, bin] FORMAT;
BOOLEAN TRACE_TASK = TRUE;
BOOLEAN TRACE_ISR = TRUE;
BOOLEAN TRACE_RESOURCE = TRUE;
BOOLEAN TRACE_ALARM = TRUE;
BOOLEAN TRACE_USER = TRUE;
BOOLEAN DESCRIPTION = TRUE;
},
FALSE
] TRACE = FALSE;
};
APPMODE {
};
TASK {
BOOLEAN [
TRUE {
APPMODE_TYPE APPMODE[];
},
FALSE
] AUTOSTART;
UINT32 PRIORITY;
UINT32 ACTIVATION;
ENUM [NON, FULL] SCHEDULE;
EVENT_TYPE EVENT[];
RESOURCE_TYPE RESOURCE[];
MESSAGE_TYPE MESSAGE[];
UINT32 STACKSIZE = 2000 ;
};
ISR {
UINT32 [1, 2] CATEGORY;
RESOURCE_TYPE RESOURCE[];
MESSAGE_TYPE MESSAGE[];
UINT32 PRIORITY;
UINT32 STACKSIZE = 2000 ;
};
COUNTER {
UINT32 MINCYCLE;
UINT32 MAXALLOWEDVALUE;
UINT32 TICKSPERBASE;
};
ALARM {
COUNTER_TYPE COUNTER;
ENUM [
ACTIVATETASK {
TASK_TYPE TASK;
},
SETEVENT {
TASK_TYPE TASK;
EVENT_TYPE EVENT;
}
] ACTION;
BOOLEAN [
TRUE {
UINT32 ALARMTIME;
UINT32 CYCLETIME;
APPMODE_TYPE APPMODE[];
},
FALSE
] AUTOSTART;
};
EVENT {
UINT64 WITH_AUTO MASK;
};
RESOURCE {
ENUM [
STANDARD,
LINKED {
RESOURCE_TYPE LINKEDRESOURCE;
},
INTERNAL
] RESOURCEPROPERTY;
};
MESSAGE {
ENUM [
SEND_STATIC_INTERNAL {
STRING CDATATYPE;
},
RECEIVE_UNQUEUED_INTERNAL {
MESSAGE_TYPE SENDINGMESSAGE;
UINT64 INITIALVALUE = 0;
},
RECEIVE_QUEUED_INTERNAL {
MESSAGE_TYPE SENDINGMESSAGE;
UINT32 QUEUESIZE;
}
] MESSAGEPROPERTY;
ENUM [
NONE,
ACTIVATETASK {
TASK_TYPE TASK;
},
SETEVENT {
TASK_TYPE TASK;
EVENT_TYPE EVENT;
},
COMCALLBACK {
STRING CALLBACKROUTINENAME;
MESSAGE_TYPE MESSAGE[];
},
FLAG {
STRING FLAGNAME;
}
] NOTIFICATION = NONE;
};
COM {
BOOLEAN COMERRORHOOK = FALSE;
BOOLEAN COMUSEGETSERVICEID = FALSE;
BOOLEAN COMUSEPARAMETERACCESS = FALSE;
BOOLEAN COMSTARTCOMEXTENSION = FALSE;
STRING COMAPPMODE[];
ENUM [
COMSTANDARD,
COMEXTENDED
] COMSTATUS = COMSTANDARD;
};
NM {
};
};