기록

[GPT가 알려주는] HIDL이란? 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] HIDL이란?

heylo 2025. 9. 16. 14:03

좋은 질문이에요 👍 HIDL 은 안드로이드 플랫폼에서 꽤 중요한 개념이에요.


📌 HIDL이란?

HIDL = HAL Interface Definition Language
👉 직역하면 “HAL(하드웨어 추상화 계층) 인터페이스 정의 언어”입니다.

  • 안드로이드에서 시스템 서비스 ↔ HAL(드라이버 가까운 레벨) 사이의 인터페이스를 정의하는 방법이에요.
  • 쉽게 말해, Java/Kotlin 세계(앱/프레임워크)C++ 세계(드라이버/하드웨어) 가 서로 데이터를 주고받게 해주는 번역기 역할.

📌 왜 필요한가?

안드로이드 OS는 수많은 칩셋/보드/드라이버에서 돌아가야 하죠.

  • 구글이 만든 표준 인터페이스(HIDL) 만 지키면,
    → 하드웨어 제조사가 안드로이드 내부 코드 고치지 않고도 자기 드라이버(HAL)를 붙일 수 있어요.

즉, 호환성 + 유지보수 편리함 때문에 HIDL이 도입됨.


📌 구조 예시

  • 앱에서 “차량 속도 데이터 주세요” 요청
  • 프레임워크(Java) → HIDL 인터페이스를 통해 HAL(C++) 호출
  • HAL(C++) → 드라이버/ECU에서 실제 데이터 읽어옴
  • 응답을 다시 HIDL 통해 프레임워크로 전달

👉 개발자는 HIDL 파일(.hal)에 인터페이스(함수, 자료구조)를 정의하고, 빌드하면 Stub/Proxy 코드가 자동 생성돼요.


📌 현재 상황

  • 안드로이드 8 ~ 10 시절: HIDL이 표준
  • 안드로이드 11 이후: 점차 AIDL(Android Interface Definition Language) 로 대체되고 있음 (특히 자동차/멀티미디어 쪽)

✅ 정리

  • HIDL = 안드로이드에서 프레임워크 ↔ HAL ↔ 드라이버 연결하는 언어/규칙
  • 역할 = “앱 세계”와 “하드웨어 세계”를 이어주는 통역사

혹시 원하시면, 제가 “앱 → HIDL → HAL → 드라이버” 흐름을 그림으로 그려서 보여드릴까요?

 

 

📌 앱에서 하드웨어까지 흐름 (HIDL 경유)

  1. 앱/프레임워크 (Java/Kotlin)
    → “ECU에서 속도 좀 알려줘!” 라고 요청
  2. HIDL 인터페이스 (정의된 규칙)
    → 요청을 번역해서 HAL(C++)에게 전달
  3. HAL (Hardware Abstraction Layer, C++)
    → HIDL을 통해 받은 요청을 실제 드라이버 쪽 함수 호출로 바꿔줌
  4. 드라이버/하드웨어 (Kernel/Device)
    → 센서 값 읽고, 결과 반환
  5. 역순으로 응답 반환
    → 드라이버 → HAL → HIDL → 프레임워크/앱

👉 즉, HIDL은 앱 세계(프레임워크)하드웨어 세계(HAL/드라이버) 를 연결해주는 통역사예요.


혹시 제가 CanController.cpp 코드에서 HIDL 관련 함수들만 따로 모아서, “이건 프레임워크 ↔ HAL 연결부다” 라고 표시해드릴까요?