1. OSEK/VDX이란
OSEK은 차량용 임베디드 시스템을 위한 운영체제, 통신 스택 및 네트워크 관리 프로토콜을 만든 표준 기관 혹은 표준 규격 그 자체를 말합니다. 그중 OSEK OS는 차량용 Real-time OS 표준화 단체 및 표준 규격을 말합니다. 정식 명칭은 OSEK/VDX 입니다. RTOS에 대해 궁금하시면 다음의 글(RTOS(Real-Time OS)란?)을 읽어 보시길 추천드립니다.
차량용 제어기 개발 업체들은 차량용 소프트웨어를 사용하기에 알맞은 운영체제를 개발하기 위해 노력해왔습니다. 하지만, 운영체제를 업체마다 독립적으로 개발하면서 API가 호환되지 않았습니다. 서로 다른 운영체제로 인해 응용 소프트웨어의 재사용성이 떨어졌고 이로 인해 개발에 큰 비용이 들었습니다. 운영체제가 다양해지면서 발생되는 문제를 극복하고자, 유럽 자동차 업체들은 OSEK라는 단체를 조직하여 차량용 OS 표준을 수립하고자 했습니다.
OSEK은 독일 자동차 회사의 공동 프로젝트이고 VDX는 프랑스 자동차 회사의 공동 프로젝트인데 이 둘이 합쳐져 OSEK/VDX가 되었습니다. 줄여서 그냥 OSEK이라 부르기도 합니다.
OSEK 표준은 OSEK OS, OSEK COM, OSEKtime OS, OSEK FTCom, OIL 등의 세부 표준으로 나누어집니다.
2. 왜 OSEK을 사용하는가
OSEK의 목표 중 하나는 응용 소프트웨어의 이식성(portability)와 재사용성(re-usability)를 높이는 것입니다. OSEK에서 응용 소프트웨어라 하면 주로 차량 제어 애플리케이션을 말합니다. API가 달라지면 소스 코드 상에 호환성이 생길 수 없습니다. OSEK은 표준화된 규격을 만듦으로써 소스 코드 상에 호환성이 생기고 응용 소프트웨어 포팅에 들어가는 노력을 줄이고자 했습니다.
OIL(Osek Implementation Language)은 대표적인 OSEK의 이식성을 높이기위한 기능입니다. OIL은 코드 컴파일, 보드, 장치, 커널, 라이브러리, 애플리케이션에 요구하는 static 한 모든 정보를 명시하기 위한 언어입니다. OIL이라는 언어를 통해 OSEK의 Object(OSEK 운영체제가 제공해주는 기능)에 대한 설정을 하고 이를 통해 운영체제에 응용 소프트웨어를 쉽게 탑재할 수 있습니다. OIL 파일은 OIL 파일 작성을 도와주는 툴을 사용하거나 OSEK OIL language로 작성할 수 있습니다.
OSEK 2.2.3 표준은 2005년에 나온 오래된 표준이지만, AUTOSAR OS가 OSEK OS를 기반으로 만들어진 만큼 차량용 소프트웨어를 이해하는 데 도움이 됩니다.
3. Scalability
다양한 차량 및 플랫폼에 맞게 변형하여 적용하는 것을 Scalability라 합니다.
차량용 운영체제는 개발 당시에 만들어 놓은 기능만 사용합니다. 필요 이상으로 만드는 건 낭비이고 애플리케이션에 맞는 기능만 있으면 됩니다. 애플리케이션이 정해지면 그에 맞는 운영체제가 정해지는 셈입니다. 예를 들어, OSEK OS에서는 Task state를 Basic Task 혹은 Extended Task로 선택할 수 있습니다. 이 둘의 차이는 waiting 상태인데 애플리케이션을 스케줄링함에 있어 waiting 상태가 필요하면 Extended Task를 고르면 되고 필요 없으면 Basic Task를 고르면 됩니다.
우리가 일상에서 사용하는 윈도우즈, 리눅스를 보면 그 차이가 더 확실하게 느껴집니다. 아시다시피 윈도우즈, 리눅스는 각 PC에 동일한 운영체제가 설치됩니다. 이러한 GPOS에는 어떤 프로그램이 돌아갈지 모르기 때문에 모든 걸 돌릴 준비가 되어있어야 하기 때문입니다.
3. OSEK Implementations
OSEK은 제품이 아닌 규격(specification) 입니다. OSEK에는 OSEK이 어떻게 생겨야 되는지에 대한 명세가 나와있습니다. OSEK Implementations는 OSEK specification에 따라 만든 제품을 말합니다.
OSEK의 구현물은 ETAS RTA-OSEK, EB TRESOS OSEKCORE, Vector osCAN와 같이 상업용인 경우도 있고 Erika enterprise, Trampoline OSEK, nxtOSEK와 같이 오픈소스인 경우도 있습니다. OSEK Implementation에 대한 정보는 OSEK-WIKI에서 확인할 수 있습니다. 자동차에 탑재되는 건 대부분 상업용 제품이고 연구실 실험에서는 오픈소스를 많이 사용합니다. 자동차 제조 업체나 협력업체에서는 OSEK을 직접 개발하는 경우보다 이미 개발된 OSEK을 구매하여 필요에 맞게 변형하여 사용하는 것이 일반적입니다.
5. OSEK Build Process
OSEK OS는 OIL 파일로 OSEK OS에 대한 각 종 설정을 쉽게 할 수 있습니다. OIL 파일의 존재로 빌드 과정에 약간의 차이가 있습니다.
OIL 파일을 작성하면 System Generator(SG)는 OIL의 설정대로 OSEK OS 커널 파일을 생성하고 관련 파일을 만들게 됩니다. 사용자가 작성한 코드와 자동 생성된 파일을 컴파일 및 링크하여 실행파일을 만듭니다. 즉, 사용자가 작성해야 되는 건 소스 코드와 OIL 파일입니다.
6. OSEK OS Objects
OSEK OS Object는 OSEK OS에서 제공하는 서비스를 말합니다. OSEK에서는 Task, Alarm, Interrupt, Resource, Event, Hook과 같은 서비스 기능을 제공합니다.
Task
- OS에 의해 제어되는 프로그램의 기본 단위
Event
- 태스크의 동기화 객체
- Task 간의 수행 순서 동기를 맞추기 위해, 지정된 Event 발생까지 Task를 Waiting 시키는 기법
Interrupt
- 입출력 하드웨어 등의 장치 또는 예외 상황이 발생하여 처리가 필요한 경우, 마이크로프로세서에 알려 처리할 수 있도록 하는 신호
Alarm
- 반복적으로 발생하는 이벤트를 다루기 위한 기능
Resource
- 여러 task가 공유된 자원에 병행 접근하는 것을 조정
Hook
- 특정한 상황에서 OS에 의해 호출되는 함수
OSEK OS을 공부하는 가장 좋은 방법은 OSEK specification 2.2.3을 읽어보는 것이라 생각합니다. OSEK OS를 당장 개발해야 되는 게 아니라면 규격을 천천히 읽어보며 어떤 OS를 만드려고 했는지를 생각해보면 좋을 거 같습니다.
*reference
OSEK와 AUTOSAR를 중심으로 본 차량용 OS와 미들웨어 기술 동향
'Operating System > RTOS' 카테고리의 다른 글
[OSEK OS] ISR (0) | 2021.07.26 |
---|---|
[OSEK OS] Task와 Event (0) | 2021.07.10 |
RTOS 용어 정리 (0) | 2021.06.30 |
RTOS (Real-Time OS) 란? (0) | 2021.06.27 |