【问题标题】:Osek Implementation languageOsek 实现语言
【发布时间】:2014-09-05 08:22:56
【问题描述】:

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

【问题讨论】:

  • 谷歌搜索'#include "implementation.oil"' 发现这通常是指“特定平台的系统对象规范”。因此,它是特定于一组目标硬件的文件。
  • 谢谢你,罗斯,但我正在寻找一个能够真正理解这个文件应该包含什么的例子。

标签: embedded standards rtos language-implementation


【解决方案1】:

“IMP​​LEMENTATION”部分用于定义可以分配给“CPU”部分中相应属性的值范围(即限制任务激活的最大数量、任务优先级等,以加快代码执行或减少代码大小或其他一些原因)。这在将软件应用程序从一个 OSEK/VDX 操作系统实现移植到另一个(例如 Trampoline 到 Erika、Lejos 到 Trampoline 等)时很有用。

【讨论】:

    【解决方案2】:

    希望这是您正在寻找的,这将有助于您了解 OSEK/VDX RTOS

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

    刚发现它会从 Vector 中寻找 OIL 配置工具用户手册。归功于大学:/

    【讨论】:

      【解决方案3】:

      好吧,如果有人感兴趣,下面是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 {
           };
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-19
        • 2012-03-11
        • 2012-06-07
        • 2011-01-21
        • 2015-05-16
        • 2011-05-09
        相关资源
        最近更新 更多