INTEGRITY

INTEGRITY from GreenHills Software is a secure, royalty-free Real-Time Operating System intended for use in embedded systems that require maximum reliability. The JamaicaVM is available for INTEGRITY and the following target hardware:

Installation

The INTEGRITY-Version of Jamaica is installed like described in section "Installation". Additionally the following steps have to be done:

Configuration for installed INTEGRITY and Board Support Package (BSP)

In the Jamaica configuration file /usr/local/jamaica/etc/jamaica.conf the path of the BSP installation has to be adjusted.

  • Check the include path property include.integrity-* in /usr/local/jamaica/etc/jamaica.conf. It must be set to the INTEGRITY include path. By default, this is /usr/local/integrity/INTEGRITY-include.

  • Check the property XCFLAGS.integrity-* for appropriate values. By default, the compiler generates code to run on the INTEGRITY PPC simulator (isimppc). The value of option -bspname may be changed accordingly to your BSP.

  • Check the property XLDFLAGS.integrity-* for appropriate values. By default, the linker generates an INTEGRITY kernel of your application, i.e. it can be run directly using isimppc. This is defined through :integrity_option=kernel. Changing the option to :integrity_option=dynamic would create a dynamic downloadable module of the application. To run such a module, start isimppc with a provided kernel: isimppc /usr/local/integrity/sim800/kernel. Then download the module using MULTI. See the MULTI and INTEGRITY documentation on how to connect to your target and load modules.

Linker Directives File

The files <INTEGRITY>/<BSP>/default.ld and <INTEGRITY>/INTEGRITY.ld are the default linker directives files used when building an INTEGRITY application. Alternate linker directives files can be specified by the user by adding the option -T <file> to the XLDFLAGS.integrity-* in the Jamaica configuration file. For example, some INTEGRITY installations include the file flash.ld, an alternate to default.ld that is appropriate for a flash build. The default linker directives files have comments which describe the various sections in the map.

Custom Linker Directives File

It may be necessary for the user to create a new linker directives file. For example, the size of the run-time heap for the AddressSpace may need to be increased or decreased. Create a new linker directives file by first copying the default.ld (for KernelSpace) or INTEGRITY.ld (for virtual AddressSpaces) to a new file; e.g., myapplication.ld. Starting with the default file as a template ensures that necessary sections will not be mistakenly left out in the new file. For example, a .heap section is needed in order for the KernelSpace to support C/C++ dynamic memory allocation (e.g., malloc and new). If the default .heap is too small, it can be made larger in myapplication.ld. The KernelSpace default heap size is 64K bytes, as specified by the following default.ld directive:
.heap     align(16) pad(0x10000)  NOCLEAR :
This can be increased in myapplication.ld to 4MB as follows:
.heap     align(16) pad(0x400000) NOCLEAR :
If you need to control where in RAM the kernel is placed, you may specify the .rambase and .ramlimit to identify the starting base of the kernel image and set the limit of where free memory ends. This is only valid for the KernelSpace program's linker directives file (e.g., default.ld).
.ramlimit 0x800000
.ramlimit defines the size of available RAM (8MB by default for sim800 BSP).

The devguide manual provides detailed instructions on how to build INTEGRITY applications.

Additional Target configuration

If any additional configuration of your target is required (e.g. the network configuration), it can be defined in /usr/local/jamaica/target/integrity-*/include/jamaica_target_configuration.h. This file will be included while building the application.