AUTOSAR OS 개요
AUTOSAR OS는 기존 OSEK OS를 기반으로 추가적인 기능을 더했다.
OSEK OS가 CC로 확장성을 제공하듯이 AUTOSAR OS도 아래와 같이 네 가지의 SC(Scalability Class)로 확장성을 제공한다.


OSEK과 비교되는 AUTOSAR OS의 가장 큰 특정 2가지는 다음과 같다.
1. OSEK/VDX에서는 1ms 단위를 보장하는 Software Timer가 필수이고, 1us 단위를 보장하는 Hardware Timer는 기본적으로 제공하지 않았다. 그러나 AUTOSAR OS는 1us Hardware Timer가 필수로 돼 있다.
2. 차량용 통신 프로토콜인 FlexRay를 완벽히 처리하기 위한 Schedule Table이 필수로 새롭게 추가되었다.
Schedule Table
Schedule Table은 고정적으로 정의되어 있는 expiry point의 집합이다. 빗대어 표현하면 일종의 시간표다.
Expiry Point는 일종의 시간표의 수업이다. Offset을 지정해서 schedule table 시작부터 tick간격을 설정할 수 있고, Action을 설정해서 Task Activation/Event Setting을 수행할 수도 있다.

Schedule Table은 Initial Expiry Point부터 Final Expiry Point까지 Offset이 증가하는 순서로 처리된다.
동시에 여러 Schedule table을 처리할 수 있다.
실행 방식은 Single-shot(한번 실행 후 종료), Repeating(반복 실행)으로 나뉘어진다.
Stack Monitoring
Stack이 설정된 값보다 초과되어 사용되고 있지 않은지 검사한다. Task, Category 2 ISR을 검사한다.
검사 시점은 context switching time 시점이다. SC3, SC4는 monitoring fault 전에 memory protection error가 발생한다.
Protection Hook
OS에 의해 감지되는 심각한 에러의 발생을 알리기 위해 사용되는 것으로 API함수 형태로 호출된다.
ProtectionReturnType ProtectionHook(StatusType Fatalerror)

Protection Hook이 설정된 경우 ProtectionHook을 호출하며 Hook이 설정되지 않은 경우 ShutdownOS를 호출한다.
Timing Protection
Timing Protection은 Task 및 ISR이 지정된 시간에 동작할 수 있도록 timing fault가 발생시 이에 대한 에러 처리를 수행하는 것이다.
Timing Fault가 발생하는 원인은 task가 dead line을 만족하지 못하는 경우 발생한다. 다만 deadline을 만족하지 못하는 task/ISR이 항상 문제의 원인인 것은 아니다.

Timing Fault의 종류는 Execution Budget / Lock Budget / Time Frame 이 있다.
OS-Application

OS-Application이란 OS Object들의 모음이다.
OS-Application을 사용하면 모든 OS object는 OS-Application에 속해야 한다.
Resource는 어느 App에도 속하지 않지만 명시적으로 access가 주어져야 한다.
하나의 OS-Application의 object는 모두 동일한 core에 있어야 한다.

OS-Application은 아래와 같이 세가지 상태를 갖는다.

동일한 OS-Application에 속한 Objects간에는 서로 접근이 가능하다.
하지만 다른 OS-Application의 Objects에 대한 접근을 설정이 필요하다.
OS-Application의 type은 Trusted OS-Application와 Non-Trusted OS-Application으로 나뉜다.
Trusted OS-Application은 다른 application에 service를 제공할 수 있고 monitoring, protection이 disable되어 있다. 또한 무제한적인 Memory, OS모듈에 대한 접근 권한이 있을 수 있다.
Non-Trusted OS-Application은 non-privileged 모드에서 동작하며 제한적으로 API와 hardware 자원에 접근할 수 있다.
IOC
정보 전달 방법에는 세 가지가 있다. OS-Application내 통신에는 RTE를 사용하고, ECU간 통신에는 COM을 사용한다. 마지막으로 OS-Application간 통신은 IOC(Inter OS-Application Communication)을 사용한다.
Core간 정보 교환을 수행할 수 있으며 memory가 보호되는 application간 통신에서 사용된다.

Call Trusted Function
Trusted OS-Application은 자기 함수를 Trusted function으로 제공하고, Non Trusted OS-Application은 이를 통해 Trusted OS-Application의 함수를 호출할 수 있다.
다만 이는 동일한 Core 내의 application간에만 사용할 수 있다.
Memory Protection
Memory Protection은 실행 프로그램이 특정 메모리 영역에 대하여 권한 없이 접근하지 못하도록 보호하는 서비스이다. 이를 위해서 위에서 살펴본대로 SC3/SC4를 선택해야 한다. 또한 HW가 Memory Protection을 지원해야 하고 OS가 관리하는 object에 대해서만 보호가 가능하다.
실행 프로그램이 특정 매모리 영역에 권한 없이 접근할 경우 ProtectionHook(E_OS_PROTECTION_MEMORY)를 호출한다.

Service Protection
Service Protection은 잘못된 OS Service 사용에 의해 OS에 문제가 생기는 것을 방지하기 위함이다.
'기술 > 개발 지식' 카테고리의 다른 글
| AUTOSAR - MEMORY (0) | 2020.03.16 |
|---|---|
| AUTOSAR - RTE (0) | 2020.03.16 |
| AUTOSAR - Overview (0) | 2020.03.16 |
| Medini Analyze를 활용한 기능안전(ISO26262) 세미나 - Part 4~6 (0) | 2020.02.26 |
| Medini Analyze를 활용한 기능안전(ISO26262) 세미나 - Part 3 (0) | 2020.02.25 |