0

В файлах OIL всегда есть файл с названием «Реализация.Ойл», который включен. Я не могу найти ничего, что объясняет, что делает этот файл! Ее пример: `Osek Язык реализации

#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

Поиск google-реализации #include.oil «находит», что чаще всего это относится к «спецификации системных объектов для конкретной платформы». Таким образом, это файл, специфичный для отдельного набора целевого оборудования. – Ross

+0

Спасибо, Росс, но я ищу пример, чтобы понять, что должен содержать этот файл. –

ответ

2

В разделе «РЕАЛИЗАЦИЯ» используется для определения диапазона значений, которые могут быть присвоенный соответствующему атрибуту в разделе «ЦП» (т. е. ограничение максимального количества активизации задач, приоритетов задач и т. д., чтобы ускорить выполнение кода или уменьшить размер кода или по какой-либо другой причине). Это полезно при переносе программного приложения из одной версии OSEK/VDX OS в другую (например, Trampoline в Erika, Lejos to Trampoline и т. Д.).

0

Надежда это то, что вы ищете, это должно помочь вам в понимании OSEK/VDX RTOS

http://igm.univ-mlv.fr/~masson/Teaching/IMC5-1EO/osek.pdf

Просто нашли это ищет конфигурации НЕФТИ инструмент Руководство пользователя из Vector. Заслуга в университет:/

1

Ну, если кому-то интересно, вот что выглядит файл implemntation.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 { 
    }; 
};