Osek实施语言

时间:2014-09-05 08:22:57

标签: embedded standards rtos language-implementation

在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 */ 
  };
`

3 个答案:

答案 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 {
     };
};
相关问题