Exynos 开发板上内核与引导加载程序之间的接口

作者:Krzysztof Kozlowski

日期:2015 年 6 月 6 日

本文档尝试描述当前在基于三星 Exynos 的开发板上 Linux 内核和引导加载程序之间使用的接口。这并非接口的定义,而只是对现有状态的描述,仅供参考。

在本文档中,“引导加载程序”是指以下任何一项:U-boot、专有 SBOOT 或任何其他用于 ARMv7 和 ARMv8 的固件,它们在执行内核之前初始化开发板。

  1. 非安全模式

地址:sysram_ns_base_addr

偏移量

目的

0x08

exynos_cpu_resume_ns, mcpm_entry_point

系统挂起

0x0c

0x00000bad(魔术 Cookie)

系统挂起

0x1c

exynos4_secondary_startup

辅助 CPU 启动

0x1c + 4*cpu

exynos4_secondary_startup (Exynos4412)

辅助 CPU 启动

0x20

0xfcba0d10(魔术 Cookie)

AFTR

0x24

exynos_cpu_resume_ns

AFTR

0x28 + 4*cpu

0x8(魔术 Cookie,Exynos3250)

AFTR

0x28

0x0 或恢复期间的最后一个值(Exynos542x)

系统挂起

  1. 安全模式

地址:sysram_base_addr

偏移量

目的

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(魔术 Cookie,Exynos4210 r1.0)

AFTR

地址:pmu_base_addr

偏移量

目的

0x0800

exynos_cpu_resume

AFTR,挂起

0x0800

mcpm_entry_point(带有 MCPM 的 Exynos542x)

AFTR,挂起

0x0804

0xfcba0d10(魔术 Cookie)

AFTR

0x0804

0x00000bad(魔术 Cookie)

系统挂起

0x0814

exynos4_secondary_startup (Exynos4210 r1.1)

辅助 CPU 启动

0x0818

0xfcba0d10(魔术 Cookie,Exynos4210 r1.1)

AFTR

0x081C

exynos_cpu_resume (Exynos4210 r1.1)

AFTR

  1. 其他(无论安全/非安全模式)

地址:pmu_base_addr

偏移量

目的

0x0908

非零

Exynos3250 和 Exynos542x 上辅助 CPU 启动指示符

  1. 词汇表

AFTR - ARM Off Top Running,一种低功耗模式,Cortex 内核和许多其他模块都断电,除了 TOP 模块 MCPM - 多集群电源管理