AUTOSAR
Motivation
- Moto: Standards로 협력하고, 구현으로 경쟁한다.
- ECU의 표준이 되는 architecture로, 자동차 소프트웨어의 가장 중요한 표준
- Layered Architecture, abstractions, reusability, portability가 강조된다.
- BOSCH, BMW, MINI 등 9개의 core partners와 56개의 premium partners, 46개의 development partners로 구성된다.
- 전세계에 걸쳐 AUTOSAR software provider가 존재한다.
- Vector, ETAS, Hyundai Autron, Mento Graphics 등
- Classic Platform
- Real-time의 OSEK 기반
- ROM에서 코드를 직접 실행한다.
- Memory Protection Unit에 의해 모든 applications는 주소 공간이 동일하다.
- CAN, FlexRay 같은 Signal-based communication에 적합하다.
- Specification(표준)에 대한 플랫폼
- Adaptive Platform
- Connectivity, 자율주행, Sharing/Mobility Service, Electric Vehicle
- POSIX 기반
- App은 영구 메모리에서 RAM으로 로드된다.
- 각 application은 Memory Management Unit에 의해 별도의 virtual address를 가진다.
- Eternet 기반의 Service-oriented communication
- 다중 스케줄링 기법
- Specification(표준)과 Implementation
AUTOSAR의 Architecture
Layered Architecture
이 아키텍처의 상단은 Component-based Architecture로 이루어진다.
![](https://velog.velcdn.com/images/hyeon-ii/post/973c344b-1631-4006-bded-608682b9f9ab/image.png)
- Application Layer
- Application Software (Control Algorithms)
- 차량 기능을 구현한다.
- Runtime Environment (Interface)
- ECU에 맞추어 각 계층의 통합을 관리한다.
- 소프트웨어 컴포넌트 간 통신을 ECU에서 실행 가능한 형태로 제공한다.
- Basic Software
- 하드웨어의 독립성을 보장하며 인프라 및 서비스 기능을 제공한다.
- RTE와 상호작용하여 소프트웨어 간의 통신을 지원한다.
- Services Layer: OS
- ECU Abstraction Layer
- Microcontroller Abstraction Layer (MCAL)
- 하드웨어 장치에 접근하기 위한 드라이버 계층으로, 상위 소프트웨어는 하드웨어 세부사항을 신경 쓰지 않고 동작할 수 있다.
- 기본적인 통신을 위한 표준화된 디바이스 드라이버
- 개발 표준 문서로는 SRS(requirement)와 SWS(specification)가 있다.
- Complex Drivers
- ECU에서 하드웨어적으로 직접 지원되지 않는 장치를 제어하기 위한 장치
- 비표준 디바이스를 위한 OEM 자체 드라이버로 MCU와 무관하다.
- 점화 장치, 연료 분사 장치를 제어한다.
- 표준이 아니므로 이식성이 제한된다.
- Microcontroller (Hardware)
주요 개념
- SW-Components (SW-C)
- 소프트웨어 design, packaging, deployment에서 기능 단위 (실행 가능한 단위)
- Runnables(함수)의 집합이며, 각각은 주기가 있다.
- 통신을 위해 포트(Requirement, Provide)로 이루어진다.
- Virtual Functional Bus (VFB)
- 통신 메커니즘, 기본 SW의 인터페이스
- RTE 및 BSW에서 제공하는 통합 ECU 통신 메커니즘
- Mapping
- Runtime Environment (RTE)
- Basic Software (BSW)
동작 원리
- Client-Server
- Client에서 통신을 시작하고 server에 service를 요청한다.
- Server는 client로부터 요청을 받아 service를 전달한다.
- Sender-Receiver
- 비동기식
- Sender는 receiver로부터 응답 받기를 기다리지 않는다.
- communication 인프라는 정보를 전달해야 한다.
AUTOSAR 적용
- AUTOSAR BSW configuration tool을 사용하면 ARXML이 도출된다.
- ARXML: ECU Configuration Description(XML)
- ARXML을 이용하여 RTE, OS, Communication Services, MCAL Generator는 필요한 함수들을 자동으로 생성한다.
- RTE API
- Port P로 Data o를 보내는 함수:
Std_ReturnType Rte_Send_p_o
Rte_Receive_p_o
Rte_Call_p_o
Runnable과 Task 매핑
- Between SW-Cs
- SW-C는 runnables로 이루어진다.
- Runnables는 Send와 Receive로 소통한다.
- 각 component의 runnables 간 data가 흐를 때 속도가 매우 중요하다.
- Flow가 역방향으로 진행되면 다음 runnable에서는 한 주기 더 기다려야하므로 데이터가 흐르지 않는 문제가 있다.
- Task 안의 runnables는 Data Flow에 맞게 순방향으로 배치해야 한다.
Data Age vs. Reaction Time
- Data age timing constraint
- 데이터가 입력되고 actuation 할 때 시간이 얼마나 지났는지 나타낸다.
- ex) LKAS에서 오래된 입력 데이터를 기준으로 조향하면 횡방향 제어에 문제가 생긴다.
- Reaction time contraint
- 반응 시간
- ex) Airbag system에서 충돌에 대한 reaction이 늦어지면 큰 사고로 이어진다.
- Sampling과 Delay
- Undersampling: 짧은 주기 task에서 긴 주기 task로 데이터가 흐르는 것
- ex) Sensing 하고 주기가 맞지 않아 사용되지 않는 데이터가 발생한다.
- Oversampling: 긴 주기 task에서 짧은 주기 task로 데이터가 흐르는 것
- ex) 사용해야하는 데이터가 새로 입력되지 않아 이전 데이터를 한 차례 더 사용한다.