본문 바로가기
임베디드소프트웨어/AUTOSAR

3. AUTOSAR 용어 정리하기

by Go! Jake 2024. 3. 29.

AUTOSAR 문서에 등장하는 Composition SWC, Runnable Entity 용어를 정리하면 다음과 같다.

 

 

Ports / Port Interfaces

AUTOSAR에서 SWC간의 통신이나 SWC와 그 하위 계층 (Application -> RTE -> Basic Software) 통신 시 Port를 이용하여 통신이 가능하다. 어떤 데이터가 송수신될 지는 Configuration시 결정되어야한다.

 

Port는 두 종류가 있다. 하나는 Required Ports로 데이터를 수신받는 Port이고, 나머지 하나는 Provider Ports로 전송하는 Port이다.

Composition SWC

말그대로 SWC의 집합이다. 이 때 SWC는 하나의 ECU에서 정의된 System Configuration에 속해있는 SWC를 의미한다.

 

그렇다면 SWC는?

AUTOSAR에서, Application은 서로 다른 SWC들로 구성되어 있다. 여기서 SWC는 기능을 가지는 부품(component)이다. 예를 들어, 차량 에어컨 구동을 수행하는 SWC가 존재할 수 있다. SWC는 서로 소통한다.

 

종류는 다음과 같다.

1. Application SWC: 일반적인 SWC이고 Application의 일부이다.

2. SensorActuator SWC: Sensor와 Actuator를 다루는 특별한 SWC이다.

3. Parameter SWC: 외부 장치에 관련된 ECU 캘리브레이션 인자를 공유한다. 이 때 SWC는 특별히 내부 기능을 가지고 있지는 않다.

4. Composition WC: 위에서 설명.

5. Service Proxy SWC: 하나의 ECU나 여러 ECU에 관한 서비스를 제공하는데, Proxy 형태로 제공한다. 즉 중개 역할을 한다. 주목적은 차량 시스템 정보를 전달이다.

6. Service SWC: BSW Layer에서 Service에 특화된 SWC이다.

7. ECU Abstraction SWC: BSW에서 직접적으로 I/O에 접근할 때 사용되는 SWC이다. 다른 SWC는 I/O에 직접 접근할 수 없다.

8. Complex Device Driver SWC: 외부 장치를 위한 SWC를 의미한다. 이 때 외부 장치는 AUTOSAR가 지원하지 않는 외부 장치를 의마한다. 또는, 시간이 매우 중요한 작업에 사용된다.

9. Nvblock SWC: NVRAM 또는 memory를 사용할 때 사용된다.

 

 

Runnable Entity란?

Runnable Entity는 SWC의 일부이다. 그리고 application logic이 쓰여져 있는 곳이다. Runnable은 함수같은 것이다. AUTOSAR에서, 우리는 SWC 안에 Runnable을 만든다. 이 때 SWC의 소스 파일에 맞춰 함수의 뼈대가 생성된다. 말그대로 뼈대만 있다. 이 때의 함수 뼈대 이름은 Runnable 이름 그대로 쓰인다. 그리고 우리는 이 뼈대 안에 코드를 집어넣으면 된다.

 

Runnable은 변수를 가지기도 한다. 호출 방식은 여러 방식이 있다. 어떤 Runnable은 해당 Runnable을 호출하게 할 수 있는 Trigger points를 가지고 있고 어떤 Runnable은 특정 조건이 맞아야 호출되는 경우도 있다. 이러한 조건은 configuration을 통해 구현될 수 있다. 예를 들어, 초기화 Runnable은 초기화 과정에서 불릴 수 있다. 그리고 주기적으로 데이터를 송신하기 위해 주기적으로 호출할 수도 있고, 다른 RTE event에서 trigger를 통해 호출할 수 있다.

 

구조를 보면 다음과 같다.

void Runnable1(){
   /*runnable logic code*/
}

Composition SWC 구조
Composition SWC 구조

 

위 그림과 같이Composition SWC가 있고, 그 안에 SWC와 Runnable을 가지게 되는 구조이다. 

 

Runnable의 종류는 크게 3가지가 있다.

1. Init Runnable: ECU 초기화 단계에서 불리는 Runnable이다.

2. Periodic Runnable: 주기적으로 trigger해서 함수를 불러야할 때 사용되는 Runnable이다.

3. Server Runnable: Client/Server port interface에서 server측 구현할 때 사용되는 Runnable이다.

 

Runnable은 RTE event에 연결될 수 있다.

1. Timing Event: 정해진 시간이 될 때마다 Runnable을 Trigger한다. 이 때 Runnable 안에 있는 코드가 동작한다.

2. Data Received Event: Port를 통해 데이터를 전달받았을 때 Runnable을 Trigger한다.

3. Operation Invoked Event: Client에서 port interface를 통해 Server runnable을 부른다.

4. Mode Switch Event: ECU mode가 변경되었을 때, 특정 동작을 수행한다. 예를 들어, ECU shutdown시 shutdown phase을 통해 일정 작업을 수행해야한다.

5. Data Received Error Event: 데이터 수신 시 에러가 발생하면 Runnable을 호출한다.

6. Data Send Completed Event: 성공적으로 데이터 송신이 완료되면 Runnable을 호출한다.

 

Implementation Data Type

C언어의 typedef하고 비슷하다. Port interface를 통해 전달되는 Data type을 의미한다. Configuration할 때, 범위를 지정해야한다.

 

 

 

 

 

댓글