2017-03-25 15 views
1

FreeRTOS 용 OSAL (Operating System Abstraction Layer) 어댑터를 만들려고했지만 제공된 인터페이스와 혼동했습니다. 예를 들어랩소디에서 호환되지 않는 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); 

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

내가 뭔가 것 같다 내 구성에 문제가있다. 나는 랩소디 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) 
  • ? 랩소디 버전과 사용중인 SMXF 모델이 일치하지 않습니까?
  • 내 클래스의 속성을 설정하면 왜 RiCTaskEM_init 메서드가 다른 방식으로 호출됩니까? 두 번째 버전은 올바른 것으로 보이지만 RiCTaskEM_init 메서드가 호환되지 않는 경우 제공됩니다.
  • 어떻게 든 RiCTaskEM의 기능을 수정해야합니까? 그것은 프레임 워크에 속해 있기 때문에 아니오, 어댑터 및 OSAL 어댑터 가이드 그것에 대해 아무것도 언급하지 않는 것 같아요. 그러나 현재의 구현은 단순히 적합하지 않습니다.

답변

0

설명서는 SMXF 프레임 워크가 아닌 OXF 용으로 작성되었습니다. 내가 아는 한 SMXF를 적용하기위한 실제 문서는 없지만 SMXF는 모델로 있습니다 (/ LangC/smxf 디렉토리 확인) 어댑터를 쉽게 만들 수 있습니다. 당신은 정말 SMXF가 필요하십니까 또는 RXF 같은 OXF만으로도 충분 (또는 다른 프레임 워크?

월터

+0

안녕 월터, 당신 말이 맞아 것입니다. 그것은 다른 프레임 워크에 속한다는 것을주의하는 시간이 걸렸습니다. 우리 QNX 어댑터를 모방하여 성공적으로 구현했습니다. –