2017-03-25 4 views
1

FreeRTOS用のOSAL(Operating System Abstraction Layer)アダプタを作成しようとしていますが、提供されているインターフェイスと混同しています。Rhapsodyの互換性のないOSALインターフェイス

例えば、RiCOSTaskの初期化機能は、ドキュメントに次のように定義されています

RiCBoolean RiCOSTask_init (RiCOSTask *const me, 
    RiCOSTaskEndCallBack tfunc, void *param, 
    const char *name, const long stackSize); 

https://www.ibm.com/support/knowledgecenter/SSB2MU_8.1.3/com.ibm.rhp.reference.doc/topics/rhp_r_fw_init_ricostask.html

しかしRiCTaskEMは以下のようにこの関数を呼び出します。

RiCBoolean RiCTaskEM_init(RiCBoolean wrapTask,RiCThread * const 
itsThread,RiCBoolean isThread,const RiCOSTaskEntryCallBack cbkFunc,const 
RhpAddress cbkParam,RhpPositive initStaticPeriod) 
{ 
     .......... 

     (RhpVoid) RiCOSTask_init(&(itsThread->osTask), cbkFunc, cbkParam, initStaticPeriod); 

     ........... 
} 

私は何かがあると思います私の設定に間違いがあります。私はRhapsody 8.1.3でSMXFを使用しています。

もう一つの問題は、ある私のテストクラスの初期化機能は、以下のようなRiCTaskEM_initメソッドを呼び出します:

void smxfTestClass_Init(smxfTestClass* const me, RiCTaskEM * p_task) { 
    RiCTaskEM_init(&(me->ric_task), RiCFALSE, &(me->ric_thread), RiCTRUE, 
     (RiCOSTaskEntryCallBack)smxfTestClass_doExecute, me, 0U); 
    ....... 
} 

をしかし、私は私のクラスのプロパティを設定した場合、例えば。 ActiveThreadName、RiCTaskEM_Init関数の呼び出しは次のように変更されます。

void smxfTestClass_Init(smxfTestClass* const me, RiCTaskEM * p_task) { 
    RiCTaskEM_Init(&(me->ric_task), "Test", RiCOSDefaultThreadPriority, 
     RiCOSDefaultStackSize, RiCOSDefaultMessageQueueSize, RiCFALSE, NULL); 
    ...... 
} 

そしてRiCTaskEM_Initのプロトタイプは、上記の呼び出しと互換性がないため、コンパイルが失敗します。このように定義されています

RiCBoolean RiCTaskEM_init(RiCBoolean wrapTask,RiCThread * const 
    itsThread,RiCBoolean isThread,const RiCOSTaskEntryCallBack cbkFunc,const 
    RhpAddress cbkParam,RhpPositive initStaticPeriod) 
  • 何が起こっていますか?私はRhapsodyのバージョンと使用しているSMXFのモデルが一致していませんか?
  • 私のクラスのプロパティを設定すると、なぜRiCTaskEM_initメソッドが呼び出されるのですか? 2番目のバージョンは正しいと思われますが、RiCTaskEM_initメソッドはそれと互換性がありません。
  • どういうわけかRiCTaskEMの機能を変更する必要がありますか?私はそれがフレームワークに属するので、アダプターとOSALアダプターガイドには何も言及していないわけではないと思います。しかし、現在の実装は単に適合しません。

答えて

0

マニュアルはOXF用であり、SMXFフレームワーク用ではありません。私が知る限り、SMXFを適合させるための実際の文書はありませんが、SMXFはモデルとして存在します(あなたの/ LangC/smxfディレクトリを確認してください) これはアダプタの作成を容易にするはずです。 あなたは本当にSMXFが必要ですかRXFのようなOXFで十​​分(あるいは別のフレームワーク?

ウォルター

+0

こんにちはウォルター、あなたは正しいでしょう。それは、それは別の枠組みに属していることに気づくのに時間がかかりました。我々 QNXアダプタを模倣して成功裏に実装しました。 –

関連する問題