| <?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/2.1.0"> |
| <swModel> |
| <tasks xmi:id="Task_5MS?type=Task" name="Task_5MS" stimuli="Timer_5MS?type=PeriodicStimulus" preemption="preemptive" multipleTaskActivationLimit="10"> |
| <activityGraph> |
| <items xsi:type="am:RunnableCall" runnable="runnable_dispatch?type=Runnable"/> |
| </activityGraph> |
| </tasks> |
| <runnables xmi:id="runnable_dispatch?type=Runnable" name="runnable_dispatch" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="100"/> |
| </items> |
| <items xsi:type="am:ModeSwitch"> |
| <entries name="case_A"> |
| <items xsi:type="am:RunnableCall" runnable="runnable_a?type=Runnable"/> |
| <condition> |
| <entries xsi:type="am:ModeLabelCondition" relation="EQUAL" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_1?type=ModeLabel"/> |
| </condition> |
| </entries> |
| <entries name="case_B_or_C"> |
| <items xsi:type="am:ModeSwitch"> |
| <entries name="case_b"> |
| <items xsi:type="am:RunnableCall" runnable="runnable_b?type=Runnable"/> |
| <condition> |
| <entries xsi:type="am:ModeLabelCondition" relation="LESS_THAN" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_3?type=ModeLabel"/> |
| </condition> |
| </entries> |
| <entries name="case_c"> |
| <items xsi:type="am:RunnableCall" runnable="runnable_c?type=Runnable"/> |
| <condition> |
| <entries xsi:type="am:ModeLabelCondition" relation="GREATER_THAN" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_2?type=ModeLabel"/> |
| </condition> |
| </entries> |
| <defaultEntry> |
| <items xsi:type="am:RunnableCall" runnable="runnable_error?type=Runnable"/> |
| </defaultEntry> |
| </items> |
| <condition> |
| <entries xsi:type="am:ModeLabelCondition" relation="EQUAL" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_2?type=ModeLabel"/> |
| <entries xsi:type="am:ModeLabelCondition" relation="EQUAL" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_3?type=ModeLabel"/> |
| </condition> |
| </entries> |
| <entries name="case_D_and_D"> |
| <items xsi:type="am:RunnableCall" runnable="runnable_d_and_d?type=Runnable"/> |
| <condition> |
| <entries xsi:type="am:ModeConditionConjunction"> |
| <entries xsi:type="am:ModeLabelCondition" relation="EQUAL" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_4?type=ModeLabel"/> |
| <entries xsi:type="am:ModeLabelCondition" relation="GREATER_THAN" label1="modelabel2?type=ModeLabel" label2="modelabel_fix_3?type=ModeLabel"/> |
| <entries xsi:type="am:ModeLabelCondition" relation="LESS_THAN" label1="modelabel2?type=ModeLabel" label2="modelabel_fix_5?type=ModeLabel"/> |
| </entries> |
| </condition> |
| </entries> |
| <entries name="case_D_and_notD"> |
| <items xsi:type="am:RunnableCall" runnable="runnable_d_and_not_d?type=Runnable"/> |
| <condition> |
| <entries xsi:type="am:ModeConditionConjunction"> |
| <entries xsi:type="am:ModeLabelCondition" relation="EQUAL" label1="modelabel1?type=ModeLabel" label2="modelabel_fix_4?type=ModeLabel"/> |
| <entries xsi:type="am:ModeLabelCondition" relation="NOT_EQUAL" label1="modelabel2?type=ModeLabel" label2="modelabel_fix_4?type=ModeLabel"/> |
| </entries> |
| </condition> |
| </entries> |
| <entries name="case_Done"> |
| <items xsi:type="am:RunnableCall" runnable="runnable_done?type=Runnable"/> |
| <condition> |
| <entries xsi:type="am:ModeConditionConjunction"> |
| <entries xsi:type="am:ModeLabelCondition" relation="EQUAL" label1="modelabel1?type=ModeLabel" label2="modelabel_done_fix_neg1?type=ModeLabel"/> |
| <entries xsi:type="am:ModeLabelCondition" relation="LESS_THAN" label1="modelabel2?type=ModeLabel" label2="modelabel_fix_1?type=ModeLabel"/> |
| </entries> |
| </condition> |
| </entries> |
| <defaultEntry> |
| <items xsi:type="am:RunnableCall" runnable="runnable_error?type=Runnable"/> |
| </defaultEntry> |
| </items> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_a?type=Runnable" name="runnable_a" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Group" name="group_a" ordered="true" interruptible="true"> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="500000"/> |
| </items> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel1?type=ModeLabel" access="increment" value="" step="1"/> |
| </items> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_b?type=Runnable" name="runnable_b" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="500000"/> |
| </items> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel1?type=ModeLabel" access="increment" value="" step="1"/> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_c?type=Runnable" name="runnable_c" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="500000"/> |
| </items> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel1?type=ModeLabel" access="increment" value="" step="1"/> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_d_and_d?type=Runnable" name="runnable_d_and_d" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="500000"/> |
| </items> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel2?type=ModeLabel" access="set" value="-1" step="1"/> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_d_and_not_d?type=Runnable" name="runnable_d_and_not_d" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="500000"/> |
| </items> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel1?type=ModeLabel" access="decrement" value="" step="5"/> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_done?type=Runnable" name="runnable_done" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="900000"/> |
| </items> |
| </activityGraph> |
| </runnables> |
| <runnables xmi:id="runnable_error?type=Runnable" name="runnable_error" callback="false" service="false"> |
| <activityGraph> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel1?type=ModeLabel" access="decrement" value="" step="100"/> |
| <items xsi:type="am:ModeLabelAccess" data="modelabel2?type=ModeLabel" access="decrement" value="" step="100"/> |
| <items xsi:type="am:Ticks"> |
| <default xsi:type="am:DiscreteValueConstant" value="900000"/> |
| </items> |
| </activityGraph> |
| </runnables> |
| <modes xsi:type="am:NumericMode" xmi:id="numericMode?type=NumericMode" name="numericMode"/> |
| <modeLabels xmi:id="modelabel1?type=ModeLabel" name="modelabel1" mode="numericMode?type=NumericMode" initialValue="1"> |
| <size value="100" unit="kbit"/> |
| </modeLabels> |
| <modeLabels xmi:id="modelabel2?type=ModeLabel" name="modelabel2" mode="numericMode?type=NumericMode" initialValue="4"/> |
| <modeLabels xmi:id="modelabel_fix_1?type=ModeLabel" name="modelabel_fix_1" mode="numericMode?type=NumericMode" initialValue="1"/> |
| <modeLabels xmi:id="modelabel_fix_2?type=ModeLabel" name="modelabel_fix_2" mode="numericMode?type=NumericMode" initialValue="2"/> |
| <modeLabels xmi:id="modelabel_fix_3?type=ModeLabel" name="modelabel_fix_3" mode="numericMode?type=NumericMode" initialValue="3"/> |
| <modeLabels xmi:id="modelabel_fix_4?type=ModeLabel" name="modelabel_fix_4" mode="numericMode?type=NumericMode" initialValue="4"/> |
| <modeLabels xmi:id="modelabel_fix_5?type=ModeLabel" name="modelabel_fix_5" mode="numericMode?type=NumericMode" initialValue="5"/> |
| <modeLabels xmi:id="modelabel_done_fix_neg1?type=ModeLabel" name="modelabel_done_fix_neg1" mode="numericMode?type=NumericMode" initialValue="-1"/> |
| <modeLabels xmi:id="modelabel_error_fix_neg10?type=ModeLabel" name="modelabel_error_fix_neg10" mode="numericMode?type=NumericMode" initialValue="-10"/> |
| </swModel> |
| <hwModel> |
| <definitions xsi:type="am:ProcessingUnitDefinition" xmi:id="DefaultCore?type=ProcessingUnitDefinition" name="DefaultCore" puType="CPU"/> |
| <definitions xsi:type="am:MemoryDefinition" xmi:id="DefaultMemory?type=MemoryDefinition" name="DefaultMemory"> |
| <size value="4" unit="MB"/> |
| <accessLatency xsi:type="am:DiscreteValueConstant" value="2"/> |
| <dataRate value="1" unit="GiBPerSecond"/> |
| </definitions> |
| <structures xmi:id="Democar?type=HwStructure" name="Democar" structureType="System"> |
| <structures xmi:id="ECU_1?type=HwStructure" name="ECU_1" structureType="ECU"> |
| <structures xmi:id="Microcontroller_1?type=HwStructure" name="Microcontroller_1" structureType="Microcontroller"> |
| <modules xsi:type="am:Memory" xmi:id="Mem_1?type=Memory" name="Mem_1" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultMemory?type=MemoryDefinition"> |
| <ports xmi:id="Mem_1/portMem_1?type=HwPort" name="portMem_1" bitWidth="32" priority="0" portType="responder" portInterface="custom"/> |
| </modules> |
| <modules xsi:type="am:ProcessingUnit" xmi:id="Core_1?type=ProcessingUnit" name="Core_1" frequencyDomain="FrequencyDomain_1?type=FrequencyDomain" definition="DefaultCore?type=ProcessingUnitDefinition"> |
| <ports xmi:id="Core_1/portCore_1?type=HwPort" name="portCore_1" bitWidth="32" priority="0" portType="initiator" portInterface="custom"/> |
| <accessElements name="memAccess" destination="Mem_1?type=Memory"> |
| <accessPath name="accessPath_Core1_Mem1" pathElements="Microcontroller_1/con1?type=HwConnection" startAddress="0x0" endAddress="0x0" memOffset="0x0"/> |
| <readLatency xsi:type="am:DiscreteValueConstant" value="2"/> |
| <writeLatency xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="3" upperBound="23" average="5.0" pRemainPromille="1.0"/> |
| <dataRate value="1" unit="GiBPerSecond"/> |
| </accessElements> |
| </modules> |
| <connections xmi:id="Microcontroller_1/con1?type=HwConnection" name="con1" port1="Core_1/portCore_1?type=HwPort" port2="Mem_1/portMem_1?type=HwPort"> |
| <readLatency xsi:type="am:DiscreteValueConstant" value="5"/> |
| <writeLatency xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="2" upperBound="23" average="5.0" pRemainPromille="1.0"/> |
| <dataRate value="1" unit="GiBPerSecond"/> |
| </connections> |
| </structures> |
| </structures> |
| </structures> |
| <domains xsi:type="am:FrequencyDomain" xmi:id="FrequencyDomain_1?type=FrequencyDomain" name="FrequencyDomain_1" clockGating="false"> |
| <defaultValue value="200.0" unit="MHz"/> |
| </domains> |
| </hwModel> |
| <osModel> |
| <operatingSystems name="OperatingSystem"> |
| <taskSchedulers xmi:id="Task_Scheduler_Core_1?type=TaskScheduler" name="Task_Scheduler_Core_1" definition="FixedPriorityPreemptive?type=SchedulerDefinition"/> |
| </operatingSystems> |
| <schedulerDefinitions xmi:id="FixedPriorityPreemptive?type=SchedulerDefinition" name="FixedPriorityPreemptive" description="Fixed Priority Preemptive Scheduling (e.g. AUTOSAR),
same as OSEK but without task groups.

Algorithm parameters:
 -

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

Options:
 -

Reference:
 - Liu, Chung Laung, and James W. Layland (1973).
 "Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment"
 Journal of the ACM (JACM) 20.1 (1973): 46-61.
" processParameters="priority?type=SchedulingParameterDefinition" requiresParentScheduler="false" passesParametersUpwards="false" hasExactlyOneChild="false"/> |
| <schedulingParameterDefinitions xmi:id="priority?type=SchedulingParameterDefinition" name="priority" type="Integer" many="false" mandatory="true"/> |
| </osModel> |
| <stimuliModel> |
| <stimuli xsi:type="am:PeriodicStimulus" xmi:id="Timer_5MS?type=PeriodicStimulus" name="Timer_5MS"> |
| <recurrence value="5" unit="ms"/> |
| <offset value="0" unit="ms"/> |
| </stimuli> |
| </stimuliModel> |
| <mappingModel> |
| <schedulerAllocation scheduler="Task_Scheduler_Core_1?type=TaskScheduler" responsibility="Core_1?type=ProcessingUnit" executingPU="Core_1?type=ProcessingUnit"/> |
| <taskAllocation task="Task_5MS?type=Task" scheduler="Task_Scheduler_Core_1?type=TaskScheduler"> |
| <schedulingParameters key="priority?type=SchedulingParameterDefinition"> |
| <value xsi:type="am:IntegerObject" value="3"/> |
| </schedulingParameters> |
| </taskAllocation> |
| <memoryMapping abstractElement="modelabel1?type=ModeLabel" memory="Mem_1?type=Memory" memoryPositionAddress="0x0"/> |
| <memoryMapping abstractElement="modelabel2?type=ModeLabel" memory="Mem_1?type=Memory" memoryPositionAddress="0x0"/> |
| </mappingModel> |
| </am:Amalthea> |