Documentation:Update Documentation/zh_CN/arm64/booting.txt

This is a update of Chinese documentation: Documentation/zh_CN/arm64/booting.txt

It is based on the modifications of Documentation/arm64/booting.txt in submission:
"a2c1d73b", "cdd78578", "c218bca7", "63f8344c".

Signed-off-by: Fu Wei <wefu@redhat.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
Fu Wei 2015-03-24 17:37:19 +08:00 коммит произвёл Jonathan Corbet
Родитель 007c33bb9c
Коммит 89098bfcf5
1 изменённых файлов: 45 добавлений и 9 удалений

Просмотреть файл

@ -15,6 +15,8 @@ Documentation/arm64/booting.txt 的中文翻译
交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
译存在问题,请联系中文版维护者。 译存在问题,请联系中文版维护者。
本文翻译提交时的 Git 检出点为: bc465aa9d045feb0e13b4a8f32cc33c1943f62d6
英文版维护者: Will Deacon <will.deacon@arm.com> 英文版维护者: Will Deacon <will.deacon@arm.com>
中文版维护者: 傅炜 Fu Wei <wefu@redhat.com> 中文版维护者: 傅炜 Fu Wei <wefu@redhat.com>
中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com> 中文版翻译者: 傅炜 Fu Wei <wefu@redhat.com>
@ -88,22 +90,44 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
u32 code0; /* 可执行代码 */ u32 code0; /* 可执行代码 */
u32 code1; /* 可执行代码 */ u32 code1; /* 可执行代码 */
u64 text_offset; /* 映像装载偏移 */ u64 text_offset; /* 映像装载偏移,小端模式 */
u64 res0 = 0; /* 保留 */ u64 image_size; /* 映像实际大小, 小端模式 */
u64 res1 = 0; /* 保留 */ u64 flags; /* 内核旗标, 小端模式 *
u64 res2 = 0; /* 保留 */ u64 res2 = 0; /* 保留 */
u64 res3 = 0; /* 保留 */ u64 res3 = 0; /* 保留 */
u64 res4 = 0; /* 保留 */ u64 res4 = 0; /* 保留 */
u32 magic = 0x644d5241; /* 魔数, 小端, "ARM\x64" */ u32 magic = 0x644d5241; /* 魔数, 小端, "ARM\x64" */
u32 res5 = 0; /* 保留 */ u32 res5; /* 保留 (用于 PE COFF 偏移) */
映像头注释: 映像头注释:
- 自 v3.17 起,除非另有说明,所有域都是小端模式。
- code0/code1 负责跳转到 stext. - code0/code1 负责跳转到 stext.
映像必须位于系统 RAM 起始处的特定偏移(当前是 0x80000。系统 RAM - 当通过 EFI 启动时, 最初 code0/code1 被跳过。
的起始地址必须是以 2MB 对齐的。 res5 是到 PE 文件头的偏移,而 PE 文件头含有 EFI 的启动入口点 efi_stub_entry
当 stub 代码完成了它的使命,它会跳转到 code0 继续正常的启动流程。
- v3.17 之前,未明确指定 text_offset 的字节序。此时image_size 为零,
且 text_offset 依照内核字节序为 0x80000。
当 image_size 非零text_offset 为小端模式且是有效值,应被引导加载程序使用。
当 image_size 为零text_offset 可假定为 0x80000。
- flags 域 (v3.17 引入) 为 64 位小端模式,其编码如下:
位 0: 内核字节序。 1 表示大端模式0 表示小端模式。
位 1-63: 保留。
- 当 image_size 为零时,引导装载程序应该试图在内核映像末尾之后尽可能多地保留空闲内存
供内核直接使用。对内存空间的需求量因所选定的内核特性而异, 且无实际限制。
内核映像必须被放置在靠近可用系统内存起始的 2MB 对齐为基址的 text_offset 字节处,并从那里被调用。
当前,对 Linux 来说在此基址以下的内存是无法使用的,因此强烈建议将系统内存的起始作为这个基址。
从映像起始地址算起,最少必须为内核释放出 image_size 字节的空间。
任何提供给内核的内存(甚至在 2MB 对齐的基地址之前),若未从内核中标记为保留
(如在设备树dtb的 memreserve 区域),都将被认为对内核是可用。
在跳转入内核前,必须符合以下状态: 在跳转入内核前,必须符合以下状态:
@ -124,8 +148,12 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
- 高速缓存、MMU - 高速缓存、MMU
MMU 必须关闭。 MMU 必须关闭。
指令缓存开启或关闭都可以。 指令缓存开启或关闭都可以。
数据缓存必须关闭且无效。 已载入的内核映像的相应内存区必须被清理以达到缓存一致性点PoC
外部高速缓存(如果存在)必须配置并禁用。 当存在系统缓存或其他使能缓存的一致性主控器时,通常需使用虚拟地址维护其缓存,而非 set/way 操作。
遵从通过虚拟地址操作维护构架缓存的系统缓存必须被配置,并可以被使能。
而不通过虚拟地址操作维护构架缓存的系统缓存(不推荐),必须被配置且禁用。
*译者注:对于 PoC 以及缓存相关内容,请参考 ARMv8 构架参考手册 ARM DDI 0487A
- 架构计时器 - 架构计时器
CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU CNTFRQ 必须设定为计时器的频率,且 CNTVOFF 必须设定为对所有 CPU
@ -141,6 +169,14 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件 在进入内核映像的异常级中,所有构架中可写的系统寄存器必须通过软件
在一个更高的异常级别下初始化,以防止在 未知 状态下运行。 在一个更高的异常级别下初始化,以防止在 未知 状态下运行。
对于拥有 GICv3 中断控制器的系统:
- 若当前在 EL3
ICC_SRE_EL3.Enable (位 3) 必须初始化为 0b1。
ICC_SRE_EL3.SRE (位 0) 必须初始化为 0b1。
- 若内核运行在 EL1
ICC_SRE_EL2.Enable (位 3) 必须初始化为 0b1。
ICC_SRE_EL2.SRE (位 0) 必须初始化为 0b1。
以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的 以上对于 CPU 模式、高速缓存、MMU、架构计时器、一致性、系统寄存器的
必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。 必要条件描述适用于所有 CPU。所有 CPU 必须在同一异常级别跳入内核。
@ -170,7 +206,7 @@ AArch64 内核当前没有提供自解压代码,因此如果使用了压缩内
ARM DEN 0022A用于 ARM 上的电源状态协调接口系统软件)中描述的 ARM DEN 0022A用于 ARM 上的电源状态协调接口系统软件)中描述的
CPU_ON 调用来将 CPU 带入内核。 CPU_ON 调用来将 CPU 带入内核。
*译者注:到文档翻译时,此文档已更新为 ARM DEN 0022B *译者注: ARM DEN 0022A 已更新到 ARM DEN 0022C
设备树必须包含一个 psci 节点,请参考以下文档: 设备树必须包含一个 psci 节点,请参考以下文档:
Documentation/devicetree/bindings/arm/psci.txt Documentation/devicetree/bindings/arm/psci.txt