일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- DB
- Database
- boot sequence
- 자료구조
- 전송 계층
- dp
- swea
- Transport layer
- leetcode
- 데이터베이스
- 백준
- baekjoon
- 응용 계층
- Embedded
- BST
- ps
- 임베디드
- STL
- Network
- Application Layer
- C++
- 문제풀이
- 부트시퀀스
- 관계형 모델
- BHS
- 네트워크
- 다익스트라
- 프로그래머스
- Djikstra
- 릿코드
- Today
- Total
BOBO's Note
임베디드 시스템의 Boot Sequence 본문
일반적인 boot sequence에 대해 헷갈린다면, 이 글을 먼저 보고 오자!
2020/05/25 - [Embedded System] - Generic Boot Sequence
Generic Boot Sequence
BOBO's Note Generic Boot Sequence 본문 Embedded System Generic Boot Sequence bobo_hee 2020. 5. 25. 23:32 Prev 1 2 3 4 5 6 ··· 8 Next
bobo-dev.tistory.com
임베디드 시스템의 Boot Sequence
일반적인 임베디드 시스템에서의 boot sequence는 다음과 같은 순서로 진행된다.
-
ROM 코드: SoC에 위치한 ROM에 boot code를 저장해놓는다. ROM 코드는 스토리지(예. NAND 플래시)에 저장된 stage 1 부트로더를 SoC 내부의 SRAM에 로드해온다.
-
stage 1 bootloader: DRAM 컨트롤러를 초기화하고, stage 2 부트로더를 DRAM에 로드한다.
-
stage 2 bootloader: 하드웨어를 초기화하여 CPU의 동작 범위를 점점 늘려가고, 쉘 커맨드를 사용자에게 제공하여 상호작용할 수 있게 한다. 그리고 커널을 DRAM에 로드한다. 이후의 과정은 일반적인 boot sequence를 따른다.
임베디드 시스템에서 stage 2 부트로더로 주로 U-Boot를 사용한다. U-Boot는 커널 이미지 외에도 DTB(Device Tree Blob)을 로드한다.
Device Tree (DT)
PC의 경우, BIOS에서 자동으로 디바이스를 인식하여 동작하도록 해주지만, ARM 프로세서를 사용하는 임베디드 시스템에는 BIOS가 없어 커널이 대신 해주어야 한다. 따라서 커널이 고정적으로 디바이스를 찾을 수 있도록 개발자가 디바이스 트리에 디바이스에 대한 정보를 적어 놓는다.
Device tree source는 커널 소스의 arch/arm/boot/dts/ 디렉토리에 존재하며, 확장자명은 .dtb이다. 디바이스 트리 소스를 컴파일하면 바이너리 파일인 device tree blob이 생성되고, 이 파일이 부팅될 때 로드된다.
'Embedded System' 카테고리의 다른 글
Kernel Module과 Device Driver (0) | 2020.05.29 |
---|---|
Android Boot Sequence (0) | 2020.05.26 |
Generic Boot Sequence (0) | 2020.05.25 |
Cross Compile (0) | 2020.05.25 |
Linux Kernel의 개념 (0) | 2020.05.22 |