Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
Ocarina
Commits
ae96f77e
Commit
ae96f77e
authored
Dec 29, 2014
by
yoogx
Browse files
Merge branch 'master' of
https://github.com/yoogx/ocarina
parents
61425ccb
49105389
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/backends/ocarina-backends-deos_conf-mapping.adb
View file @
ae96f77e
...
...
@@ -988,7 +988,26 @@ package body Ocarina.Backends.Deos_Conf.Mapping is
pragma
Unreferenced
(
Buffers_Size
);
pragma
Unreferenced
(
Process
);
Partition_Node
:
Node_Id
;
Partition_Period
:
Time_Type
;
Partition_Duration
:
Time_Type
;
Period_Ns
:
Unsigned_Long_Long
;
Duration_Ns
:
Unsigned_Long_Long
;
begin
Partition_Period
:=
Get_Period
(
Runtime
);
Partition_Duration
:=
Get_Execution_Time
(
Runtime
);
if
Partition_Period
=
Null_Time
then
Period_Ns
:=
0
;
else
Period_Ns
:=
To_Nanoseconds
(
Partition_Period
);
end
if
;
if
Partition_Duration
=
Null_Time
then
Duration_Ns
:=
0
;
else
Duration_Ns
:=
To_Nanoseconds
(
Partition_Duration
);
end
if
;
Partition_Node
:=
Make_XML_Node
(
"Partition"
);
XTU
.
Add_Attribute
(
"Name"
,
...
...
@@ -1006,8 +1025,21 @@ package body Ocarina.Backends.Deos_Conf.Mapping is
XTU
.
Add_Attribute
(
"Identifier"
,
Trim
(
Integer
'
Image
(
Partition_Identifier
),
Left
),
Partition_Node
);
XTU
.
Add_Attribute
(
"Period"
,
"25000000"
,
Partition_Node
);
XTU
.
Add_Attribute
(
"Duration"
,
"6000000"
,
Partition_Node
);
XTU
.
Add_Attribute
(
"Period"
,
Trim
(
Unsigned_Long_Long
'
Image
(
Period_Ns
),
Left
)
&
"000000"
,
Partition_Node
);
XTU
.
Add_Attribute
(
"Duration"
,
Trim
(
Unsigned_Long_Long
'
Image
(
Duration_Ns
),
Left
)
&
"000000"
,
Partition_Node
);
XTU
.
Add_Attribute
(
"ExecutableImageName"
,
Get_Name_String
(
AIN
.
Name
...
...
src/backends/ocarina-backends-deos_conf-partitions.adb
View file @
ae96f77e
...
...
@@ -31,6 +31,8 @@
-- --
------------------------------------------------------------------------------
with
Ada
.
Strings
;
use
Ada
.
Strings
;
with
Ada
.
Strings
.
Fixed
;
use
Ada
.
Strings
.
Fixed
;
with
Ocarina
.
Backends
.
Messages
;
with
Ocarina
.
ME_AADL
;
with
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
...
...
@@ -83,8 +85,13 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
function
Find_Associated_Process
(
Runtime
:
Node_Id
;
Current_Node
:
Node_Id
:=
Root_Node
)
return
Node_Id
;
function
Find_Associated_Memory_Segment
(
Process
:
Node_Id
;
Current_Node
:
Node_Id
:=
Root_Node
)
return
Node_Id
;
function
Make_Default_Memory_Region
return
Node_Id
;
function
Make_Memory_Region
(
Segment
:
Node_Id
)
return
Node_Id
;
--------------------------------
-- Make_Default_Memory_Region --
...
...
@@ -105,6 +112,36 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
return
N
;
end
Make_Default_Memory_Region
;
------------------------
-- Make_Memory_Region --
------------------------
function
Make_Memory_Region
(
Segment
:
Node_Id
)
return
Node_Id
is
N
:
Node_Id
;
begin
N
:=
Make_XML_Node
(
"MemoryRegion"
);
XTU
.
Add_Attribute
(
"Name"
,
"Initial RAM Pool"
,
N
);
XTU
.
Add_Attribute
(
"Type"
,
"Initial RAM Pool"
,
N
);
XTU
.
Add_Attribute
(
"Address"
,
Trim
(
Unsigned_Long_Long
'
Image
(
Get_Base_Address
(
Segment
)),
Left
),
N
);
XTU
.
Add_Attribute
(
"Size"
,
Trim
(
Unsigned_Long_Long
'
Image
(
To_Bytes
(
Get_Memory_Size
(
Segment
))),
Left
),
N
);
XTU
.
Add_Attribute
(
"AccessRights"
,
"READ_WRITE"
,
N
);
XTU
.
Add_Attribute
(
"PlatformMemoryPool"
,
"0"
,
N
);
return
N
;
end
Make_Memory_Region
;
-----------------------------
-- Find_Associated_Process --
-----------------------------
...
...
@@ -138,6 +175,40 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
return
No_Node
;
end
Find_Associated_Process
;
------------------------------------
-- Find_Associated_Memory_Segment --
------------------------------------
function
Find_Associated_Memory_Segment
(
Process
:
Node_Id
;
Current_Node
:
Node_Id
:=
Root_Node
)
return
Node_Id
is
T
:
Node_Id
;
S
:
Node_Id
;
begin
if
Get_Category_Of_Component
(
Current_Node
)
=
CC_Memory
and
then
Get_Bound_Memory
(
Process
)
=
Current_Node
then
return
Current_Node
;
end
if
;
if
not
AINU
.
Is_Empty
(
Subcomponents
(
Current_Node
))
then
S
:=
First_Node
(
Subcomponents
(
Current_Node
));
while
Present
(
S
)
loop
T
:=
Find_Associated_Memory_Segment
(
Process
,
Corresponding_Instance
(
S
));
if
T
/=
No_Node
then
return
T
;
end
if
;
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
return
No_Node
;
end
Find_Associated_Memory_Segment
;
-----------
-- Visit --
-----------
...
...
@@ -339,9 +410,10 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
--------------------------------------
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
Corresponding_Process
:
Node_Id
:=
No_Node
;
Partition_Node
:
Node_Id
;
S
:
Node_Id
;
Corresponding_Process
:
Node_Id
:=
No_Node
;
Memory_Segment
:
Node_Id
:=
No_Node
;
Partition_Node
:
Node_Id
;
begin
Corresponding_Process
:=
Find_Associated_Process
(
E
);
...
...
@@ -380,13 +452,18 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
Memory_Regions
:=
Make_XML_Node
(
"MemoryRegions"
);
--
-- FIXME: for now, we associate with the default
-- memory. Has to work to get the AADL memory component.
--
Append_Node_To_List
(
Make_Default_Memory_Region
,
XTN
.
Subitems
(
Memory_Regions
));
Memory_Segment
:=
Find_Associated_Memory_Segment
(
Corresponding_Process
);
if
Memory_Segment
=
No_Node
then
Append_Node_To_List
(
Make_Default_Memory_Region
,
XTN
.
Subitems
(
Memory_Regions
));
else
Append_Node_To_List
(
Make_Memory_Region
(
Memory_Segment
),
XTN
.
Subitems
(
Memory_Regions
));
end
if
;
Append_Node_To_List
(
Memory_Regions
,
...
...
src/backends/ocarina-backends-deos_conf-schedule.adb
View file @
ae96f77e
...
...
@@ -160,14 +160,6 @@ package body Ocarina.Backends.Deos_Conf.Schedule is
:=
Get_Module_Schedule_Property
(
Processor
);
begin
for
J
in
Module_Schedule
'
Range
loop
-- Put_Line ("Module Schedule slot #" & J'Img);
-- Put_Line (" -> "
-- & Get_Name_String (Module_Schedule (J).Partition));
-- Put_Line (" -> "
-- & Module_Schedule (J).Duration.T'Img
-- & " " & Module_Schedule (J).Duration.U'Img);
-- Put_Line (" -> "
-- & Module_Schedule (J).Periodic_Processing_Start'Img);
Time_Window_Node
:=
Make_XML_Node
(
"PartitionTimeWindow"
);
...
...
src/backends/ocarina-backends-properties.adb
View file @
ae96f77e
...
...
@@ -104,6 +104,8 @@ package body Ocarina.Backends.Properties is
-------------------------------
Base_Type
:
Name_Id
;
Base_Address
:
Name_Id
;
Memory_Size
:
Name_Id
;
Code_Set
:
Name_Id
;
Data_Digits
:
Name_Id
;
Data_Scale
:
Name_Id
;
...
...
@@ -347,6 +349,7 @@ package body Ocarina.Backends.Properties is
Provided_Virtual_Bus_Class
:
Name_Id
;
Allowed_Connection_Binding_Class
:
Name_Id
;
Compute_Execution_Time
:
Name_Id
;
Execution_Time
:
Name_Id
;
Compute_Deadline
:
Name_Id
;
--------------------
...
...
@@ -1963,6 +1966,26 @@ package body Ocarina.Backends.Properties is
end
case
;
end
Get_Thread_Period
;
----------------
-- Get_Period --
----------------
function
Get_Period
(
T
:
Node_Id
)
return
Time_Type
is
The_Period
:
Time_Type
;
begin
The_Period
:=
Get_Time_Property_Value
(
T
,
Thread_Period
);
return
The_Period
;
end
Get_Period
;
------------------------
-- Get_Execution_Time --
------------------------
function
Get_Execution_Time
(
T
:
Node_Id
)
return
Time_Type
is
begin
return
Get_Time_Property_Value
(
T
,
Execution_Time
);
end
Get_Execution_Time
;
------------------------------------
-- Get_Thread_First_Dispatch_Time --
------------------------------------
...
...
@@ -3070,6 +3093,8 @@ package body Ocarina.Backends.Properties is
Queue_Size
:=
Get_String_Name
(
"queue_size"
);
Base_Address
:=
Get_String_Name
(
"base_address"
);
Memory_Size
:=
Get_String_Name
(
"memory_size"
);
Data_Array_Name
:=
Get_String_Name
(
"array"
);
Data_Boolean_Name
:=
Get_String_Name
(
"boolean"
);
Data_Character_Name
:=
Get_String_Name
(
"character"
);
...
...
@@ -3370,6 +3395,7 @@ package body Ocarina.Backends.Properties is
Get_String_Name
(
"allowed_connection_binding_class"
);
Compute_Execution_Time
:=
Get_String_Name
(
"compute_execution_time"
);
Execution_Time
:=
Get_String_Name
(
"execution_time"
);
Compute_Deadline
:=
Get_String_Name
(
"compute_deadline"
);
...
...
@@ -4386,4 +4412,22 @@ package body Ocarina.Backends.Properties is
return
No_Name
;
end
Get_Send_Function_Name
;
---------------------
-- Get_Memory_Size --
---------------------
function
Get_Base_Address
(
D
:
Node_Id
)
return
Unsigned_Long_Long
is
begin
return
Check_And_Get_Property
(
D
,
Base_Address
);
end
Get_Base_Address
;
---------------------
-- Get_Memory_Size --
---------------------
function
Get_Memory_Size
(
D
:
Node_Id
)
return
Size_Type
is
begin
return
Get_Size_Property_Value
(
D
,
Memory_Size
);
end
Get_Memory_Size
;
end
Ocarina
.
Backends
.
Properties
;
src/backends/ocarina-backends-properties.ads
View file @
ae96f77e
...
...
@@ -795,6 +795,12 @@ package Ocarina.Backends.Properties is
-- It corresponds to the receiver subcomponent in the abstract
-- device that models the content of the device.
function
Get_Execution_Time
(
T
:
Node_Id
)
return
Time_Type
;
function
Get_Period
(
T
:
Node_Id
)
return
Time_Type
;
function
Get_Base_Address
(
D
:
Node_Id
)
return
Unsigned_Long_Long
;
function
Get_Memory_Size
(
D
:
Node_Id
)
return
Size_Type
;
private
Empty_Name_Array
:
constant
Name_Array
(
1
..
0
)
:=
(
others
=>
No_Name
);
...
...
src/backends/ocarina-backends-utils.adb
View file @
ae96f77e
...
...
@@ -2803,6 +2803,15 @@ package body Ocarina.Backends.Utils is
return
Unsigned_Long_Long
(
To_Seconds
(
S
)
*
1_000.0
);
end
To_Milliseconds
;
---------------------
-- To_Nanoseconds --
---------------------
function
To_Nanoseconds
(
S
:
Time_Type
)
return
Unsigned_Long_Long
is
begin
return
Unsigned_Long_Long
(
To_Seconds
(
S
)
*
1_000_000_000.0
);
end
To_Nanoseconds
;
--------------
-- To_Bytes --
--------------
...
...
src/backends/ocarina-backends-utils.ads
View file @
ae96f77e
...
...
@@ -485,4 +485,6 @@ package Ocarina.Backends.Utils is
function
Get_Associated_Bus
(
Port
:
Node_Id
)
return
Node_Id
;
function
To_Nanoseconds
(
S
:
Time_Type
)
return
Unsigned_Long_Long
;
end
Ocarina
.
Backends
.
Utils
;
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment