rma-compcert.aadl 2.16 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
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
103
104
105
106
--  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;

-----------------
-- 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;
   Compute_Execution_time             => 0 ms .. 3 ms;
   Deadline                           => 1000 ms;
   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;
   Compute_Execution_time             => 0 ms .. 3 ms;
   Deadline                           => 500 ms;
   Priority => 2;
end Task.impl_2;

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

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

processor implementation cpurm.impl
properties
   Scheduling_Protocol => (Posix_1003_Highest_Priority_First_Protocol);
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
   node_a : process node_a.impl;
   cpu_rm : processor cpurm.impl;
properties
   Actual_Processor_Binding => (reference (cpu_rm)) applies to node_a;
end rma.impl;

end RMAAadl;