Version of ARXF_CP_V8.0.1 has a few restrictions which are related to AUTOSAR:
Almost all UML elements can be used in Rhapsody in combination with the ARXF-CP. This includes classes, objects, singleton objects, files,
statecharts, several kinds of relations etc. However, some UML elements
cannot be used together with C code generation:
- the AUTOSAR version supported is 4.x.
This is because the M2M tool which can be used in future Use Case examples, is based on IBM AUTOSAR profiles for AUTOSAR 4.x
- this product supports the SW-C type application software component (formerly atomic software component) and
service software component only.
The type parameter software component (formerly CalPrm component) is not supported.
- the configuration of OS tasks including stack size is not done via properties, like in other RXF products for various RTOSses.
The configuration of OS tasks is done within an AUTOSAR tool.
- sending UML events between SW-Cs or instances of the same SW-C is not supported yet. This is a feature which will be implemented later.
One can send UML Events within an SW-C instance only.
All communication between SW-Cs is done via AUTOSAR Ports and handled by RTE APIs.
- this version of ARXF_CP_V8.0.1 does not support the AUTOSAR standard for inserting Memory section definitions.
This is a restriction which will be fixed later.
The UML UML Target Debugger which comes with version of ARXF_CP_V8.0.1 does not support XCP communication and A2L symbolic information.
It supports the mini-RTE which comes with the product. Breakpoints can not be set specifying a reactive class, but only by UML event ID.
The mini-RTE which comes with the product is not a full blown RTE. It is not AUTOSAR complient,
but serves the purpose of simple simulating the examples in Windows. It supports the AUTOSAR Ports used in the examples.
- Re-use of Classes
You can not use the same class in different SW-Cs if that class directly performs RTE calls.
The reason for this is that you may not include contracts of multiple SW-Cs in a single source file. This is a restriction defined by AUTOSAR.
There is a proper workaround for this ‘class re-use’ problem: you can ‘inherit’ classX and classY from this class and use classX and classY in two SW-Cs.
Please refer to the section Reuse of Classes in multiple SW-Cs where is explained how to do this.
- Active Classes must run in unique Tasks
You must configure an OS task per active class, but those tasks must be unique: you should not use the same task for different active classes.
The reason for this is that event queue is allocated per OS task structure in the ARXF-CP.
Note that multiple instances of the same active class run in the same task. Each uses its own instance if its event queue.
An active class needs an initializer, please refer to the section Initialization in Best Practices.
- Activity Diagrams associated to Operations
Code generation is only supported for activity diagrams and statecharts,
which are associated with a class, an object or a file. Activity
diagrams can also be assigned to operations or packages, but no C code can be
generated from them.
Note that although SW-Cs communicate via ports with other SW-Cs or Basic Software,
an AUTOSAR authoring tool which generates the RTE, in fact generates APIs for functions which communicate via such ports
and also the implementation of such functions.
We refer to such ports as AUTOSAR Ports.
No code is generated for AUTOSAR ports, but the InteriorLight example shows you how to use AUTOSAR ports.
For UML Ports, code is generated but UML ports and flowports can not be used on the same class.
This is a restriction which will be fixed later.
Flowports have its origin in SysML and are not standard UML, but are supported by Rhapsody.
To use flowports you must enable the property C_CG::Port::Generate. By default it is disabled to generate optimized code for UML ports.
The ARXF-CP does not support the IBM Rhapsody standard using instrumentation and TCP/IP communication due to the
heavy overhead. As a consequence there is no support for Rhapsody's internal
feature called "Animation".
The UML UML Target Debugger can be used with the mini-RTE in Windows to test Internal Behavior.
To allow inheritance in the C language, all operations would need to be
implemented as callbacks or in a virtual function table. This would
increase the code size, RAM needs, runtime and calling operations from
user code would be more complicated. Thus no full inheritance is available
in Rhapsody in C, but you do can re-use classes via static inheritance.
An SW-C is represented by a structured class. Rhapsody does not allow a part to be a singleton.
As a consequence, singletons must be initialized explicitly.
Furthermore: you can not use static inheritance
on the exposed class of a Singleton to re-use it in multiple SWCs.
- this version of ARXF-CP does not offer UML modeling support for the Execution Budget used in AUTOSAR.
The Standard Content for an eventDispatcher runnable in an SWC
shows an example how to deal with this.
The mini-RTE does not respect user modifications to AUTOSAR ports when re-generating a mini-RTE.