CS/임베디드

HAL과 BSP

졔졔311 2025. 1. 7. 11:11
728x90
반응형

어떤 앱의 architecture를 보면서 발견한 임베디드 관련(?) 내용 정리

 

이 앱은 다음과 같이 큰 구조로 구성되어 있다.

 

Application
------------------
Frameworks
------------------
HAL
------------------
BSP

 

여기서 application layer는 여러 앱들과 그 앱들 아래에 공통적으로 이용되는 핵심 코드들로 이루어져 있고,

framework layer는 말그대로 framework.

그럼 HAL과 BSP가 무엇인지 궁금해 찾아보게 되었다.

 

HAL

Hardware Abstraction Layer

OS와 HW 간의 중간 계층 역할을 하는 소프트웨어이다.

OS가 HAL을 통해 HW를 간접적으로 제어 및 통신할 수 있다.

 

HAL을 통해 하드웨어의 종류와 무관하게 표준화된 인터페이스를 통해 하드웨어에 접근할 수 있게 되었다.

마치 system call과 유사하게 동작하는데,

app이 OS의 API를 호출하면,

OS는 그 요청을 HAL을 통해 HW로 전달하게 되고,

HAL은 HW 드라이버와 통신해 요청을 처리 후 결과를 반환하게 된다.

 

Android에서는 HW와 Android Framework 사이의 중간 계층으로 동작하여 카메라, 오디오, 센서 등의 특정 하드웨어 기능을 노출하는 역할을 한다.

 

HAL을 통한 접근 방식은 추가 계층이 생기는 것이므로 복잡성이 증가하고, 하드웨어에 직접 접근하는 것보다 성능 오버헤드가 발생할 수 있다는 단점이 있다.

 

BSP

Board Support Package

특정 하드웨어 Board를 지원하기 위해 제공되는 SW 패키지이다.

OS가 해당 HW에서 제대로 동작하도록 지원하는 역할을 한다.

 

OS와 HW 간 인터페이스 제공을 통해 OS가 HW 스펙과 상관 없이 특정 보드에서 부팅하고 작동할 수 있도록 한다.

또한, HW를 초기화하거나 드라이버를 제공하고, 부트로더를 지원하는 등의 역할을 한다.

 

BSP는

부트로더 : 하드웨어를 초기화하고 OS를 메모리에 로드,

디바이스 드라이버 : 보드에 연결된 디바이스 제어,

커널 설정

등의 요소로 구성된다.

 

BSP는,

전원을 공급하고 부트로더가 HW 초기화를 수행하도록 하며, CP, RAM, 클럭 등을 설정한다.

그 다음, 부트로더가 OS 커널을 로드해 실행하고,

BSP에 포함된 드라이버가 HW 장치를 활성화 후,(드라이버 초기화)

OS를 부팅하는 순서로 동작한다.

 

HAL의 하위 레벨로, BSP는 보드에 관련된 HW만 관여하지만, HAL은 플랫폼 전반을 포괄한다.

 

Android BSP는 Android 기기에서 snapdragon이나 exynos 등 특정 칩셋을 지원하기 위해 제조사가 제공하는 패키지로,

GPU, 카메라, 오디오 등 장치 드라이버와 HAL을 포함한다.

728x90
반응형

'CS > 임베디드' 카테고리의 다른 글

SPI NOR Flash  (0) 2025.02.11
UFS (Universal Flash Storage)  (1) 2025.02.11