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

2. AUTOSAR Basic Softwateware (BSW) 시작하기

by Go! Jake 2024. 2. 24.

AUTOSAR는 총 3가지 계층으로 되어있다. 여기서 하나는 최상위 층인 Application이고, RTE, 그리고 BSW순이다. BSW는 MCU(uC)와 직접 통신하고 제어한다. 세부 내용을 살펴보았다.

AUTOSAR BSW 개요

 

위 그림은 AUTOSAR의 전반적인 구조를 설명하고 있고 RTE 아래 계층은 BSW이고 세부적으로 나누어져있다.

 

- 검은색 계층: Microcontroller로 AUTOSAR가 동작하는 Microcontroller이다.

- 빨간색 계층: MCAL(Microcontroller Abstraction Layer)에 속하는 드라이버이다. 이 드라이버를 통해 MCU의 주변 장치(ADC, DIO)에 접근한다. BSW에서 가장 낮은 계층이다. MCU가 바뀌면 드라이버들이 영향을 받는다. 예를 들어 A라는 MCU에서 특정 레지스터 값을 설정해야 동작하는데, B라는 MCU로 바뀌면 레지스터 값을 정상적으로 쓸 수 없다.

- 초록색 계층: ECU Abstraction layer에 속한다. ECU 추상화 계층인데, 추상화는 말그대로 복잡한 부분을 숨겨준다는 것이다. 예를 들어 ADC로 전압 값을 읽어올 때 수행되는 복잡한 과정을 숨겨준다. 그리고 사용자가 간단히 사용할 수 있는 API를 제공한다.

- 초록색 계층 내 CDD: CDD는 좀 특별하다. MCU에 직접 연결되면서 또 Application 계층에 있는 SWC와 RTE를 통해 직접적으로 연결된다. AUTOSAR에 정의되어 있지 않은 경우 CDD에 속하는 경우가 많다. 예를 들어 특정 기능을 목적으로 특정 기능을 하는 칩(ASIC)이 포함되면 이는 CDD에 속하게 된다.

- 파란색 계층: Services Layer로 BSW 상위 층에 속한다. Application이 사용하는 기본적인 서비스를 제공한다. OS 기능이라든지, 통신 기능 (CAN), 메모리 서비스 (NVRAM), ECU state management 등이 있다.

 

이 외 다른 개념들....

AUTOSAR 내부 및 외부 드라이버: AUTOSAR에서는 내부와 외부 드라이버가 있다. 마이크로 컨트롤러 내부에 있는지 또는 외부에 있는지로 구별한다. 내부 드라이버는 마이크로 컨트롤러 주변 장치인 ADC, EEPROM 등이 있고, 외부 드라이버는 마이크로 컨트롤러 밖에 있는 External flash, Watchdog, EEPROM 등이 있다. 내부 드라이버는 MCAL 계층에 있고 외부 드라이버는 ECU Abstraction 계층에 있다.

 

Interface, Handler, Manager 개념

AUTOSAR는 Interface, Handler, Manager의 개념이 있다. Interface는 ECU Abstraction 에 속하고, Manager는 Services에 속한다.Interface는 더 낮은 레벨의 모듈을 추상화하고, 상위 계층에서 접근할 수 있도록 API를 제공하는 역할을 한다. 인터페이스는 장치 개수와 하드웨어 유형에 상관없이 상위 계층이 장치에 접근할 수 있도록 한다.Handler는 다중 또는 비동기적 접근에 대해 제어한다. 드라이버로 구현되거나 인터페이스에 구현된다.Manager는 여러 사용자에게 특정 서비스를 제공하고, Handler보다 더 많은 기능이 필요할 때 사용된다. 예를 들어, NVRAM manager는 내부/외부 플래시 메모리에 대한 접근을 제어한다.

 

 

AUTOSAR BSW 세부적으로 살펴 보기

그래서 이 각 모듈들에 대해 세부적으로 살펴보려고 한다. 

1. MCAL (Microncontroller Abstraction Layer)

- Microcontroller Drivers: 이 모듈은 MCU의 주변장치를 접근하는 내부 드라이버이다. Watchdog, General Purpose Timers 등이 있다.

- Memory Drivers: 이 모듈은 내부 Flash, 내부 EEPROM, 또는 external flash와 같은 memory mapped devices에 접근할 수 있게 한

- Crypto Drivers: HSM 과 같은 Crypto device를 위한 드라이버이다.

- Wireless Communication Drivers: 무선 네트워크 시스템 통신을 위한 드라이버이다. 차량 또는 off board communication을 위해 사용된다.

- Communication Drivers: SPI 또는 I2C와 같은 on board communication을 위한 드라이버 모듈이다. 또한 CAN과 FlexRay도 담당한다.

 

2. CDD (Complex Device Drivers)

CDD는 AUTOSAR 표준 기능에 해당되지 않는 BSW 모듈이다. 예를 들어, 특정 요구를 만족하기 위한 chip이 있고 이에 대응되는 드라이버가 필요하다면 해당 드라이버가 CDD에 속한다. 또한 정교한 타이밍 제약이 있는 경우도 이에 포함된다. 예를 들어, Engine Control Unit의 Injection driver가 이에 해당될 수 있다. CDD는 Microcontroller와 직접적으로 연결되고 RTE와도 직접 연결되어 Application과 소통한다.

 

3. ECU Abstraction Layer

ECU Abstraction Layer는 ECU 추상화로 ECU Hardware로부터의 독립성을 보장하는 모듈이다. 즉, 사용자 또는 사용처에서는 HW에 대해 알 필요는 없고, ECU Abstraction Layer와 소통하며 필요한 요청만 보내면 된다. 

- I/O Hardware Abstraction: 과거 ECU 개발에서는 low level에 대해서도 고민을 했어야 했다. 예를 들어 Starter Relay를 ON하는 DIO pin을 사용하고 싶으면 Starter Relay에 해당하는 Port pin을 찾고 그 pin을 특정하고 실제 함수에 넣어 개발을 했어야 했다. 이 경우 HW를 고려하여 정확히 맞는 pin을 특정해야했던 반면,  AUTOSAR의 경우는 low level은 추상화를 하고 I/O 사용에 대한 API만을 제공한다. 예를 들어, 기존에는 P10.1이라는 Port pin을 특정해야했다면, StarterRelay_DIO라는 매크로를 사용하고 API에만 넘겨주면 된다. 이렇게 되면 사용처에서는 StarterRelay_DIO와 API만 있으면 어느 HW에서도 StarterRelay_DIO를 사용할 수 있다.

 

- Communication Hardware Abstraction

Communication Hardware Abstraction 모듈은 통신하는 제어기들의 위치와 ECU HW를 추상화한다. Application에서는 CAN을 사용하는 지, FlexRay를 사용하는 지 알 필요는 없다. 이 모듈을 통해 사용하는 사용처에서는 HW에 상관없이 일관된 코드로 통신할 수 있다. 이는 이 모듈이 추상화를 해줬기 때문. 따라서 해당 모듈은 API를 제공하는 데, 데이터 송신과 수신을 위한 API를 제공한다.

 

- Crypto Hardware Abstraction

이 모듈은 Crypto 기능을 추상화하며 Crypto 관련된 정보를 추상화한다. 여기에는 내부, 외부 장치 또는 Software 관련 정보가 포함된다. 상위 계층에서는 Crypto가 사용되었는 지, on-chip, on-board 또는 software code Crypto 어떤 게 사용되는 지 알 수 없다. Crypto 장치에 대한 mechanism만 제공한다.

 

- Memory Hardware Abstraction

이 모듈은 사용되고 있는 memory device 위치를 추상화한다. memory는 on-chip 또는 on-board 여부에 따라 다른 ECU hardware 구조를 가지고 있을 수 있다. 모든 정보는 Application으로부터 추상화된 정보이다. 추상화한 것이지 memory 장치를 제어할 수 있는 것은 아니다.

 

- Onboard Device Abstraction

이 모듈은 ECU 특화된 on-board 장치를 추상화한다. Sensor 또는 Actuator 또는 Timer에 해당하지 않는 장치들이 여기에 포함된다.

 

4. Services

- Communication Services

이 모듈은 일관된 차량 통신을 제공하기 위한 서비스이다. 통신 그리고 진단 통신을 제공하고 프로토콜과 메세지 속성 등과 같은 세부 내용을 추상화하여 Application에 제공한다. Communication Services는 MCAL 내의 Communication driver (SPI, I2C 등)와 상호작용한다.

- Off board Communication Services이 모듈은 외부 clients communication과의 통신을 위한 모듈이다. Wireless network를 위한 것이라고 보면 된다. 세 가지 블럭을 가지고 있고, 각각 기능이 다르다. 프로토콜과 속성을 추상화하여 Wireless Ethernet network를 제공한다.

- Memory Services이 모듈은 NVRAM 매니저로 구성되어있다. 물론 NVDATA를 관리감독하는 역할을 한다. 일반적으로, Application에서 나중 사용을 위해 NVRAM에 저장하고 싶어하고, 이를 일관된 방식으로 저장 관리하는 역할을 한다. 물론, 메모리 위치에 대한 추상화를 하고 low level 속성에 대해서도 추상화한다. NVRAM에 대한 저장, 불러오기, checksum 계산 등을 수행한다.

- System Services이 모듈은 모든 모듈 레이어에서 사용된다. 예를 들어, Error messenger, Real Time OS 등이다. 이러한 서비스는 MCU에 따라 달라지고 특정 MCU 기능을 제공한다.

댓글