blob: ca8a8e43dc07924db27b2204fefe03d789e79ef1 [file] [log] [blame]
<?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&#xA;with task groups. Tasks belonging to the same task group are scheduled&#xA;cooperatively (they do not preempt each other), preemptive otherwise.&#xA;Tasks with the same priority also behave cooperatively.&#xA;&#xA;Algorithm parameters&#xA; -&#xA;&#xA;Process parameters&#xA; - priority [1] Integer&#xA; The priority of the process (a higher value means a higher priority).&#xA; - taskGroup [1] Integer&#xA; The OSEK task group number (if for two processes the number is equal,&#xA; that means they are in the same task group).&#xA;&#xA;Options:&#xA; -&#xA;&#xA;Reference:&#xA; - 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&#xA;to each process that it schedules. The priority describes the order&#xA;in which the processes will be executed. If two processes have the&#xA;same priority, the order of these two is random (non-deterministic).&#xA;&#xA;Algorithm parameters&#xA; - timeSliceLength [1] Time&#xA; Length of each time slice.&#xA;&#xA;Process parameters&#xA; - priority [1] Integer&#xA; The priority of the process (a higher value means a higher priority).&#xA;&#xA;Options:&#xA; -&#xA;&#xA;Reference:&#xA; - 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>