GENIVI 는 차량 인포테인먼트(IVI In-Vehicle Infotainment) Open Source개발과 규격을 위환 비영리 협의체이다.
GENIVI에서 집중하는 부분은 Middle Ware부분이다.
즉 Chip vendor에서 제공하는 BSP(Board Support Package)와 OEM과 3rd Party에서 개발하는 App부분은 제외된다.
구조도로 보면 아래와 같이 노란색과 보래색에 중점을 둔다.
Android와 비교하면 Linux BSP를 제외하고 모두 다른것을 볼수 있다.
Android와 간단히 비교가 가능한부분은 IPC부분이다. Android에서는 RPC(Remote procedure call)을 위해서 Android Binder를 Google에서 개발했지만. GENIVI에서는 기존에 DBUS를 사용했다.
아시다 시피 Android에서는 Android Binder를 사용해서 Process간 수행을 함수Call처럼 수행이 가능하게 해준다.
각 Module에대한 간단한 설명을 하자면 아래와 같다.
Persistence : 변화하는 Data를 저장하고 항상 유지시켜 주는 기능을 한다. 예를 들면 사용자가 마지막에 사용한 환경 마지막 최종 목적지, Sound Volume크기 정보같은 것들은 다시 IVI가 시작될때 유지시켜주어야 한다. 이렇게 사용자나 환경에 따라 변하지만 다시 유지되어야 하는 Data를 위해서 사용된다.
Software Management : ECU에서 수행되는 모든 Program에 대한 Storage를 관리하며, SOTA(software over the air)나 standardized automotive diagnostic protocols로 Update되는것을 관리한다. Android Package Manager와 비교가능하다.
LifeCycle : System Component, Integrated application에 시작과, 종료, 상태를 관리한다. Android Activity Manager와 비교가능하다.
User Management : 여러 사용자에 대한 Profile Data를 관리한다.
Housekeeping : Software Component에 동작과 Error를 모티터링 한다. ADLT (Automotive Diagnostics Log and Trace)를 포함한다.
GENIVI에서 H/W Platform관련 제한은 없지만 현재 freescale, Mentor Automotive, Intel, Nvidia, TI, Renesas 와 같은
Chip vendor에서 지원하고 있습니다.