본문 바로가기

Tools/IBM Rhapsody

(30)
Interrupt Service Routine에서 이벤트 발생 GEN_ISR(event) 매크로를 사용한다. http://www.umlforum.de/viewtopic.php?lang=de_x_sie&f=12&t=812
생성자에서 인자로 받은 값으로 멤버변수 초기화하는 방법 생성자에서 인자로 받은 값으로 멤버변수를 초기화하는 방법이다. 1. 테스트를 위해 TestClass를 하나 작성하여 멤버 변수로 m_A, m_B, m_C를 만들고 0으로 초기화하도록 설정한다. 2. 기본 생성자에 세개의 멤버 변수들이 0으로 초기화 되고 있음을 확인한다. 3. 생성자를 하나 만들어, 세개의 인자를 받도록 작성한다. 이렇게 작성해도 역시나 세개의 멤버변수는 0으로 초기화 되고 있음을 확인한다. 이 때, 생성자의 Initializer에 m_A(a), m_B(b), m_C(c) 이렇게 넣더라도 코드에는 반영이 안된다. 4. 그래서 생성자의 Properties에서 initializer 라고 검색을 하면 아래와 같은 DisableAutoGeneratedInitializer Property를 찾을 ..
Rhapsody 7.6.x 업데이트 사항 중 sxf LDRA User Conference 에 갔다가 SXF라는 새로운 프레임워크의 존재를 알게 되었다.Safety Critical 시스템에서 사용되는 프레임워크이다. 기본적으로 MISRA 룰에 맞도록 재작성되어 있고, 실시간 시스템에 적합하도록 최적화되어 있다. 개발하고자 하는 장비의 특성에 맞도록 oxf와 sxf를 선택하면 될듯 하다. OXF와의 주요 차이점은 아래와 같다. 더 자세한 내용은 이곳에서 확인한다.SXF C++OXF C++Static architectureDynamic allocationMISRA C++ 2008 compliance with modeling checksNot validated for MISRANo animation, tracingAnimation, tracingOnly Real..
Rhapsody :: event의 인자 접근 방법 params->arg1, params->arg2 와 같은 방식으로 사용한다.(간단한데 기록하지 않으면 꼭 까먹는다.)
Rhapsody :: Multicast with port 참고 홈페이지 http://www.rhapsody4you.org/post924.html#p924 Rhapsody 7.5.1 버전 이후 부터는 포트(Port)간 멀티 캐스트 매크로를 지원한다. 방법은 아래와 같다. 1. 객체를 아래와 같이 구성한다. 2. Sender의 State Diagram을 아래와 같이 구성한다. 1초마다 sendEvent() 함수를 호출하도록 구성한다. 처음에는 GEN 매크로를 사용하여 이벤트를 전송해본다. 3. Handler들의 State Diagram을 아래와 같이 구성한다. evTrigger 이벤트를 수신하면, handleEvTrigger() 함수를 호출하도록 구성한다. 나머지의 Handler도 동일하게 구성한다. Handler1의 handleEvTrigger() Handler..
Rhapsody :: 자동생성 함수 Browser에서 확인 하기 Rhapsody가 자동생성한 함수들은(예를 들어 accessor, mutator 등) 기본적으로 Browser에 전시되지 않는다. 가끔 자동 생성된 함수들을 확인하거나 수정해야 하는 경우가 발생하는데 이럴때 사용되는 Tip이다. attribute buf를 하나 생성했다면 자동으로 accessor이나 mutator가 생성되지만, 아래 그림 처럼 해당 코드들이 Browser에 전시되지는 않는다. 해당 작업을 원하는 패키지나 클래스의 Property를 아래와 같이 수정한다. CG - CGGeneral - GeneratedCodeInBrowser을 체크하도록 한다. 그 후에 Ctrl + F7을 눌러 코드를 재생성하면 아래와 같은 결과를 확인할 수 있다.
Rhapsody :: OXF - OSAL(OS Adaptation Layer) 목차 소개 구성 예제 OMOSMutex 참고 소개# IBM Rhapsody가 다양한 임베디드 시스템 플랫폼에 구동이 가능하게 해주는 라이브러리이다. OS에서 제공해주는 다양한 서비스들을 wrapping해 놓아, OS Native한 API를 호출하지 않고 Rhapsody에서 제공하는 Wrapper들을 사용하면 플랫폼 비의존적인 프로그래밍이 가능하게 된다. 구성# OMEventQueue class OMMessageQueue class OMOS class OMOSConnectionPort class OMOSEventFlag class OMOSFactory class OMOSMessageQueue class OMOSMutex class OMOSSemaphore class OMOSSocket class OMOST..
Rhapsody :: How to replace tm() for high resolution time event. 목차 History tm() 문제점 해결방안 참고자료 History# 2011.05.21 : 최초작성. 다른 방법 확인중. 2011.05.23 : vxWorks에서 TimeResolution 기본값 확인. tm() # Rhapsody에서 time event를 만들기 위해서 가장 많이 쓰는 방법은 tm() 이벤트를 쓰는 것이다. 인자로는 ms로 주어진다. 사용법은 아래와 같다. 문제점 # tm() 방법은 기본으로 설정된 time resolution 이하로는 time event 발생이 불가능하다. 또한 타이머 쓰레드에 축적된 큐 상황에 따라 해당 시간을 만족시킬수 없을 수도 있다. 기본 설정은 $RHAPSODY_ROOT$\Share\LangCpp\oxf\OMTimerManagerDefaults.cpp 에서 ..