Nnnnnnnnn
Communication Specifications 본문
Communication Specifications
Communicaton은 크게 두가지로 나눌 수 있다. Sender-Receiver 방식과 Client-Server 방식이다. Sender-Receiver는 다시 implicit과 explicit 방식으로 나뉜다. explict은 polling과 interrupt(Event)로 나뉘며 interrupt는 blocking(API)과 non blocking(API)으로 나뉜다. polling 은 데이터를 받았을 때 계속 체크하여, 받을 시 RE가 구동된다. interrupt는 데이터가 도착했을 때에 event를 발생시킨다. 만약 event가 없을 시, RE가 데이터를 읽으러가서 port에 만약 데이터가 없다면, 정보가 올때까지 기다린다. 이를 blocking이라고 한다. 즉, 기다리다가 return해서 함수를 돌게하는 것이 blocking인 것이다. 기다리는 동안 함수(RE)도 작동을 안하고 있는 것이다. polling 방식의 경우 계속해서 체크하기 때문에, 다른 runnable entity가 실행을 못할 수 있다. 그래서 Timing-event 시간 설정을 통해서 체크하도록 정해줄 수 있다.
Client-Server 방식은 Synchronous와 Asynchronous로 나뉜다. Asynchronous는 다시 blocking과 non blocking으로 나눌 수 있다. Client-Server에서 호출을 하면 port로 일단 가서, A라는 interface에 파라미터로 넘겨지면, 받을 컴포넌트의 RE에서 OPERATION-INVOKED-EVENT가 발생한다. 그에 대한 return값을 받아 다시 결과가 올때까지 기다리면 Synchronous로, blocking으로 기다린다. Asynchronous는 non blocking이다. Client-Server에선 call point를 지정하는 데, 이때 call api와 result api가 있다. 이는 C 와 다른 것이, C는 함수를 호출하면 결과가 나오지만 AUTOSAR에선 방식이 다르다. Synchronous 방식으로 result api를 non block으로 받도록 하여 적절히 섞을 수 있다. 데이터를 읽는 방식은 Sender-Receiver 방식과 같이 polling과 interrupt로 결정할 수 있다. RTE Event중 ASYNCHRONOUS-SERVER-CALL_RETURNS-EVENT를 예로 들면, call point로 보내고나서 return 값이 오면 그에 대한 RE를 실행시킬 수 있고, 아니면 Timing event를 걸어 계속 체크하게할 수도 있다.
Explicit Communication에는 UNQUEUED와 QUEUED가 있다. RTE_SEND와 RTE_RECEIVE는 큐를 사용하여, 데이터를 보낼때마다 새로운 데이터를 받을 수 있다. UNQUEUED는 RTE_WRITE과 RTE_DRead가 있다.
Implicit Communication의 경우 큐가 존재하지 않는다. Implicit은 실질적으로 몇 번 Send를 보내더라도 마지막 copy된 것만 보내주게 되어, Receive 입장에서 RE가 실행될 때 처음 온 Data를 받아 그 것만 계속 사용한다. Implicit Communication은 RTE_IWrite와 RTE_IRead가 있다.
Runnable entity와 Runnable entity의 communication은 TRIGGER를 이용해서만 가능하다. RE에서 같은 IB내의 RE를 발생시키는 것은 INTERNAL-TRIGGER-OCCURRED-EVENT이고, 외부 RE 접근을 위한 Event는 EXTERNAL이다.
RE끼리는 Global 변수 선언이 아닌, Inter-Runnable Variables를 사용한다. 사용할 수 있는 공유변수같은 것이다. IRV를 사용하면, memory protection 이득을 볼 수 있다. 변수이지만, API호출을 통해 읽고 쓸 수 있다.
'AUTOSAR' 카테고리의 다른 글
AUTOSAR OS-2 (0) | 2018.01.31 |
---|---|
AUTOSAR OS-1 (0) | 2018.01.31 |
RTE & Internal behavior (0) | 2018.01.24 |
MDE (0) | 2018.01.17 |
AUTOSAR SW Architecture (0) | 2018.01.17 |