Abstract Solutions               Abstract Solutions
Go
  |  Contact us
PRODUCTS - Code Generation :: C Code Generators :: TA-6 Code Generator

The TA-6 code generator has been designed specifically to produce C code for small embedded systems where speed of execution is vitally important and where code and data spaces are very small. TA-6 is capable of generating 100% of the code for systems captured completely in xUML, and of generating code to interface to legacy systems in hybrid applications.

Generated Task Scheduling

TA-6 generates a self-contained C program that is not dependent on any external libraries, utilities or operating system services. The generated code will therefore run on any platform for which an ANSI-compliant C compiler is available.

The code produced by TA-6 may be scheduled to run as a:

1. "master" which will initiate calls to other parts of the generated code and to legacy code (if any) as and when required; or
2. "slave" where an external scheduler will initiate calls to the generated code as and when required.

The generated code can be run in single threaded environments, with master or slave scheduling, or as a single thread in multi-threaded environments, with slave scheduling.

Code and Data Structures

The code generated by TA-6 has been designed to be as compact as possible and to use as little memory (both ROM and RAM) as possible. Specifically, the code incorporates the following features:

  • All data structures use static memory allocation, thus avoiding memory and time overheads associated with the management of dynamic structures.
  • xUML signal processing implemented synchronously without explicit queues.
  • All attribute data held in separately typed arrays thus eliminating memory wastage due to compiler word alignment within structures.
  • All relationship data held using array indices thus enabling use of small data types to old the information.
  • Use of tags in the source xUML model to partition attributes between read-only (held in ROM) and read-write (held in RAM).

In addition, the generated code has been chosen to follow the MISRA subset for maximum safety and reliability.

For example, with TA-6 this platform independent Action Language:

is translated into this target C Code:

Generated Task Footprint

TA-6 does not make use of an extensive run time library.  To achieve this the source model is transformed into simple native C code. Indeed, the only run-time component is the implementation of the xUML timer mechanism (if this is required by the source model).  This means that as the size of the input xUML model decreases to zero, the size of the generated code similarily decreases.  The net result is the smallest possible footprint for a given source model.