반응형

HAL 3

안드로이드 14+ 커스텀 HAL 모듈 만들기: 최신 Stable AIDL 기반 실전 AOSP 빌드 가이드

안드로이드 기반의 로봇 하드웨어나 스마트 가전, 혹은 커스텀 임베디드 보드를 개발하다 보면 필연적으로 세상에 없던 나만의 커스텀 센서나 물리 모터를 제어해야 하는 순간을 마주합니다. 리눅스 커널 단에 드라이버 노드(/dev/my_sensor)를 멋지게 뚫어놓았더라도, 이를 상위 안드로이드 시스템 서비스와 앱 레이어까지 안전하게 끌어올리려면 결국 나만의 커스텀 HAL(Hardware Abstraction Layer) 모듈을 빌드해야 하는데요.하지만 구글 공식 문서를 찾아보면 구형 HIDL 방식과 최신 AIDL 방식이 뒤섞여 있어 초보 플랫폼 엔지니어들은 시작부터 갈 길을 잃기 십상입니다. 과거 안드로이드 8~9 시절에 쓰던 Passthrough HIDL 구조는 이제 완전히 역사의 뒤안길로 사라졌기 때문이죠..

안드로이드 미디어 스택의 양대 산맥: Camera HAL3와 Audio HAL 구조 및 AOSP 코드 완벽 분석

안드로이드 스마트폰의 수많은 하드웨어 기능 중 사용자가 가장 민감하게 성능을 체감하고, 제조사 엔지니어들이 밤을 새우며 성능을 쥐어짜내는 도메인을 꼽으라면 단연 카메라(Camera)와 오디오(Audio)일 것입니다. 찰나의 순간을 포착하는 초고속 카메라 스트리밍, 그리고 소리의 끊김이나 지연(Latency)이 없어야 하는 오디오 처리는 안드로이드 미디어 프레임워크의 핵심 자존심이기도 한데요.이 무겁고 복잡한 멀티미디어 생데이터(Raw Data)를 프레임워크 상단에서 제어하기 위해, 하단 영역에서는 정교하게 설계된 미디어 전용 HAL들이 톱니바퀴처럼 맞물려 돌아가고 있습니다. 이번 포스팅에서는 안드로이드 미디어 시스템의 중심축인 Camera HAL과 Audio HAL의 최신 아키텍처 구조를 살펴보고, 실제..

안드로이드 HAL과 리눅스 커널 드라이버의 연결 고리: 시스템 콜 기반 하드웨어 제어 분석

안드로이드 OS 레벨에서 하드웨어를 제어한다는 것은 결국 두 가지 세계의 경계를 넘나드는 일입니다. 하나는 자바 프레임워크의 명령을 받아 구동되는 유저 스페이스(User Space)의 HAL이고, 다른 하나는 하드웨어 레지스터와 물리적인 신호를 직접 주고받는 커널 스페이스(Kernel Space)의 리눅스 커널 드라이버입니다.아무리 화려한 최신 AIDL HAL 인터페이스를 설계하더라도, 결국 최하단의 커널 드라이버가 열어둔 디바이스 노드에 제대로 데이터를 찔러 넣어주지 못하면 하드웨어는 꼼짝도 하지 않는데요. 이번 포스팅에서는 안드로이드 시스템 엔지니어링의 핵심인 HAL과 커널 드라이버의 상호작용 메커니즘을 알아보고, AOSP 진동(Vibrator) 모듈 코드를 예시로 삼아 유저 영역과 커널 영역이 물리..

반응형