OSEK/VDX — 자동차 임베디드 시스템용 산업 표준 RTOS 스펙. 독일 OSEK(Offene Systeme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen, “자동차 전자 장치를 위한 개방형 시스템과 인터페이스”)와 프랑스 VDX(Vehicle Distributed eXecutive)가 합병되어 만들어졌다. 스펙일 뿐 구현체가 아니며, 여러 벤더가 각자 구현한다. AUTOSAR Classic OS가 이를 확장한 후속 표준.
기원
| 표준 | 국적 | 풀네임 |
|---|---|---|
| OSEK | 독일 | Offene Systeme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen |
| VDX | 프랑스 | Vehicle Distributed eXecutive |
| OSEK/VDX | (합병) | 자동차 시스템용 산업 표준 RTOS 스펙 |
구현체
| 구분 | 이름 |
|---|---|
| Commercial | ETAS RTA-OSEK, Elektrobit EB TRESOS OSEKCORE, Vector osCAN |
| Open Source | Trampoline OSEK, ERIKA Enterprise(OSEK/VDX 준수), nxtOSEK |
AUTOSAR OS (확장)
AUTOSAR Classic Platform의 OS는 OSEK/VDX의 확장 버전이다. 추가된 기능:
| 기능 | 의미 |
|---|---|
| Schedule table | 시간 기반 태스크 활성화 테이블 |
| Timing protection | 태스크/ISR별 실행 시간 초과 방어 |
| Memory protection | MMU/MPU 기반 메모리 영역 격리 |
상세 (Scalability Class SC1-4, Expiry Point 구조, Inter-Arrival/Execution Time Protection, Trusted/Non-trusted 격리)는 AUTOSAR OS 참고.
빌드 프로세스와 OIL
OSEK/VDX 애플리케이션은 C 코드 + OIL(OSEK Implementation Language) 설정 파일로 구성된다. OIL은 태스크·ISR·리소스·카운터·알람 등의 OS 객체를 정적으로 선언하는 언어. OSEK 빌드는 OIL 파서가 OS 설정 코드를 생성한 뒤 애플리케이션 C 코드와 링크하는 구조다. Arduino 환경에서 ERIKA Enterprise 빌드 프로세스가 대표 사례.
OS 객체 개요
OSEK/VDX가 정의하는 핵심 OS 객체 6종.
| 객체 | 역할 | 페이지 |
|---|---|---|
| Task | 기능 단위 / 코드 조각. OS가 제어 | OSEK 태스크와 ISR |
| ISR | 인터럽트 핸들러. HW 트리거 | OSEK 태스크와 ISR |
| Resource | 임계 영역(critical section)을 만드는 락 | OSEK 리소스 |
| Counter | HW 타이머의 추상화 | OSEK Counter와 Alarm |
| Alarm | 시간 기반 동작 활성화 (카운터 기반) | OSEK Counter와 Alarm |
| Event | 태스크 동기화 (Extended Task의 WaitEvent) | OSEK 태스크와 ISR 인라인 |
시스템 부팅·종료·에러·컨텍스트 스위치 시점에 사용자 정의 루틴을 훅할 수 있다 → OSEK Hook Routines.
OSEK 서비스 전반의 오류 통지·ErrorHook 연동은 OSEK Error Handling 참고.
OSEK Conformance Class
OSEK는 구현체가 준수해야 할 4단계 적합성 등급을 정의. 등급이 높을수록 더 많은 기능(동시 활성 인스턴스, 여러 태스크당 우선순위, Extended Task 등)을 지원.
| 항목 | BCC1 | BCC2 | ECC1 | ECC2 |
|---|---|---|---|---|
| 동시 활성 Task 인스턴스 | 1 | > 1 | 1 | > 1 (Basic Task만) |
| Ready Queue 최소 크기 | — | 8 | — | 16 |
| 동일 우선순위 태스크 복수 허용 | No | Yes | No | Yes |
| Extended Task당 Event 수 | (Extended 없음) | (Extended 없음) | — | 8 |
| 우선순위 레벨 수 | — | 8 | — | 16 |
| Resource 최소 수 | RES_SCHEDULER only | — | 8 (RES_SCHEDULER 포함) | — |
| Internal Resource 최소 수 | — | — | 2 | — |
| Alarm 최소 수 | — | — | 1 | — |
| Application Mode 최소 수 | — | — | 1 | — |
- BCC (Basic Conformance Class): Basic Task만 지원 (Waiting 상태 없음)
- ECC (Extended Conformance Class): Basic + Extended Task 지원 (Event 기반 Waiting 허용)
- 1 계열은 태스크당 단일 활성 인스턴스, 2 계열은 복수 활성 허용