← Documents Documentation/arch/arm/samsung/bootloader-interface.rst GitHub 원문 ↗

Linux 6.18.37 · Architecture

Interface between kernel and boot loaders on Exynos boards

Exynos 보드에서 커널과 부트 로더가 공유하는 SYSRAM·PMU 오프셋, 복귀 지점, 매직 쿠키와 저전력 모드 용어를 정리합니다.

Source pathDocumentation/arch/arm/samsung/bootloader-interface.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

bootloader-interface.rst:1-81

Exynos 펌웨어와 커널은 SYSRAM 또는 PMU의 약속된 위치에 보조 CPU 시작 주소, 일시 중단 복귀 주소, AFTR 상태를 나타내는 값을 기록합니다. 보안 모드와 SoC 리비전에 따라 기준 주소와 오프셋이 달라지므로 표의 조합을 그대로 확인해야 합니다.

Exynos 부팅·복귀 인터페이스
Secure / Non-Secure modeSYSRAM 또는 PMU 기준 주소SoC별 offset보조 CPU boot / AFTR / suspend resume

실행 모드와 SoC 리비전이 기준 주소를 결정하고, 해당 오프셋의 함수 주소 또는 매직 쿠키가 다음 동작을 지시합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ==========================================================
2 Interface between kernel and boot loaders on Exynos boards
3 ==========================================================
4
5 Author: Krzysztof Kozlowski
6
7 Date : 6 June 2015
8
9 The document tries to describe currently used interface between Linux kernel
10 and boot loaders on Samsung Exynos based boards. This is not a definition
11 of interface but rather a description of existing state, a reference
12 for information purpose only.
13
14 In the document "boot loader" means any of following: U-boot, proprietary
15 SBOOT or any other firmware for ARMv7 and ARMv8 initializing the board before
16 executing kernel.
17
18
19 1. Non-Secure mode
20
21 Address: sysram_ns_base_addr
22
23 ============= ============================================ ==================
24 Offset Value Purpose
25 ============= ============================================ ==================
26 0x08 exynos_cpu_resume_ns, mcpm_entry_point System suspend
27 0x0c 0x00000bad (Magic cookie) System suspend
28 0x1c exynos4_secondary_startup Secondary CPU boot
29 0x1c + 4*cpu exynos4_secondary_startup (Exynos4412) Secondary CPU boot
30 0x20 0xfcba0d10 (Magic cookie) AFTR
31 0x24 exynos_cpu_resume_ns AFTR
32 0x28 + 4*cpu 0x8 (Magic cookie, Exynos3250) AFTR
33 0x28 0x0 or last value during resume (Exynos542x) System suspend
34 ============= ============================================ ==================
35
36
37 2. Secure mode
38
39 Address: sysram_base_addr
40
41 ============= ============================================ ==================
42 Offset Value Purpose
43 ============= ============================================ ==================
44 0x00 exynos4_secondary_startup Secondary CPU boot
45 0x04 exynos4_secondary_startup (Exynos542x) Secondary CPU boot
46 4*cpu exynos4_secondary_startup (Exynos4412) Secondary CPU boot
47 0x20 exynos_cpu_resume (Exynos4210 r1.0) AFTR
48 0x24 0xfcba0d10 (Magic cookie, Exynos4210 r1.0) AFTR
49 ============= ============================================ ==================
50
51 Address: pmu_base_addr
52
53 ============= ============================================ ==================
54 Offset Value Purpose
55 ============= ============================================ ==================
56 0x0800 exynos_cpu_resume AFTR, suspend
57 0x0800 mcpm_entry_point (Exynos542x with MCPM) AFTR, suspend
58 0x0804 0xfcba0d10 (Magic cookie) AFTR
59 0x0804 0x00000bad (Magic cookie) System suspend
60 0x0814 exynos4_secondary_startup (Exynos4210 r1.1) Secondary CPU boot
61 0x0818 0xfcba0d10 (Magic cookie, Exynos4210 r1.1) AFTR
62 0x081C exynos_cpu_resume (Exynos4210 r1.1) AFTR
63 ============= ============================================ ==================
64
65 3. Other (regardless of secure/non-secure mode)
66
67 Address: pmu_base_addr
68
69 ============= =============================== ===============================
70 Offset Value Purpose
71 ============= =============================== ===============================
72 0x0908 Non-zero Secondary CPU boot up indicator
73 on Exynos3250 and Exynos542x
74 ============= =============================== ===============================
75
76
77 4. Glossary
78
79 AFTR - ARM Off Top Running, a low power mode, Cortex cores and many other
80 modules are power gated, except the TOP modules
81 MCPM - Multi-Cluster Power Management
82

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

문서의 목적과 부트 로더 범위

1-18

이 문서는 Samsung Exynos 기반 보드에서 현재 사용되는 Linux 커널과 부트 로더 사이의 인터페이스를 설명합니다. 새로운 인터페이스를 정의하는 규격이 아니라, 기존 상태를 정보 제공 목적으로 정리한 참조 문서입니다.

여기서 "boot loader"는 커널을 실행하기 전에 보드를 초기화하는 U-boot, 독점 SBOOT, 또는 ARMv7·ARMv8용 기타 펌웨어를 모두 뜻합니다.

작성자는 Krzysztof Kozlowski이며 원문 문서 날짜는 `6 June 2015`(2015년 6월 6일)입니다.

비보안 모드

19-36

비보안 모드에서는 `sysram_ns_base_addr`를 기준 주소로 사용합니다. 각 오프셋에는 시스템 일시 중단 복귀 지점, 보조 CPU 시작 지점, AFTR 복귀 지점 또는 상태를 식별하는 매직 쿠키가 기록됩니다.

오프셋목적
`0x08``exynos_cpu_resume_ns`, `mcpm_entry_point`시스템 일시 중단
`0x0c``0x00000bad` (Magic cookie)시스템 일시 중단
`0x1c``exynos4_secondary_startup`보조 CPU 부팅
`0x1c + 4*cpu``exynos4_secondary_startup` (Exynos4412)보조 CPU 부팅
`0x20``0xfcba0d10` (Magic cookie)AFTR
`0x24``exynos_cpu_resume_ns`AFTR
`0x28 + 4*cpu``0x8` (Magic cookie, Exynos3250)AFTR
`0x28``0x0` 또는 복귀 중의 마지막 값 (Exynos542x)시스템 일시 중단

보안 모드

37-64

보안 모드의 `sysram_base_addr` 영역에는 SoC 세대별 보조 CPU 시작 주소와 Exynos4210 r1.0의 AFTR 복귀 정보가 들어갑니다.

오프셋목적
`0x00``exynos4_secondary_startup`보조 CPU 부팅
`0x04``exynos4_secondary_startup` (Exynos542x)보조 CPU 부팅
`4*cpu``exynos4_secondary_startup` (Exynos4412)보조 CPU 부팅
`0x20``exynos_cpu_resume` (Exynos4210 r1.0)AFTR
`0x24``0xfcba0d10` (Magic cookie, Exynos4210 r1.0)AFTR

`pmu_base_addr`에서는 동일한 오프셋이 복귀 함수 또는 매직 쿠키를 가리킬 수 있으며, 정확한 의미는 SoC와 MCPM 사용 여부에 따라 달라집니다.

오프셋목적
`0x0800``exynos_cpu_resume`AFTR, suspend
`0x0800``mcpm_entry_point` (MCPM을 사용하는 Exynos542x)AFTR, 일시 중단
`0x0804``0xfcba0d10` (Magic cookie)AFTR
`0x0804``0x00000bad` (Magic cookie)시스템 일시 중단
`0x0814``exynos4_secondary_startup` (Exynos4210 r1.1)보조 CPU 부팅
`0x0818``0xfcba0d10` (Magic cookie, Exynos4210 r1.1)AFTR
`0x081C``exynos_cpu_resume` (Exynos4210 r1.1)AFTR

보안 모드와 무관한 항목

65-76

보안·비보안 모드와 관계없이 `pmu_base_addr + 0x0908`의 값이 0이 아니면 Exynos3250과 Exynos542x에서 보조 CPU가 부팅 중임을 나타냅니다.

오프셋목적
`0x0908`Non-zeroExynos3250 및 Exynos542x의 보조 CPU boot up indicator

용어

77-81
  • AFTR - ARM Off Top Running. TOP 모듈을 제외한 Cortex 코어와 다수 모듈의 전원을 차단하는 저전력 모드입니다.
  • MCPM - Multi-Cluster Power Management.