Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

Prom - Project Management in KIELER

Topics


Overview

The KIELER Compiler (KiCo) can generate different code targets from models. For example it is possible to generate C and Java code from an SCT file. As a result KIELER has to integrate with existing development tools and practices for the C and Java world. In the context of embedded systems, the target device also varies heavily.

Therefore the KIELER Project Management (Prom) has been developed. It eases the creation, compilation and deployment of projects, when using models that can be compiled via KiCo (e.g. SCCharts, Esterel). Furthermore it eases the creation of wrapper code, which is used to initialize and run the model. To do so, there are mainly three components: An Eclipse Launch Configuration, so called Environments, and Project Wizards, which will be introduces in the following.


The KiCo Launch Configuration

Prom provides a launch configuration (launch config) to

  1. compile code from models via KiCo
  2. at the same time, generate wrapper code for these model files
  3. afterwards, execute arbitrary shell commands sequentially, if the KiCo compilation and wrapper code generation finished successfully

The shell commands are typically used to further compile the KiCo and wrapper code output and afterwards deploy the result to the target platform.

KiCo launch configurations work per project basis, thus every project has to create its own launch config. This is done automatically when performing Right Click > Run As > KiCo Compilation on a model file. (Screenshot)

The Run As command will search for a KiCo launch config for the project. If there is such a config, the selected file is only added to the list of model files which should be compiled. If there is none, a launch config is created by using the main file and environment the project has been created with. If the main file and environment information could not be found, dialogs will query it from the user.

The main file of the launch config is used to set several file path variables, which can be used in several fields of the configuration, notably the shell commands to be executed, and wrapper code input. To use a variablethe syntax is ${variable_name}. The variables that are set are

  • main_name : The file name, including its file extension (e.g. MyModel.sct)
  • main_path : The project relative path (e.g. src/MyModel.sct)
  • main_loc : The absolute file system path (e.g. /home/me/workspace/MyProject/src/MyModel.sct)
  • main_name_no_ext : The file name without its file extension (e.g. MyModel)

Further, similar variables for the compiled main path are set, that is, the main file in the directory of kieler generated files (see below)

  • compiled_main_name : The file name, including its file extension (e.g. MyModel.sct)
  • compiled_main_path : The project relative path (e.g. kieler-gen/MyModel.sct)
  • compiled_main_loc : The absolute file system path (e.g. /home/me/workspace/MyProject/kieler-gen/MyModel.sct)
  • compiled_main_name_no_ext : The file name without its file extension (e.g. MyModel)

Note: The variables are created in the first KiCo launch. So if you want to select them in a variable selection dialog of Eclipse, you must have started at least one KiCo launch configuration. (Screenshot of selection dialog)

The values of the launch config can also be (re)set to an environment. This will revert the fields for the compilation target, wrapper code generation and command execution.

The compilation via KiCo is configured on the Compilation tab. Here you can add/remove files that should be compiled via KiCo and the target language as well as the file extension for the language (such as .java for Java). The files will be compiled sequentially in order of appearance in the list. Further, it is possible to add a file path to a template for the output. This is useful to add surrounding content to the KiCo output. The placeholder ${kico_code} can be used in the template.

On the Execute tab, a list of shell commands can be added. They are executed sequentially in order as they appear in the list, after the KiCo compilation and wrapper code generation finished successfully. If a command fails (returns a non-zero exit code), following commands will not be excuted. The name of commands have to be unique and must not contain a comma.

The standard streams of executed shell commands (stdin, stderr, stdout), as well as errors from the KiCo compilation and wrapper code generation, are printed to the Console View. (Screenshot)

Launch Groups

 

Prom Environments

Environments are used to provide default settings for project creation and launch. They are configured in the preferences (Window > Preferences > KIELER > Environments).

An Environment consists of

  1. a unique name, that does not contain a comma
  2. a related project wizard
  3. information about a main file for the project
  4. information about the target code KiCo should produce from models
  5. information for wrapper code generation
  6. a list of shell commands which should be run as part of a project launch

Besides the name, all of these are optional, but can improve the workflow.

The related project wizard is run as part of the Prom project wizard and takes care of the actual project creation.

A main file typically contains the entry point of the program on the target environment. Its wrapper code initializes and runs the model and sets inputs and outputs to the physical components of the target device. To ease the project setup and because wrapper code for a specific target platform is often similar, it is possible to define default content for the main file. Therefore the field main file origin can contain an absolute file path to a file with the default contents of a newly created main file for this Environment. Furthermore predefined wrapper code snippets can be injected as part of a project launch, which is described below.

The desired programming language of KiCo generated code, can be set for an Environment. Further one can define the file extension (e.g. '.java' for Java files) for that language.

To generate wrapper code from a model one can define an input template and a directory with files that contain wrapper code snippets. The wrapper code origin is used to initialize the wrapper code snippet directory of a newly created project.

Last but not least, a list of shell commands can be defined, which will be executed sequentially when the code generation from KiCo and wrapper code generation both finished successfully. These commands are typically used to further compile the output and deploy the result to the target devide. As with names of Environments, the names of shell commands have to be unique and must not contain a comma.

Paths for initial content

Project Wizards with Prom

Todo

Wrapper Code Generation

Todo

Automatically generated files

Todo

  • No labels