| <?xml version="1.0" encoding="UTF-8"?> |
| <am:Amalthea xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:am="http://app4mc.eclipse.org/amalthea/3.1.0"> |
| <swModel> |
| <tasks xmi:id="TaskA1?type=Task" name="TaskA1" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskB1?type=Task" name="TaskB1" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskC1?type=Task" name="TaskC1" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskD1?type=Task" name="TaskD1" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskA2?type=Task" name="TaskA2" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskB2?type=Task" name="TaskB2" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskC2?type=Task" name="TaskC2" multipleTaskActivationLimit="0"/> |
| <tasks xmi:id="TaskD2?type=Task" name="TaskD2" multipleTaskActivationLimit="0"/> |
| </swModel> |
| <hwModel> |
| <definitions xsi:type="am:ProcessingUnitDefinition" xmi:id="Core_Definition?type=ProcessingUnitDefinition" name="Core_Definition" puType="CPU"/> |
| <structures xmi:id="System?type=HwStructure" name="System" structureType="System"> |
| <structures xmi:id="ECU?type=HwStructure" name="ECU" structureType="ECU"> |
| <modules xsi:type="am:ProcessingUnit" xmi:id="CoreA?type=ProcessingUnit" name="CoreA" frequencyDomain="Main_Freq_Domain?type=FrequencyDomain" definition="Core_Definition?type=ProcessingUnitDefinition"/> |
| <modules xsi:type="am:ProcessingUnit" xmi:id="CoreB?type=ProcessingUnit" name="CoreB" frequencyDomain="Main_Freq_Domain?type=FrequencyDomain" definition="Core_Definition?type=ProcessingUnitDefinition"/> |
| </structures> |
| </structures> |
| <domains xsi:type="am:FrequencyDomain" xmi:id="Main_Freq_Domain?type=FrequencyDomain" name="Main_Freq_Domain" clockGating="false"> |
| <defaultValue value="200.0" unit="MHz"/> |
| </domains> |
| </hwModel> |
| <osModel> |
| <operatingSystems name=""> |
| <taskSchedulers xmi:id="Priority+Based+Round+Robin?type=TaskScheduler" name="Priority Based Round Robin" definition="PriorityBasedRoundRobin?type=SchedulerDefinition"/> |
| <taskSchedulers xmi:id="OSEKA?type=TaskScheduler" name="OSEKA" definition="OSEK?type=SchedulerDefinition"> |
| <parentAssociation parent="Priority+Based+Round+Robin?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="20"/> |
| </schedulingParameters> |
| </parentAssociation> |
| </taskSchedulers> |
| <taskSchedulers xmi:id="OSEKB?type=TaskScheduler" name="OSEKB" definition="OSEK?type=SchedulerDefinition"> |
| <parentAssociation parent="Priority+Based+Round+Robin?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="15"/> |
| </schedulingParameters> |
| </parentAssociation> |
| </taskSchedulers> |
| <taskSchedulers xmi:id="OSEKC?type=TaskScheduler" name="OSEKC" definition="OSEK?type=SchedulerDefinition"> |
| <parentAssociation parent="Priority+Based+Round+Robin?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="5"/> |
| </schedulingParameters> |
| </parentAssociation> |
| </taskSchedulers> |
| <taskSchedulers xmi:id="OSEKD?type=TaskScheduler" name="OSEKD" definition="OSEK?type=SchedulerDefinition"> |
| <parentAssociation parent="Priority+Based+Round+Robin?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="10"/> |
| </schedulingParameters> |
| </parentAssociation> |
| </taskSchedulers> |
| </operatingSystems> |
| <schedulerDefinitions xmi:id="OSEK?type=SchedulerDefinition" name="OSEK" description="OSEK compliant Scheduling. A fixed priority preemptive scheduling algorithm
with task groups. Tasks belonging to the same task group are scheduled
cooperatively (they do not preempt each other), preemptive otherwise.
Tasks with the same priority also behave cooperatively.

Algorithm parameters
 -

Process parameters
 - priority [1] Integer
 The priority of the process (a higher value means a higher priority).
 - taskGroup [1] Integer
 The OSEK task group number (if for two processes the number is equal,
 that means they are in the same task group).

Options:
 -

Reference:
 - TODO" processParameters="priority?type=SchedulingParameterDefinition taskGroup?type=SchedulingParameterDefinition" requiresParentScheduler="false" passesParametersUpwards="false" hasExactlyOneChild="false"/> |
| <schedulerDefinitions xmi:id="PriorityBasedRoundRobin?type=SchedulerDefinition" name="PriorityBasedRoundRobin" description="Round Robin scheduling algorithm assigns equally sized time slices
to each process that it schedules. The priority describes the order
in which the processes will be executed. If two processes have the
same priority, the order of these two is random (non-deterministic).

Algorithm parameters
 - timeSliceLength [1] Time
 Length of each time slice.

Process parameters
 - priority [1] Integer
 The priority of the process (a higher value means a higher priority).

Options:
 -

Reference:
 - TODO" algorithmParameters="timeSliceLength?type=SchedulingParameterDefinition" processParameters="priority?type=SchedulingParameterDefinition" requiresParentScheduler="false" passesParametersUpwards="false" hasExactlyOneChild="false"/> |
| <schedulingParameterDefinitions xmi:id="priority?type=SchedulingParameterDefinition" name="priority" type="Integer" many="false" mandatory="true"/> |
| <schedulingParameterDefinitions xmi:id="taskGroup?type=SchedulingParameterDefinition" name="taskGroup" type="Integer" many="false" mandatory="true"/> |
| <schedulingParameterDefinitions xmi:id="timeSliceLength?type=SchedulingParameterDefinition" name="timeSliceLength" type="Time" many="false" mandatory="true"/> |
| </osModel> |
| <mappingModel> |
| <schedulerAllocation scheduler="Priority+Based+Round+Robin?type=TaskScheduler" responsibility="CoreA?type=ProcessingUnit CoreB?type=ProcessingUnit" executingPU="CoreA?type=ProcessingUnit"/> |
| <schedulerAllocation scheduler="OSEKA?type=TaskScheduler" responsibility="CoreA?type=ProcessingUnit" executingPU="CoreA?type=ProcessingUnit"/> |
| <schedulerAllocation scheduler="OSEKB?type=TaskScheduler" responsibility="CoreA?type=ProcessingUnit" executingPU="CoreA?type=ProcessingUnit"/> |
| <schedulerAllocation scheduler="OSEKC?type=TaskScheduler" responsibility="CoreB?type=ProcessingUnit" executingPU="CoreB?type=ProcessingUnit"/> |
| <schedulerAllocation scheduler="OSEKD?type=TaskScheduler" responsibility="CoreB?type=ProcessingUnit" executingPU="CoreB?type=ProcessingUnit"/> |
| <taskAllocation task="TaskA1?type=Task" scheduler="OSEKA?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="5"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskA2?type=Task" scheduler="OSEKA?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="15"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskB1?type=Task" scheduler="OSEKB?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="10"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskB2?type=Task" scheduler="OSEKB?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="50"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskC1?type=Task" scheduler="OSEKC?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="40"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskC2?type=Task" scheduler="OSEKC?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="20"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskD1?type=Task" scheduler="OSEKD?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="25"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <taskAllocation task="TaskD2?type=Task" scheduler="OSEKD?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="55"/> |
| </schedulingParameters> |
| </taskAllocation> |
| </mappingModel> |
| </am:Amalthea> |