@@-- The following tags are available in this template: @@-- @@-- @_Nodes_@ : Code generated for the nodes @@-- @_Node_Names_@ : Vector Tag of node names @@-- @_Node_CPU_@ : |_ Corresponding CPU name (eg x86_linux) @@-- @_Node_CPU_Classifier_@ : |_ CPU Classifier (ocarina...::x86_linux) @@-- @_Node_Major_Frame_@ : |_ Time in milliseconds allocated to the CPU (TSP only) @@-- @_Partition_Names_@ : Vector Tag of partition names @@-- @_Partition_Node_@ : |_ Corresponding node name @@-- @_Partition_CPU_@ : |_ Corresponding CPU name @@-- @_Partition_Duration_@ : |_ Corresponding time allocation (TSP only) @@-- @_Partition_VP_@ : |_ Virtual processor binding (TSP only) @@-- @_Threads_@ : Code generated for the threads @@-- @_Thread_Names_@ : List of all threads in the complete system @@-- @_Target_Packages_@ : List of all target package names in the complete system @@-- @_Part_Source_Name_@ : Inter-partition connections : partition source name (vector tag) @@-- @_Part_Source_Port_@ : |_ Corresponding port name @@-- @_Part_Dest_Name_@ : |_ Corresponding name of the remote partition @@-- @_Part_Dest_Port_@ : |_ Corresponding name of the port on the remote partition @@-- @_Bus_Names_@ : Vector tag: busses present in the system @@-- @_Bus_AADL_Package_@ : |_ corresponding AADL Package @@-- @_Bus_Classifier_@ : |_ corresponding AADL classifier @@-- @_Device_Names_@ @@-- @_Device_Node_Name_@ @@-- @_Device_Partition_@ -- Partition name associated to the driver (currently only one supported per node) @@-- @_Device_AADL_Pkg_@ @@-- @_Device_Classifier_@ @@-- @_Device_CPU_@ @@-- @_Device_Config_@ @@-- @_Device_Bus_Name_@ @@-- @_Device_Port_Name_@ @@-- @_Device_ASN1_File_@ @@-- @_Device_ASN1_Sort_@ @@-- @_Device_ASN1_Module_@ : Device drivers (vector tag) @@-- @_Unique_Dev_ASN1_Files_@ : List of ASN.1 files/module/type for device configuration with no duplicates (vector tag) @@-- @_Unique_Dev_ASN1_Mod_@ |_ corresponding asn1 module @@-- @_Unique_Dev_ASN1_Sorts_@ |_ type name @@-- @_Connect_From_Part_@ : Vector tag - bus connection: partition source @@-- @_Connect_Via_Bus_@ |_ bus name @@-- @_Connect_Port_Name_@ |_ port name @@-- And all the system configuration obtained from the command line: @@-- Interface_View, Deployment_View, Data_View, Binary_Path, Check_Data_View, @@-- Output_Dir, Skeletons, Glue, Use_POHIC, Timer_Resolution, Debug_Flag, @@-- No_Stdlib_Flag, Timer_Resolution, Other_Files (list of aadl files) -- Input file for the taste orchestrator: do not edit -- This file was generated automatically by taste/kazoo @_Threads_@ package Process_Package public with arinc653; with Deployment; with DataView; with interfaceview::IV; with deploymentview::DV; @@-- Add "with" of the node, this is at least needed for TSP systems @@TABLE@@ with deploymentview::DV::@_Node_Names_@; @@END_TABLE@@ @@TABLE@@ with @_CAPITALIZE:Thread_Names_@_Thread; @@END_TABLE@@ @@TABLE@@ with @_CAPITALIZE:Target_Packages_@; @@END_TABLE@@ @@-- If there is at least one bus, add ocarina_buses @@IF@@ @_Bus_Names'Length_@ > 0 with ocarina_buses; @@END_IF@@ @@-- POHIC-only: declare protected objects to have runtime mutex @@IF@@ @_Use_POHIC_@ data TASTE_Protected properties Concurrency_Control_Protocol => Protected_Access; end TASTE_Protected; data implementation TASTE_Protected.Object properties Concurrency_Control_Protocol => Protected_Access; end TASTE_Protected.Object; @@END_IF@@ @@IF@@ @_Partition_VP'Length_@ > 0 @@-- AIR : we need a port polling threads -- Required by AIR to allow inter-partition communications subprogram do_ports_polling properties Source_Language => C; Source_Name => "user_ports_polling"; Source_Text => ("air_polling.c"); end do_ports_polling; thread Port_Poller end Port_Poller; thread implementation Port_Poller.i calls Mycalls: { P_Spg : subprogram do_ports_polling; }; properties Dispatch_Protocol => Periodic; Period => 100 ms; Deadline => 100 ms; end Port_Poller.i; @@END_IF@@ @_Nodes_@ system DeploymentView end DeploymentView; system implementation DeploymentView.final subcomponents @@TABLE'ALIGN_ON(":")@@ @@-- First declare the partitions @_CAPITALIZE:Partition_Names_@ : process @_CAPITALIZE:Partition_Names_@.final; @@END_TABLE@@ @@-- Then the processor boards (they may contain several virtual processors for TSP systems) and optionally memory @@TABLE'ALIGN_ON(":")@@ @_CAPITALIZE:Node_Names_@_@_Node_CPU_@ : processor @_CAPITALIZE:Node_Names_@_Board.final; @@IF@@ @_Node_Has_Memory_@ @_CAPITALIZE:Node_Names_@_Memory : memory deploymentview::DV::@_CAPITALIZE:Node_Names_@::main_memory.others; @@END_IF@@ @@END_TABLE@@ @@-- Then declare the busses (distributed systems only) @@TABLE'ALIGN_ON(":")@@ @_Bus_Names_@ : bus @_Bus_Classifier_@; @@END_TABLE@@ @@-- Then declare the device drivers (distributes systems only) @@TABLE'ALIGN_ON(":")@@ @_Device_Node_Name_@_@_Device_Names_@ : device @_Device_Classifier_@ { @@IF@@ @_Use_POHIC_@ Source_Text => ("../DriversConfig/@_Device_Partition_@/DeviceConfig-@_Device_Node_Name_@-@_Device_Names_@.c"); Type_Source_Name => "pohidrv_@_Device_Node_Name_@_@_Device_Names_@"; @@ELSE@@ Source_Text => ("../DriversConfig/@_Device_Partition_@/DeviceConfig-@_Device_Node_Name_@-@_Device_Names_@.ads"); Type_Source_Name => "Taste_Drivers_Configuration.pohidrv_@_Device_Node_Name_@_@_Device_Names_@"; @@END_IF@@ }; @@END_TABLE@@ @@-- Specify the connections for distributed and TSP systems @@IF@@ @_Part_Source_Name'Length_@ > 0 connections @@TABLE@@ @_Part_Source_Name_@_@_Part_Source_Port_@ : port @_Part_Source_Name_@.OUTPORT_@_Part_Source_Port_@ -> @_Part_Dest_Name_@.INPORT_@_Part_Dest_Port_@; @@END_TABLE@@ @@END_IF@@ @@-- Specify the bus accesses @@TABLE'ALIGN_ON("->")@@ bus access @_Device_Bus_Name_@ -> @_Device_Node_Name_@_@_Device_Names_@.link; @@END_TABLE@@ properties @@-- Specify the bindings of the partitions to (virtual) processors @@TABLE'ALIGN_ON("applies")@@ @@-- Check if this is a TSP system, in which case bind the partitions to the corresponding virtual processor of the node @@IF@@ @_Partition_VP_@ = "" Actual_Processor_Binding => (reference (@_CAPITALIZE:Partition_Node_@_@_Partition_CPU_@)) applies to @_CAPITALIZE:Partition_Names_@; @@ELSE@@ Actual_Processor_Binding => (reference (@_CAPITALIZE:Partition_Node_@_@_Partition_CPU_@.@_Partition_VP_@)) applies to @_CAPITALIZE:Partition_Names_@; Actual_Memory_Binding => (reference (@_CAPITALIZE:Partition_Node_@_Memory.@_CAPITALIZE:Partition_Names_@_Segment)) applies to @_CAPITALIZE:Partition_Names_@; @@END_IF@@ @@END_TABLE@@ @@-- Specify the bindings of the drivers to processors @@TABLE'ALIGN_ON("applies")@@ Actual_Processor_Binding => (reference (@_CAPITALIZE:Device_Node_Name_@_@_Device_CPU_@)) applies to @_Device_Node_Name_@_@_Device_Names_@; @@END_TABLE@@ @@-- Specify connection bindings (from partition to bus) @@TABLE'ALIGN_ON("applies")@@ Actual_Connection_Binding => (reference (@_Connect_Via_Bus_@)) applies to @_Connect_From_Part_@_@_Connect_Port_Name_@; @@END_TABLE@@ @@-- TSP: specify the time allocated to each node and on each partition @@TABLE'ALIGN_ON("applies")@@ @@IF@@ @_Node_Major_Frame_@ /= "" arinc653::module_major_frame => @_Node_Major_Frame_@ ms applies to @_Node_Names_@_@_Node_CPU_@; @@END_IF@@ @@END_TABLE@@ @@TABLE@@ @@IF@@ @_Node_Major_Frame_@ /= "" arinc653::module_schedule => ( @@INLINE( )(,\n )()@@ @@TABLE@@ [partition => reference (@_Partition_Node_@_@_Partition_CPU_@.@_Partition_VP_@); Duration => @_Partition_Duration_@ ms; periodic_processing_start => false;] @@END_TABLE@@ @@END_INLINE@@@@ ) applies to @_Node_Names_@_@_Node_CPU_@; @@END_IF@@ @@END_TABLE@@ end DeploymentView.final; end Process_Package; -- deploymenttview.final