QNX RTOS: 1-9. Boot Sequence

2025. 11. 25. 17:28운영체제/QNX

QNX의 부팅 과정은 크게 하드웨어 벤더가 제공하는 영역과 QNX가 제공하는 영역(IPL, IFS)으로 나뉨. 이 흐름을 파악해야 보드 브링업(Bring-up)이나 초기 설정 이슈를 해결할 수 있음.

1. 벤더 영역 (Pre-QNX)

부팅의 가장 첫 단계는 QNX가 아닌 보드 제조사나 칩 벤더가 제공하는 펌웨어에서 시작됨.

  • 임베디드 보드: uBoot, RedBoot 같은 ROM 모니터.
  • x86 시스템: BIOS 또는 UEFI.
  • 동작: 기본적인 하드웨어 초기화를 마치고, QNX의 **IPL(Initial Program Load)**로 제어권을 넘김(Jump).

2. IPL (Initial Program Load)

QNX 부팅의 실질적인 시작점임. 아주 작고 기본적인 역할을 수행함.

  • 기본 하드웨어 설정: 클럭 주파수 설정, 칩 셀렉트(Chip Select) 프로그래밍, RAM 사용 설정(스택 생성 등).
  • 핵심 역할: 저장소(플래시, 디스크 등)에서 **IFS(Image File System)**를 찾아서 메모리에 로드하는 것.

3. IFS (Image File System)의 구성

IPL이 찾아낸 IFS는 부팅에 필요한 모든 구성 요소를 담고 있는 단일 이미지 파일임. 이 안에는 다음 세 가지가 포함됨.

  1. Startup: 초기화 코드
  2. procnto: 마이크로커널 + 프로세스 매니저
  3. Boot Script: 실행할 프로그램 목록

3.1. Startup (Board Specific)

가장 커스터마이징이 많이 들어가는 곳임. IPL보다 훨씬 상세하게 하드웨어 정보를 OS에게 알려줌.

  • 역할: 하드웨어의 물리적 사양을 커널에 보고함.
    • RAM의 크기와 레이아웃
    • 인터럽트 컨트롤러 위치 및 우선순위
    • 타이머 주파수 및 정보
    • DMA 전송을 위한 예약된 메모리 영역
    • CPU 클러스터 구성 (예: 고성능 코어 vs 저전력 코어 그룹화)
  • 결과물: 이 정보들은 System Page라는 곳에 기록됨.
    • System Page는 모든 프로세스에 Read-Only로 매핑되어, 애플리케이션들이 하드웨어 정보를 조회할 수 있게 함.

3.2. Boot Script (vs Monolithic OS)

여기가 리눅스 같은 모놀리식 OS와 QNX의 차이점이 드러나는 부분임.

  • 리눅스: 커널 안에 드라이버가 번들로 포함되어 있어 한 번에 올라옴.
  • QNX: 부트 스크립트에 명시된 것만 실행됨.
    • 개발자가 직접 어떤 드라이버, 어떤 애플리케이션, 어떤 서비스를 실행할지 스크립트에 적어줘야 함.
    • 즉, 부팅 직후에 CAN 드라이버나 네트워크 스택이 필요하다면 반드시 이 스크립트에 포함시켜야 함.

4. procnto 실행

Startup이 하드웨어 보고를 마치면, 최종적으로 procnto가 실행되면서 커널이 활성화되고, 앞서 설정한 Boot Script를 읽어 순차적으로 프로세스들을 실행시키며 부팅이 완료됨.


💡 정리 및 인사이트

  1. 단계별 책임: 벤더(uBoot) -> IPL(최소 설정) -> Startup(상세 설정) -> OS 구동 순서로 진행됨.
  2. 커스터마이징: 보드 브링업을 할 때 주로 건드리는 곳은 Startup 코드(하드웨어 명세)와 Boot Script(실행 목록)임.
  3. 명시적 실행: QNX는 알아서 드라이버를 로드해주지 않음. Boot Script에 적지 않으면 드라이버는 실행되지 않음.

'운영체제 > QNX' 카테고리의 다른 글

QNX RTOS: 2. Momentics Development  (0) 2025.11.26
QNX RTOS: 1-10. Security  (1) 2025.11.25
QNX RTOS: 1-8. OS Service  (0) 2025.11.25
QNX RTOS: 1-7. Shared Objects  (0) 2025.11.25
QNX RTOS: 1-6. System Library  (0) 2025.11.25