OIL - OSEK Implementation Language 6 OIL - OSEK Implementation Language
OSEK Implementation Language A standard way to describe an OSEK system For static configuration of the OS Tailored to the needs of your application A textual description with a readable syntax OIL Specify OS Requirements Configure OS
OIL - A High-Level View Describes a set of system objects contained in a CPU
Why use OIL? An OSEK system is configured statically - OIL is the means of describing the configuration Only needed OS software is included OS overheads can be minimised A ‘high-level design’ of the application All objects and their relationships must be defined Provides ‘configuration management’ A system may be reconstructed from the OIL file Automated tools can verify the configuration
The OIL File Describes an entire OSEK application in a CPU Part 1: Implementation Definition Implementation-specific features of an OSEK-OS Example: Basic & extended tasks used, single activation only, one task per priority Part 2: Application Definition Structure and properties of application 17 tasks, 3 counters, 4 alarms, 6 resources, 5 events. Alarm3 activates Task4.
Example : An OS Implementation Definition OIL_VERSION = “2.0”; IMPLEMENTATION MyOwnImplementation { OS { INT [1..255] NON_SUSPENDED_TASKS; }; TASK { INT [1..256] PRIORITY; //Value range INT [1..24] ACTIVATION; //Value range INT STACKSIZE; } ISR { INT ISRSTACKSIZE; ALARM { BOOLEAN START; BOOLEAN CYCLIC; EVENT { INT WITH_AUTO [1..256] MASK; //Value range
Application Definition Structure and properties of a specific application Operating System Tasks Counters Alarms Resources Events ISRs … CC Conformance Class STATUS Error Checking SCHEDULE Preemption Hook Routines // OIL-Definition-File OIL_VERSION = "2.0"; CPU Sample_CPU1 { OS StdOS { CC = ECC2; STATUS = EXTENDED; SCHEDULE = MIXED; StartupHook = TRUE; ErrorHook = TRUE; ShutdownHook = TRUE; PreTaskHook = TRUE; PostTaskHook = TRUE; SYSTEMSTACKSIZE = 512; };
Tasks For each task, by task name TYPE Basic or Extended PRIORITY SCHEDULE Preemption ? ACTIVATION Maximum Activations AUTOSTART … At System Startup? RESOURCE List those used by Task EVENT List those of Task ... TASK extendedTaskOne { TYPE = EXTENDED; SCHEDULE = FULL; PRIORITY = 1; ACTIVATION = 1; AUTOSTART = TRUE; APPMODE = {Mode0}; STACKSIZE = 32; EVENT = {evt1}; };
Events and Counters For each Event For each Counter MASK Bit Pattern or AUTO For each Counter MAXALLOWEDVALUE TICKSPERBASE (Interpretation is up to user) MINCYCLE Minimum ticks for cyclic alarm EVENT event1 { MASK = 0x04; }; EVENT event2 { MASK = AUTO; } COUNTER SYSTEM_COUNTER { MAXALLOWEDVALUE = 65535; TICKSPERBASE = 1000000; MINCYCLE = 1; };
Alarms For each Alarm COUNTER ACTION Activate Task or Set Event TASK Task to be Notified EVENT (If Action is to Set Event) EVENT evt1 { MASK = AUTO; }; COUNTER SYSTEM_COUNTER { MAXALLOWEDVALUE = 65535; TICKSPERBASE = 1000000; MINCYCLE = 1; ALARM relalarm1 { COUNTER = SYSTEM_COUNTER; ACTION = SETEVENT; TASK = extendedTaskOne; EVENT = evt1;
Interrupt Service Routines For each Interrupt Service Routine CATEGORY 1, 2, or 3 No standard attributes for MESSAGE Objects COM Objects NM Objects OSEKWorks has defined extenstions for these! ISR TimerInterrupt { CATEGORY = 3; };
OSEKWorks Extensions Each implementation of OSEK can define extensions OSEKWorks defines the following to optimise the kernel: SCHEDULE_CALL = {TRUE|FALSE} FPU = {TRUE|FALSE} OSEKWorks Only
Automated OIL Tools OSEKWorks provides some tools for Graphical configuration of OIL files Verification of OIL Automatic initialisation of OS data structures from description of application services in OIL Stack size Priority ceiling of each resource ID’s for all objects AUTO attributes (e.g. conformance class) OSEKWorks Only
OSEK Development Process (recap) Design Automation Tools (e.g. MATRIXx, BetterState) OR Hand Code C Code Compile Link OIL Files Optimized OSEK Kernel Application Software OIL Reader OSEKWorks OIL Configurator Network Management Kernel OSEK Run-time Components (e.g. OSEKWorks) Communication OSEKWorks Only
OSEKWorks OIL Configurator Graphical tool to configure and optimise OSEKWorks for an application. Key Features Intuitive GUI for displaying & editing system OIL files Integrated framework for creating a system level OIL file (from multiple files) System-level analysis Tabular, Graphical & File views Software design tool-aware OSEKWorks Only