본문 바로가기
자동차 임베디드 SW/Adaptive Autosar

Adaptive Autosar Com 및 인터페이스

by 존버매니아.임베디드 개발자 2024. 7. 9.
반응형

※ 아래 2개 문서 참고


Adaptive Autosar(이하 AP)에서 Application Swc들은 Com 을 통해 외부와 통신(상호작용한다.)

CP(Autosar Classic Platform) 의 경우
무조건 com을 통하는건 아니고, 같은 제어기 내의 app swc 끼리 통신 할 때는 com 을 거치지않고 RTE만 거쳐서 연결됨.

그러나 AP에서는 같은 제어기 내부라 할지라도 프로세스끼리 통신할 때 IPC(Inter Process Communication)을 해야되는데 이게 Com 하위에 있어서 결국 동일 제어기에서 프로세스 끼리 통신할때도 com을 이용하게 된다.
 
외부 제어기와의 통신인 경우, COM을 통해 SOME/IP 라는 프로토콜을 바탕으로 TCP/IP를 거쳐 이더넷통신으로 연결됨

 


▶ 인터페이스는 크게 3종류로 분류
method , Event , Field

Event는 CP의 SR 포트를 생각하면 쉽다.
클라이언트가 구독한 데이터에 대해서, 서버가 주기적으로 혹은 값이 변경됐을때 해당 데이터 값을 클라이언트에게 제공해주는게 이벤트 이다.

Method는 함수콜과 비슷한 개념이다. CP의 CS 포트를 생각하면 이해가 쉽다.
Request & Response 또는 Fire&Forget
두가지 방식이 있는데. CP의 Sync, Async라고 생각하면 된다.

Field는 세부적으로 getter , setter, notifier 3가지로 분류되는데.
getter 는 서버의 어떤 데이터를 받아오는 method다.
setter는 서버의 어떤 데이터 값을 set하는 method다.
notifier는 서버로부터 값을 받아오는 Event다.

즉. Field는 따지고보면 결국 메소드, 이벤트가 섞여있는 것이다.


인터페이스 구현 과정은 크게 다음과 같다.

1.Service Interface 설계. (CP의 포트 인터페이스와 유사한 개념)

2.서비스 인터페이스 설계과정에서, Event , Method, Filed 등이 셋팅된다.
하나의 서비스 인터페이스에 다수의 event , Method, Field 셋팅 가능하다.

Event의 경우 데이터 받는 용도니까 Event 이름이랑 데이터 타입만 셋팅하면 된다.

Method는 함수콜이니까 함수정의 하듯이 이름, Argument, 그리고 return 값 을 셋팅하면 되는데 CP의 CS포트 인터페이스랑 똑같다고 보면 된다.

Field의 경우 결국 데이터 값을 쓰거나 읽는거라서 Field에서 이용할 데이터의 타입. 그리고 setter , getter, notifier 어떤것을 선택할지를 셋팅하면 된다.

3.인터페이스를 셋팅한 후, 인터페이스를 이용하여 App swc에 포트를 추가해야한다. 서버측은 P port , 클라이언트측은 Rport 생성.

참고로. 프로세스가 아니라 Swc랑만 연결한 상태라는것에 주의하자.

4.이후. 서버인터페이스를 실체화해줘야된다.
서버인터페이스를 바탕으로
Deployment를 만들고, Deployment를 바탕으로 Instance라는걸 만든다.

서비스 인스턴스를 만들었다면, 이것을 머신과 연결하고. 그리고 프로세스랑도 연결되야한다.

앞에서 서비스 인터페이스. swc랑 연결했었고.
요번에는 서비스 인스턴스랑 프로세스가 연결된 것에 유의한다.

 

Authoring Tool로 서비스 인터페이스 정의하고 이런저런 작업들을  수행한 후,
Code Gen을 하면 클라이언트측은 Proxy , 서버측은 Skeleton 이라는 코드가 생성된다.

여기서 생성되는 코드라함은.. 클래스가 생성된다고 할 수 있다.

클래스 안에 인터페이스에서 정의해둔 메소드가 만들어져있으니 클라이언트 쪽에서는 해당 클래스 사용하여 메소드 호출하는 식으로 코드구현 하면 된다.

서버측은, 해당 클래스의 메소드가 내부는 비어져있기 때문에 메소드 내부를 정의하는 코드구현이 필요하다.


 

한편,  위 작업은 Authoring Tool을 통하여 arxml로 설계되며, code gen을 하면 해당 서비스에 대한 Class가 생성된다.

서버측은 Skeleton , 클라이언트 측은 Proxy라고 부른다.
( Class가 2개 생기는건 아니고.. 뭐라 설명하기 힘들다..)

생성된 클래스는 arxml 설계 내용을 반영하여 생성되는데 이때 메소드들이 내부가 구현되지 않은 상태이다.

서버측은 sw코드에서 해당 클래스의 메소드 내부를 구현해줘야한다.

클라이언트측은 해당 클래스를 사용만 하면된다.





반응형