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].