이현구의 공부방

[AUTOSAR] SWC ( SoftwareComponent) 본문

AutoSar/기본기

[AUTOSAR] SWC ( SoftwareComponent)

이현구 2023. 3. 8. 11:26

AUTOSAR Layer 중에 ASW, RTE, BSW, MACAL, 하드웨어 레이어 이렇게 구성되어 있습니다.

 

그중에 ASW를 구성하는 SWC에 대해서 알아보자..

 

ASW ( Application Software Layer )는 SWC의 집합체입니다.

 

1. SWC ( Software Component )

  SWC는 독립된 실행단위이며, 기능에 따라 어플리케이션, 액추에이터, 센터 등으로 구분됩니다.

  SWC는 동작수행을 위해 Runnable을 가지고 있으며, Runnable은 트리거 및 특정 이벤트를 통해 실행이 됩니다.

  Runnable에 명시된 코드가 수행되면서 동작을 수행하게 됩니다.

  

이러한 Component들은 하드웨어 및 외부 Component들과 Port로 연결되어 데이터들을 주고받으면서 

동작을 수행하게 됩니다.

 

 

하나의 기능을 설계하게 된다면 SWC는 1 ~ n 개를 생성하여 요청과 응답 그리고 데이터 전달 및 받기 등을 통하여 기능을 수행되도록 구성할 수 있습니다.

 

때문에 SWC를 구성하고 서로간의 연결을 정의하기 전에 ECU 제어기 구성 사양서와 시스템 사양서 등을 먼저 검토를 진행하고 설계를 진행해야 합니다.

 

AUTOSAR 개발 순서는 일반적으로 탑다운 방식으로 설계가 되기 때문에 SWC 기술사양서 제작은 명확하게 정의한 후

진행을 해야 합니다.

 

 

 2. SWC 종류

Component Type ( 구조체와 유사 ) Disciption
SoftwareComponentType   추상 class 기본 Component의 틀이며 코드 생성이 없고 형태만 있는 Type
AtomicSwComponentType   추상 class meta-class 간 상속문법 확장용 틀이며 코드 생성이 별도로 없는 Type
ParameterSwComponentType  ECU runtime 시 ECU 내부의 특정 Data에 대하여 특정 Access 목적 처리를 하기 위한 용도에만 사용되는 특수 목적의 sw Component 타입이며 internal behavior를 가질 수 없고 h파일이 생성된다.
CompositionSwComponentType  AUTOSAR Meta-model을 이용하여 설계하는 meta-class
주로 subsystem 1개당 CSWC를 1개 설계하여 사용한다. 유일하게 SwConnector를 가질 수 있어 여러 Component들을 만들고 그들을 CSWC로 묶어 상호작용을 나타낼 수 있다. internal behavior를 가질 수 없고 코드생성이 없다.
SensorActuatorSwComponentType  AUTOSAR Meta-model을 이용하여 직접 설계하는 meta-classEcuAbstractionSwComponentType과 RTE 통신을 위해 사용하는 Component Type이다.
internal behavior를 가질 수 있고 하드웨어의 센서와 엑추에이터와 관련 있는 Type 이므로 하드웨어와의 연관성을 추가로 설계할 수 있다.
ApplicationSwComponentType
AUTOSAR meta-model을 이용하여 직접 설계하는 meta-class
하드웨어 의존적이지 않은 순수한 Application로직만을 구현해야 한다. Internal Behavior를 가질 수 있다
(Internal Behavior가 있어야 Task Body에서 호출되는 스케줄링 함수인 Runnable Entity만들 있다), .h 파일생성
NvBlockSwComponentType AUTOSAR meta-model을 이용하여 직접 설계하는 meta-class
주로 비휘발성 메모리 Block비휘발성 데이터를 읽고 쓰기 위한 요청을 담당하기 위해 만들어진 특수 목적의 컴포넌트 타입 Internal Behavior를 가질 수 있다. .h 파일생성

ComplexDeviceDriverSwComponentType AUTOSAR meta-model을 이용하여 직접 설계하는 meta-class
 AUTOSAR에서 정의한 MCAL Driver를 사용하지 않고, 자체 개발한 Driver를 사용하여 하드웨어를 제어하기 위한 목적일 때 사용하는 컴포넌트 타입이며 빠르게 처리가 필요한 로직을 구현하고자 할때 주로 사용하는 타입. Internal Behavior를 가질 수 있다.h 파일생성
ServiceSwComponentType DCM, DEM, NvM, BswM, EcuM 등 Basic Software 모듈이 해당되는 타입이며 Internal behavior를 가질 수 있다. h, c 파일 생성 // 자동 생성되는 c 구편하일은 1 ~ n 개가 생성될 수 있다.
EcuAbstractionSwComponentType AUTOSAR meta-model을 이용하여 직접 설계하는 meta-class주로 AUTOSAR에서 정의한 MCAL Driver API를 사용하여 하드웨어를 직접 제어하기 위하여 사용하는 타입. Internal Behavior를 가질 수 있다. c 파일 생성   
ServiceProxySwComponentType Configuration Tool을 이용하여 자동 생성되는 meta-class, BswM 서비스 모듈과 ASC가 다른 ECU에 Deploy 될 때와 같은 특수한 목적일 때 사용하는 타입

3. Communiaction 

 AUTOSAR에서 정의한 소프트웨어 구성 요소 간의 통신 기능을 의미합니다.

SWC 통신을 위해 RTE와 PDU를 사용합니다. SWC 간의 데이터 흐름을 일관성 있게 관리해주며 AUTOSAR 기반 제품 간의 호환성을 보장되게 합니다. 

  3 - 1 Sender/Receiver 

  • Direct 방식
    - 통신을 위해서 RTE가 필요로 하지 않고 다른 SWC와 직접적으로 데이터를 주고받을 수 있는 방식입니다.
    - 주로 작은 규모의 시스템에서 사용되며, 컴포넌트 간의 교환을 빠르고 간단하게 처리할 수 있습니다.
    - <DataType> Rte_Read_<p>_<d>(void)
    - void Rte_Write_<p>_<d>(IN <DataType> data)

  • Buffered 방식
    - Direct 방식과 달리 AUTOSAR RTE에서 제공하는 PDU(Protocol Data Unit) 큐 버퍼를 사용하여 데이터를 처리하여 RTE가 필요합니다.
    - 송수신 방향과 큐 버퍼의 크기, 데이터 유형 등을 구성하여 사용합니다.
    - 대규모 시스템에서 주로 사용됩니다.
    - wirte 시에 Direct 방식과 달리 Runnable이 끝날 때 써집니다.
    - <DataType> Rte_IRead_<r>_<p>_<d>(void)
    - void Rte_IWrite_<r>_<p>_<d>(IN <DataType> data)
  • Queued방식
    - AUTOSAR RTE에서 제공하는 Queue를 사용하여 데이터를 처리하며 Queue 이기 때문에 FIFO 방식으로 데이터를 처리합니다. 

  3 - 2 Client/Sever

  • Synchronous ( 동기적 ) 
    - Client가 Server에 요청을 보내고 요청이 완료될 때까지 대기하는 방식 ( Blocked)
    - 모니터링 시스템에 주로 사용 
    - Std_ReturnType Rte_Call_<p>_<o> (OUT <param>,....)
    - Timeout 발생 시( Sever로부터 완료 응답이 오지 않을 시)에 Client는 Timeout 예외를 발생시키고 예외 처리 동작으로 넘어갑니다.
  • Asynchoronus (비동기적)
    - Client가 Server에 요청을 보내고 요청이 완료될 때까지 대기하지 않고 다른 작업을 수행하는 방식
    - Server는 요청을 처리한 후에 Polling or Event 방식으로 받을 수 있음.
    - Std_ReturnType Rte_Result_<p>_<o>(IN/OUT  | OUT <param>,... )

잘못된 정보나 수정이 필요한 내용이 있다면 댓글 주시면 감사합니다 :)

 

Comments