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는 부팅에 필요한 모든 구성 요소를 담고 있는 단일 이미지 파일임. 이 안에는 다음 세 가지가 포함됨.
- Startup: 초기화 코드
- procnto: 마이크로커널 + 프로세스 매니저
- 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를 읽어 순차적으로 프로세스들을 실행시키며 부팅이 완료됨.
💡 정리 및 인사이트
- 단계별 책임: 벤더(uBoot) -> IPL(최소 설정) -> Startup(상세 설정) -> OS 구동 순서로 진행됨.
- 커스터마이징: 보드 브링업을 할 때 주로 건드리는 곳은 Startup 코드(하드웨어 명세)와 Boot Script(실행 목록)임.
- 명시적 실행: 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 |