このトピックで説明する問題は、IBM® Rational® Rhapsody® の
前のバージョンで作成されたプロジェクトを開くときに該当する可能性があります。
コード生成
- C、C++
- Rational Rhapsody の前のバージョンでは、
生成されたコード内で、グローバル変数宣言が関数宣言の後に現れていました。現在、グローバル変数宣言は、
関数宣言の前に現れます。
- Embeddable プロパティーが、本来の目的どおりに
コード生成に影響するようになりました。以前は、実装ファイル内に生成されるべきケースであっても、
関連コードが仕様ファイル内に生成されていました。
- 一定の状況で、コードへの変更をラウンドトリップすると、
生成されたコード内でのフォワード宣言の場所が、Rational Rhapsody の
前のバージョンで生成されたコードとは異なる場合があります。
- C
- 生成されたコード内で、以前は未初期化状態だった変数のインスタンスが
初期化されている場合があります。
- アニメーション
- アニメーションのコードを
現行バージョンの Rational Rhapsody で
生成すると、通常はアニメーション・コードを囲む _OMINSTRUMENT ifdef が、
これまで現れなかった場所に多数現れるようになりました。
- アニメーション化したシーケンス図の読みやすさを向上させるために、
アニメーション化されたコードに生成される
関数 OMADD_OMSER が、Rational Rhapsody の
前のバージョンで生成されていた単一引数に加えて、2 番目の引数を使用するようになりました。
- コード中心
- CodeCentric 設定を使って処理すると、
リバース・エンジニアリング時に指定したインクルード・パスが makefile にも
追加されるようになりました。
- SDL_Suite プロファイル
- プロジェクトで SDL_Suite プロファイルを
使用している場合、Rational Rhapsody によって
生成されるコードが、
このプロファイルに対して以前生成されていたコードと比べて、変わっていることが分かります。
- MicroC プロファイル
- MicroC プロファイルを使用する場合、
関数 RiCTaskEM_init に、mutex へのポインターを提供するために使用される
追加パラメーターが組み込まれるようになりました。
フレームワーク
Microsoft 環境に
おいて、RiCOSNT.h および RiCOSNT.c 内の
RiCOSMutex 実装が、C++ では既にそうであったように、CriticalSection の使用に
基づくようになりました。
(Ada は、引き続き以前のメカニズムを使用します。)
C++ OXF では、OMReactive.cpp 内の
複数の定数宣言が、MISRA への準拠を高めるために
変更されました。
Target Monitoring 機能改善の一部として、C OXF に
次の変更が加えられました。
- ファイル RiCOxf.c 内で、init 関数にブール・フラグが
追加されました。このフラグは、アニメーション接続が停止した場合に
アプリケーションを終了するかどうかを示します。(ユーザー・コードで
呼び出される関数 RiCOXFInit は変更されていません。)
- ファイル RiCOxf.c に、RiCOXFInit_NoExitOnDisconnect という
新しい関数が追加されました。
MXF で、次の型定義が
RiCTypes.h に追加されました。
- typedef
signed char RiC_CHAR8; /* character ASCII128 */
- typedef
unsigned long int RiCUnLgInt;
- typedef const
void* RiCVtbl;
Rational Rhapsody の
このバージョンでは、MXF で、RiCEvent が変更されたほか、イベントを表すコードが生成される方法が
変更されました。これらの変更は、MISRA への準拠を高めるために
実施されました。
- これまで、イベントは、RiCEvent 構造体と
それぞれがイベント引数を表す個別メンバーの両方が格納された構造体によって
表されていました。現在、イベントは RiCEvent 構造体によって
表され、この構造体には、イベント引数が格納されている構造体へのポインターが
格納されるようになりました。
- 同様の変更が、RiCTimeout に対してと、
タイムアウトを表すために生成されるコードに対しても加えられました。これまで、RiCTimeout には、RiCEvent 構造体のほかに
タイムアウト関連のデータが格納されていました。
現在、タイムアウトは、RiCEvent 構造体によって表されます。
こちらの場合、イベント・データへのポインターは、タイムアウト関連のデータが格納されている
RiCTimeout 構造体を指しています。
RiCEvent 関連の
変更に関係して、生成されるコード内でのイベントのメモリー管理が
変更されました。以前のように RiCMemoryManager を使用する代わりに、
各 RiCEvent は、プールからメモリーを割り振られます。
プールのサイズは、C_CG::Configuration::FrameworkEventsPoolSize プロパティーの値によって決まります。
イベントに引数があると、メモリーがプールから割り振られ、
プールのサイズは、CPP_CG::Event::BaseNumberOfInstances プロパティーの値によって決まります。
OSEK
アダプターの機能強化 - OSEK アプリケーション内で RES_SCHEDULER を単一 mutex として
使用する代わりに、モデルおよび MXF 内に定義されている OSEK タスクごとに
専用の mutex が使用されるようになりました。
以前は $OMROOT¥LangC¥mxf¥Adaptors¥MainLoop¥S12¥Freescale に置かれていた MXF Mainloop アダプター・ファイルは、
現在、$OMROOT¥LangC¥mxf¥Adaptors¥MainLoop¥Freescale¥S12 にあります。
さまざまな
フレームワークで、次の新しい型 typedef const char* Rhp_const_char_pt が追加されました。
この新しい型は、各フレームワーク内で現在
頻繁に使用されています。
バージョン 7.5 で導入された、OXF タイマーの
マルチメディア・タイマー・ベースの実装が、デフォルトで
使用されるようになりました。このタイマー実装の使用が望ましくない場合は、該当のマクロ定義を
次のようにコメント化してください。
- C++ の場合、..¥Share¥LangCpp¥osconfig¥WIN32¥omosconfig.h 内の
#define OM_USE_MULTIMEDIA_TIMER をコメント化します。
- C の場合、..¥Share¥LangC¥osconfig¥WIN32¥ricosconfig.h 内の #define RIC_USE_MULTIMEDIA_TIMER をコメント化します。
C++ の OXF では、MISRA 準拠に必要な 31 文字制限を満たすため、
一部の ID 名が切り捨てられていました。
特定のバグ修正
および機能拡張を実装するために、次のフレームワークのメソッドが変更されました。
- C
- RiCOSMessageQueue_get
- RiCDefaultReactiveOutbound_gen
- C++
- ~LinuxThread (デストラクター)
- getThreadEndClbk
- NTOSMessageQueue::get (ntos.cpp 内)
- OMOS::endApplication (VxOS.cpp および linuxos.cpp 内)
- OMThread::execute
- OXF::end
- AOM ライブラリー
- RiCEvent の構造および MXF でのイベントに対する
メモリー割り振りの変更に対応するために、AOM で次の変更が
行われました。これらの変更はすべて、コンパイル・フラグ #ifdef MICROC_OXF によって
区別されます。
- 次のマクロの変更: RICE、OM_INSTRUMENT_EVENT、OM_INSTRUMENT_EVENT_INSTANCE、NOTIFY_TAKE_EVENT
- イベントの RiCEvent メンバーへの参照の除去など、
マイナーなコード変更
- TOM ライブラリー
- メソッド tomTrimCarriageReturn() が toxf.cpp に追加されました。
- 特定の機能拡張を実装するために、
メソッド TOMInstance::notifyFlowDataReceive が変更されました。
MXF アダプター
MXF アダプターの API に
複数のメソッドが追加されました (RiCOSOsek、RiCOSMainloop、
および RiCOSAutosarRte)。
独自にビルドした既存のアダプターがある場合は、
コンパイルの問題を避けるため、これらの新規メソッドも
実装する必要があります。
新規メソッドは、次のカテゴリーに分けられます。
- AUTOSAR への準拠を高めるため、(一般的な RiCOSMutex_lock/free メソッドとは
対照的に) Timer Manager が使用する mutex をロック/解放するための
メソッドが追加されました。
- RhpBoolean RiCOSTimerManagerMutex_lock(const
RiCOSMutex
*me)
- RhpBoolean RiCOSTimerManagerMutex_free(const
RiCOSMutex
*me)
- 静的イベント・プールへのアクセスの相互排他を
確実に可能にするために使用される mutex をロック/解放するための
メソッドが複数追加されました。これらのメソッドは、MISRA への準拠を高めるために導入された
イベント関連の変更の一部として追加されました。
- RhpVoid
RiCOSEventsPoolMutex_init(RhpVoid)
- RhpVoid
RiCOSEventsPoolMutex_lock(RhpVoid)
- RhpVoid
RiCOSEventsPoolMutex_free(RhpVoid)
XMI
XMI データを Rational Rhapsody に
インポートするとき、またはモデルを XMI にエクスポートするとき、警告およびエラーが、
外部コンソール・ウィンドウでなく、Rational Rhapsody 出力ウィンドウに
表示されるようになりました。