rma.aadl 2.58 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
--  This AADL model illustrates how to conduct schedulability analysis
--  using Cheddar, and then code generation of periodic tasks.
--
--  Two periodic tasks run in parrallel, without interaction. Tasks
--  parameters allows RMA analysis
--
--  $Id: rma.aadl 370 2007-04-23 14:54:41Z hugues $

package RMAAadl
public
  with Deployment;

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
  -----------------
  -- Subprograms --
  -----------------

  subprogram Hello_Spg_1
  properties
    source_language => C;
    source_name     => "user_Hello_Spg_1";
    source_text     => ("hello.c");
  end Hello_Spg_1;

  subprogram Hello_Spg_2
  properties
    source_language => C;
    source_name     => "user_Hello_Spg_2";
    source_text     => ("hello.c");
  end Hello_Spg_2;

  -------------
  -- Threads --
  -------------

  thread Task
  end Task;

  thread implementation Task.impl_1
  calls
    Mycalls: {
    P_Spg : subprogram Hello_Spg_1;
    };
  properties
    Dispatch_Protocol                  => periodic;
    Period                             => 1000ms;
    Priority => 1;
  end Task.impl_1;

  thread implementation Task.impl_2
  calls
    Mycalls: {
    P_Spg : subprogram Hello_Spg_2;
    };
  properties
    Dispatch_Protocol                  => periodic;
    Period                             => 500ms;
    Priority => 2;
  end Task.impl_2;

  ---------------
  -- Processor --
  ---------------

  processor cpurm
  properties
    Deployment::Execution_Platform => native;
  end cpurm;

  processor implementation cpurm.impl
  properties
    Scheduling_Protocol => (Posix_1003_Highest_Priority_First_Protocol);
    Priority_Range => 0 .. 255;
  end cpurm.impl;

  ---------------
  -- Processes --
  ---------------

  process node_a
  end node_a;

  process implementation node_a.impl
  subcomponents
    Task1 : thread Task.impl_1;
    Task2 : thread Task.impl_2;
  end node_a.impl;

  ------------
  -- System --
  ------------

  system rma
  end rma;

  system implementation rma.impl
  subcomponents
    rma : process node_a.impl;
    cpu_rm : processor cpurm.impl;
  properties
    Actual_Processor_Binding => (reference (cpu_rm)) applies to rma;
  end rma.impl;

103
104
105
106
107
108
  system implementation rma.compcert
  extends rma.impl
  properties
    Deployment::Execution_Platform => native_compcert applies to cpu_rm;
  end rma.compcert;

109
110
111
112
113
114
115
116
117
  system implementation rma.Xenomai
  extends rma.impl
  properties
    Deployment::Execution_Platform => linux32_xenomai_native applies to cpu_rm;
  end rma.Xenomai;

  system implementation rma.RTEMS
  extends rma.impl
  properties
yoogx's avatar
yoogx committed
118
    Deployment::Execution_platform => LEON_RTEMS_POSIX applies to cpu_rm;
119
  end rma.RTEMS;
120
121

end RMAAadl;