These are the inputs required for the actual compilation of the system:
Due to the complex build process required, a central "orchestrator" is necessary:
automated logic that takes care of all the details of performing each
individual step in the ASSERT process. The Data Modeling Toolchain includes the
assert-builder...
Usage: assert-builder.py <options>
Where <options> are:
-f, --fast
Skip waiting for ENTER between stages
-n, --nokalva
Use OSS Nokalva for ASN.1 compiler (if missing, asn1Scc is used)
-o, --output <outputDir>
Directory with generated sources and code
-a, --asn <asn1Grammar.asn>
ASN.1 grammar with the messages sent between subsystems
-i, --interfaceView <i_view.aadl>
The interface view in AADL
-c, --concurrencyView <c_view.aadl>
The concurrency view in AADL (as generated by the VT)
-S, --subSCADE name:<zipFile>
a zip file with the SCADE generated C code for a subsystem
with the AADL name of the subsystem before the ':'
-M, --subSIMULINK name:<zipFile>
a zip file with the SIMULINK/ERT generated C code for a subsystem
with the AADL name of the subsystem before the ':'
-C, --subC name:<zipFile>
a zip file with the C code for a subsystem
with the AADL name of the subsystem before the ':'
-A, --subAda name:<zipFile>
a zip file with the Ada code for a subsystem
with the AADL name of the subsystem before the ':'
-G, --subOG name:file1.pr<,file2.pr,...>
ObjectGeode PR files for a subsystem
with the AADL name of the subsystem before the ':'
For example, when the script is used to create ASSERT's PFS Pilot Project, it is invoked like this:
bash$ assert-builder.py \
--fast \
-o output/ \
-a newPackages/D_view.asn1 \
-i newPackages/MSU_Thread.aadl \
-c newPackages/MSU_Thread_conc.aadl \
-G newPackages/MSU_Threads_Basic.pr \
-G newPackages/MSU_Threads_Control.pr \
-G newPackages/MSU_Threads_Cyclic.pr \
-S newPackages/ScadeBlock.zip
The "orchestrator" completely takes care of the following:
asn2aadlPlus)
asn2dataModel)
aadl2glueC)
asn1Scc or Nokalva to generate the source code, via the ASN.1 Grammar)
gnatmake) the VM sources (Ada)
gcc) the ASN.1 encoders/decoders
gcc) the source code for the SCADE/MATLAB/etc synchronous models
gcc) the source code for the ObjectGeode/C/Ada/etc asynchronous models
Needless to say, this automation immensely helps the - otherwise very tedious and error prone - integration phase of ASSERT projects. Also note that parts of this process are directly available through online gateways [10].