BSP 개발 순서 및 개념

SMJ·2025년 8월 24일

BSP development

목록 보기
1/18
post-thumbnail
[1] 크로스 컴파일러 준비
      ↓
[2] U-Boot 빌드 및 포팅
      ↓
[3] 커널 빌드 및 포팅
      ↓
[4] 디바이스 트리 수정
      ↓
[5] Root Filesystem 구성
      ↓
[6] 부팅 테스트 & 디버깅
      ↓
[7] 애플리케이션 개발

BSP 개발 프로세스

BSP 개발은 특정 하드웨어 보드에서 운영체제(주로 리눅스)가 원활하게 동작하도록 필요한 모든 소프트웨어를 구축하고 최적화하는 과정


BSP(Board Support Package) 개발 순서 및 개념 요약

1. 개발 환경 준비

크로스 컴파일러: 내 컴퓨터(x86)에서 보드(ARM)용 실행파일을 만드는 도구.

  • 예시: aarch64-linux-gnu-gcc

2. 부트로더 (U-Boot & TF-A)

개념: 리눅스 커널이 부팅하기 전, 하드웨어(RAM, 저장장치)를 초기화하고 커널을 메모리에 올리는 역할.

  • 부팅 순서: 전원 ON → RBL → SPL(DRAM 초기화) → U-Boot → 커널
  • 핵심 역할:
    • 하드웨어 초기화 (DRAM, 클럭, GPIO 등)
    • 커널 이미지 및 디바이스 트리(DTB) 로드
    • 부팅 환경변수 관리 (bootcmd, bootargs)

3. 커널

개념: 하드웨어와 사용자 프로그램 사이를 중재하는 리눅스의 핵심.

  • 필요성: 보드에 맞는 칩셋, 주변 장치(GPIO, I2C 등)를 제어하기 위해 맞춤형 커널이 필요.

4. 디바이스 트리 (Device Tree Blob)

개념: 보드에 어떤 장치들이 어떻게 연결되어 있는지 알려주는 설정 파일.

  • 필요성: 커널은 디바이스 트리를 통해 하드웨어 구성 정보를 파악하고, 이에 맞는 드라이버를 로드.

5. 루트 파일시스템 (rootfs)

개념: 커널 부팅 후 마운트되어 사용되는 파일시스템. 기본적인 명령어(ls, cd, sh)와 라이브러리가 포함된 사용자 공간.

  • 필요성: 부팅만 하고 끝나는 것을 방지하고, 사용자가 시스템을 제어할 수 있는 환경을 제공.

6. 테스트 및 디버깅

개념: 부트로더, 커널, 루트 파일시스템을 보드에 올린 뒤 부팅 여부를 확인.

  • 주요 작업: 부팅 로그를 보며 각 단계가 올바르게 작동하는지 검증.

7. 애플리케이션 개발

개념: 보드의 목적에 맞는 최종 프로그램을 작성하고 실행.

  • 주요 작업: 센서 제어, 통신, 서비스 등 특정 기능을 구현.

기타 주요 개념

  • 빌드 시스템: 빌드 과정을 자동으로 관리해주는 도구. (예: Buildroot, Yocto)
  • 타겟: 코드가 실행될 장치나 아키텍처. (예: armv7, aarch64)
profile
Embedded Junior Developer

0개의 댓글