새 하드웨어 대상 설정

Rational Rhapsody가 제공한 파일을 개발 환경에 맞게 수정하거나 특정 대상을 지원할 수 있도록 새 파일 세트를 작성할 수 있습니다.

이 태스크 정보

새 대상에 대한 지원을 추가하여 개발 환경과 일치하는 MXF(MicroC Framework)와 함께 사용할 수 있습니다. 이 태스크에서는 코드 생성 Configuration에서 사용할 새 Environment을 정의하는 해당 파일 및 정의를 추가하여 특정 하드웨어를 대상으로 하는 애플리케이션을 생성 및 빌드합니다. 이 태스크를 예를 들면 새 하드웨어 대상 지원을 의미하는 retargeting이라고도 합니다.

지원되는 각 하드웨어 대상은 다음을 사용하여 정의됩니다.
  • 특정 대상과 관련된 파일의 여러 특성과 해당 대상에 대한 애플리케이션 빌드 방법을 정의하는 특성 세트(Environment이라고도 함)
  • 하드웨어 타이머, 통신 등과 같은 하드웨어 관련 기능에 대한 대상 특정 구현을 정의하는 파일 세트(adapter라고 함)

코드 생성의 Configuration에서 사용하는 특성 세트는 해당 구성에 대한 기능 대화 상자의 설정 탭에 있는 Environment 드롭 다운 목록을 통해 판별됩니다.

Environment 드롭 다운 목록의 컨텐츠는 C_CG::Configuration::Environment 특성의 열거 정의에서 가져옵니다.

또한 IBM Rational Rhapsody는 다수의 대상 특정 파일 세트를 포함합니다. 각 파일 세트는 MXF(MicroC Execution Framework)에 대해 어댑터를 정의합니다. 어댑터는 해당 제품 설치 서브디렉토리의 <Install-Dir>\Share\LangC\mxf\Adaptors\Mainloop에 있습니다.

Target을 작성하려면 해당 대상에 MXF를 적용하는 유사 파일 세트를 작성해야 합니다.

프로시저

  1. 1. <Install-Dir>\Share\Properties 디렉토리에 Site.prp 파일을 작성하거나 업데이트하여 대상에 적합한 새 환경 정의를 추가하십시오.
    1. <Install-Dir>\Share\profiles\MicroC\MicroC.prp 파일에서 환경 열거 특성을 복사하고 새 환경의 이름을 사용하여 추가하십시오.
      prp 파일에서 이 특성은 다음 위치에 있습니다.
      Subject C_CG
          Metaclass Configuration
             Property Environment …
          endend
    2. MicroC.prp 파일에 정의된 대로 환경을 정의하는 특성 세트를 복사하십시오. 예를 들어, "metaclass <Environment-name>"으로 시작하고 "end"로 끝나는 섹션과 이러한 토큰 사이에 정의된 모든 특성을 복사할 수 있습니다.
      예를 들어, "Metaclass MainLoopSTM32" 및 "Property"로 시작하는 모든 행을 "end" 태그 행까지 모두 복사하고 복사된 환경의 이름을 새 환경 이름으로 바꿀 수 있습니다.
      Subject C_CG
          	Metaclass <Environment>
      				Property Property1         
      				Property Property2        
      				Property Property3         
      				…      
      			end 
      		end
    3. 특성 환경 정의를 변경하십시오. 예를 들어, C_CG:<NewEnvironment>:AdaptorSearchPath를 새 어댑터 디렉토리(<Install-Dir>Share\LangC\mxf\Adaptors\MainLoop\<NewTargetFolder> 또는 $OMROOT\ LangC\mxf\Adaptors\MainLoop\<NewTargetFolder>)를 가리키도록 변경하십시오.
      주: NewTaregtFolder는 파일 시스템에서 사용자의 대상을 나타내도록 선택한 이름입니다.
  2. AdaptorSearchPath에 정의된 대로 대상의 새 디렉토리를 작성하고 기존 어댑터에서 새 디렉토리로 파일을 복사하십시오. 사용자의 대상과 가장 유사한 대상(예: <Install-Dir>\Share\LangC\mxf\Adaptors\MainLoop\Stm32x)을 선택하도록 권장합니다.
  3. RiCOSTarget.c 파일에서 RiCOSMainTask_WaitStep 기능을 구현하여 메인 루프의 단계를 정의하십시오(일반적으로 하드웨어 타이머를 사용하여 수행). $OMROOT\LangC\mxf\Adaptors\MainLoop\Stm32x\RiCOSTarget.c를 참조하십시오.
  4. RiCOS.h 파일에서 RiCOSMainloop.h#include 문을 추가하십시오.
  5. 뮤텍스(mutex), TCP 등 고급 운영 체제(OS) 서비스를 지원하는 대상의 경우, RiCOSTargetServices.c\.h 파일의 관련 어댑터 API를 대체하십시오.

    RiCOSMainloop.c 파일의 대체 가능한 각 API는 #ifndef… #endif 컴파일러 지시문을 사용하여 프리프로세서 매크로("<function-name> Defined")로 둘러싸여 있습니다. API를 대체하려면 RiCOSTargetServices.h 파일에 이 컴파일러 매크로를 정의하고 RiCOSTargetServices.c 파일에서 새 구현을 추가하십시오. 예를 들어, 대상 어댑터 <Install-Dir>\Share\LangC\mxf\Adaptors\MainLoop\Linux의 "RiCOSEventsPoolMutex_init" API 대체를 참조하십시오.

  6. Target Monitoring을 사용하려면, 대상에서 실행하는 동안 애플리케이션을 다시 애니메이션하고 대상에서 사용 가능한 통신(업링크)에 따라 TargetMonitorProtocol.c\.h 파일을 수정하십시오. 대상 모니터링에 대한 지원이 없으면 이러한 파일을 제거하십시오.
  7. 1시간 단위에 대해 1밀리초를 나타내도록 타이머 보정을 변경하도록 권장합니다. 예상 기본값은 1밀리초 지연의 tm(1)입니다.
    1. C_CG::Configuration::TimerManagerTimeCycle 특성 - MXF 구성 파일 템플리트 C_CG:Configuration:mxfCfgTemplate, #define RICTIMERMANAGER_TIME_CYCLE $<Time ManagerTimeCicle>에서 사용됩니다.

      이 특성 값은 3단계에 정의된 하드웨어 타이머의 주기를 정의합니다. 제한시간에 최대 범위 및 해상도를 허용하려면 이 값을 가능한 작게(정수)로 유지하는 것이 바람직합니다.

    2. C_CG::Configuration::TimerManagerDefaultTickTime 특성 - MXF 구성 파일 템플리트 C_CG:Configuration:mxfCfgTemplate, #define RICTIMERMANAGER_DEFAULT_TICK_TIME $<TimeManagerTickTime>에서 사용됩니다.

      이 값은 HW Timer 정의에 따라 각 OSTimer 틱에 대한 증분 값으로 MXF의 TimerManager에 사용됩니다. HW 타이머는 두 연속 하드웨어 타이머 틱 간에 전달된 시간 단위의 양을 나타냅니다.

    3. OSTIMER_INIT() C-Macro - 하드웨어 특정 타이머 초기화를 사용하여 H\W의 관련 카운터의 초기값을 정의하는 RiCOS.h에 정의됩니다.
  8. 애플리케이션을 실행하려면, MXF 타이머가 구별할 수 있는 최소 시간 간격을 나타내는 (7.b) 단계에 정의된 지속 기간의 "휴면"을 수행하도록 RiCOSMainTask_WaitStep 기능을 구현하십시오.

피드백