From 4bdac7b668d29dcaa53b72921b7f6a51d0f80b9b Mon Sep 17 00:00:00 2001 From: Tekkaman Ninja <tekkamanninja@gmail.com> Date: Wed, 24 Oct 2012 23:56:47 +0800 Subject: [PATCH] Documentation:Chinese translation of Documentation/arm64/booting.txt This is a Chinese translated version of Documentation/arm64/booting.txt Signed-off-by: Fu Wei <tekkamanninja@gmail.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- Documentation/zh_CN/arm64/booting.txt | 156 ++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 Documentation/zh_CN/arm64/booting.txt diff --git a/Documentation/zh_CN/arm64/booting.txt b/Documentation/zh_CN/arm64/booting.txt new file mode 100644 index 0000000000000..28fa325b74617 --- /dev/null +++ b/Documentation/zh_CN/arm64/booting.txt @@ -0,0 +1,156 @@ +Chinese translated version of Documentation/arm64/booting.txt + +If you have any comment or update to the content, please contact the +original document maintainer directly. However, if you have a problem +communicating in English you can also ask the Chinese maintainer for +help. Contact the Chinese maintainer if this translation is outdated +or if there is a problem with the translation. + +Maintainer: Will Deacon <will.deacon@arm.com> +Chinese maintainer: Fu Wei <tekkamanninja@gmail.com> +--------------------------------------------------------------------- +Documentation/arm64/booting.txt çš„ä¸æ–‡ç¿»è¯‘ + +如果想评论或更新本文的内容,请直接è”ç³»åŽŸæ–‡æ¡£çš„ç»´æŠ¤è€…ã€‚å¦‚æžœä½ ä½¿ç”¨è‹±æ–‡ +交æµæœ‰å›°éš¾çš„è¯ï¼Œä¹Ÿå¯ä»¥å‘ä¸æ–‡ç‰ˆç»´æŠ¤è€…求助。如果本翻译更新ä¸åŠæ—¶æˆ–者翻 +译å˜åœ¨é—®é¢˜ï¼Œè¯·è”ç³»ä¸æ–‡ç‰ˆç»´æŠ¤è€…。 + +英文版维护者: Will Deacon <will.deacon@arm.com> +ä¸æ–‡ç‰ˆç»´æŠ¤è€…: å‚…ç‚œ Fu Wei <tekkamanninja@gmail.com> +ä¸æ–‡ç‰ˆç¿»è¯‘者: å‚…ç‚œ Fu Wei <tekkamanninja@gmail.com> +ä¸æ–‡ç‰ˆæ ¡è¯‘者: å‚…ç‚œ Fu Wei <tekkamanninja@gmail.com> + +以下为æ£æ–‡ +--------------------------------------------------------------------- + å¯åŠ¨ AArch64 Linux + ================== + +作者: Will Deacon <will.deacon@arm.com> +日期: 2012 å¹´ 09 月 07 æ—¥ + +本文档基于 Russell King çš„ ARM å¯åŠ¨æ–‡æ¡£ï¼Œä¸”适用于所有公开å‘布的 +AArch64 Linux å†…æ ¸ä»£ç 。 + +AArch64 异常模型由多个异常级别(EL0 - EL3)组æˆï¼Œå¯¹äºŽ EL0 å’Œ EL1 +异常级有对应的安全和éžå®‰å…¨æ¨¡å¼ã€‚EL2 是系统管ç†çº§ï¼Œä¸”ä»…å˜åœ¨äºŽ +éžå®‰å…¨æ¨¡å¼ä¸‹ã€‚EL3 是最高特æƒçº§ï¼Œä¸”ä»…å˜åœ¨äºŽå®‰å…¨æ¨¡å¼ä¸‹ã€‚ + +基于本文档的目的,我们将简å•åœ°ä½¿ç”¨â€˜å¼•å¯¼è£…载程åºâ€™ï¼ˆâ€˜boot loader’) +这个术è¯æ¥å®šä¹‰åœ¨å°†æŽ§åˆ¶æƒäº¤ç»™ Linux å†…æ ¸å‰ CPU 上执行的所有软件。 +è¿™å¯èƒ½åŒ…å«å®‰å…¨ç›‘控和系统管ç†ä»£ç ,或者它å¯èƒ½åªæ˜¯ä¸€äº›ç”¨äºŽå‡†å¤‡æœ€å°å¯åŠ¨ +环境的指令。 + +基本上,引导装载程åºï¼ˆè‡³å°‘)应实现以下æ“作: + +1ã€è®¾ç½®å’Œåˆå§‹åŒ– RAM +2ã€è®¾ç½®è®¾å¤‡æ ‘æ•°æ® +3ã€è§£åŽ‹å†…æ ¸æ˜ åƒ +4ã€è°ƒç”¨å†…æ ¸æ˜ åƒ + + +1ã€è®¾ç½®å’Œåˆå§‹åŒ– RAM +----------------- + +å¿…è¦æ€§: 强制 + +引导装载程åºåº”该找到并åˆå§‹åŒ–系统ä¸æ‰€æœ‰å†…æ ¸ç”¨äºŽä¿æŒç³»ç»Ÿå˜é‡æ•°æ®çš„ RAM。 +这个æ“作的执行是设备ä¾èµ–的。(它å¯èƒ½ä½¿ç”¨å†…部算法æ¥è‡ªåŠ¨å®šä½å’Œè®¡ç®—所有 +RAM,或å¯èƒ½ä½¿ç”¨å¯¹è¿™ä¸ªè®¾å¤‡å·²çŸ¥çš„ RAM ä¿¡æ¯ï¼Œè¿˜å¯èƒ½ä½¿ç”¨ä»»ä½•å¼•å¯¼è£…è½½ç¨‹åº +设计者想到的匹é…方法。) + + +2ã€è®¾ç½®è®¾å¤‡æ ‘æ•°æ® +--------------- + +å¿…è¦æ€§: 强制 + +è®¾å¤‡æ ‘æ•°æ®å—(dtb)大å°å¿…é¡»ä¸å¤§äºŽ 2 MB,且ä½äºŽä»Žå†…æ ¸æ˜ åƒèµ·å§‹ç®—起第一个 +512MB 内的 2MB è¾¹ç•Œä¸Šã€‚è¿™ä½¿å¾—å†…æ ¸å¯ä»¥é€šè¿‡åˆå§‹é¡µè¡¨ä¸çš„å•ä¸ªèŠ‚æè¿°ç¬¦æ¥ +æ˜ å°„æ¤æ•°æ®å—。 + + +3ã€è§£åŽ‹å†…æ ¸æ˜ åƒ +------------- + +å¿…è¦æ€§: å¯é€‰ + +AArch64 å†…æ ¸å½“å‰æ²¡æœ‰æ供自解压代ç ï¼Œå› æ¤å¦‚æžœä½¿ç”¨äº†åŽ‹ç¼©å†…æ ¸æ˜ åƒæ–‡ä»¶ +(比如 Image.gz),则需è¦é€šè¿‡å¼•å¯¼è£…载程åºï¼ˆä½¿ç”¨ gzip ç‰ï¼‰æ¥è¿›è¡Œè§£åŽ‹ã€‚ +若引导装载程åºæ²¡æœ‰å®žçŽ°è¿™ä¸ªéœ€æ±‚,就è¦ä½¿ç”¨éžåŽ‹ç¼©å†…æ ¸æ˜ åƒæ–‡ä»¶ã€‚ + + +4ã€è°ƒç”¨å†…æ ¸æ˜ åƒ +------------- + +å¿…è¦æ€§: 强制 + +å·²è§£åŽ‹çš„å†…æ ¸æ˜ åƒåŒ…å«ä¸€ä¸ª 32 å—节的头,内容如下: + + u32 magic = 0x14000008; /* 跳转到 stext, å°ç«¯ */ + u32 res0 = 0; /* ä¿ç•™ */ + u64 text_offset; /* æ˜ åƒè£…è½½å移 */ + u64 res1 = 0; /* ä¿ç•™ */ + u64 res2 = 0; /* ä¿ç•™ */ + +æ˜ åƒå¿…é¡»ä½äºŽç³»ç»Ÿ RAM 起始处的特定å移(当å‰æ˜¯ 0x80000)。系统 RAM +的起始地å€å¿…须是以 2MB 对é½çš„。 + +åœ¨è·³è½¬å…¥å†…æ ¸å‰ï¼Œå¿…须符åˆä»¥ä¸‹çŠ¶æ€ï¼š + +- åœæ¢æ‰€æœ‰ DMA è®¾å¤‡ï¼Œè¿™æ ·å†…å˜æ•°æ®å°±ä¸ä¼šå› 为虚å‡ç½‘络包或ç£ç›˜æ•°æ®è€Œ + è¢«ç ´å。这å¯èƒ½å¯ä»¥èŠ‚çœä½ 许多的调试时间。 + +- 主 CPU 通用寄å˜å™¨è®¾ç½® + x0 = 系统 RAM ä¸è®¾å¤‡æ ‘æ•°æ®å—(dtb)的物ç†åœ°å€ã€‚ + x1 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) + x2 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) + x3 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) + +- CPU æ¨¡å¼ + 所有形å¼çš„ä¸æ–必须在 PSTATE.DAIF ä¸è¢«å±è”½ï¼ˆDebugã€SErrorã€IRQ + å’Œ FIQ)。 + CPU 必须处于 EL2(推è,å¯è®¿é—®è™šæ‹ŸåŒ–扩展)或éžå®‰å…¨ EL1 模å¼ä¸‹ã€‚ + +- 高速缓å˜ã€MMU + MMU 必须关é—。 + 指令缓å˜å¼€å¯æˆ–å…³é—都å¯ä»¥ã€‚ + æ•°æ®ç¼“å˜å¿…须关é—ä¸”æ— æ•ˆã€‚ + 外部高速缓å˜ï¼ˆå¦‚æžœå˜åœ¨ï¼‰å¿…é¡»é…置并ç¦ç”¨ã€‚ + +- 架构计时器 + CNTFRQ 必须设定为计时器的频率。 + 如果在 EL1 模å¼ä¸‹è¿›å…¥å†…æ ¸ï¼Œåˆ™ CNTHCTL_EL2 ä¸çš„ EL1PCTEN (bit 0) + 必须置ä½ã€‚ + +- 一致性 + é€šè¿‡å†…æ ¸å¯åŠ¨çš„所有 CPU åœ¨å†…æ ¸å…¥å£åœ°å€ä¸Šå¿…须处于相åŒçš„一致性域ä¸ã€‚ + è¿™å¯èƒ½è¦æ ¹æ®å…·ä½“实现æ¥å®šä¹‰åˆå§‹åŒ–过程,以使能æ¯ä¸ªCPU上对维护æ“作的 + 接收。 + +- 系统寄å˜å™¨ + åœ¨è¿›å…¥å†…æ ¸æ˜ åƒçš„异常级ä¸ï¼Œæ‰€æœ‰æž„架ä¸å¯å†™çš„系统寄å˜å™¨å¿…须通过软件 + 在一个更高的异常级别下åˆå§‹åŒ–,以防æ¢åœ¨ 未知 状æ€ä¸‹è¿è¡Œã€‚ + +引导装载程åºå¿…须在æ¯ä¸ª CPU 处于以下状æ€æ—¶è·³å…¥å†…æ ¸å…¥å£ï¼š + +- 主 CPU å¿…é¡»ç›´æŽ¥è·³å…¥å†…æ ¸æ˜ åƒçš„第一æ¡æŒ‡ä»¤ã€‚é€šè¿‡æ¤ CPU ä¼ é€’çš„è®¾å¤‡æ ‘ + æ•°æ®å—必须在æ¯ä¸ª CPU 节点ä¸åŒ…å«ä»¥ä¸‹å†…容: + + 1ã€â€˜enable-method’属性。目å‰ï¼Œæ¤å—段支æŒçš„值仅为å—符串“spin-tableâ€ã€‚ + + 2ã€â€˜cpu-release-addrâ€™æ ‡è¯†ä¸€ä¸ª 64-bitã€åˆå§‹åŒ–为零的内å˜ä½ç½®ã€‚ + + 引导装载程åºå¿…须生æˆè¿™äº›è®¾å¤‡æ ‘å±žæ€§ï¼Œå¹¶åœ¨è·³å…¥å†…æ ¸å…¥å£ä¹‹å‰å°†å…¶æ’å…¥ + æ•°æ®å—。 + +- 任何辅助 CPU 必须在内å˜ä¿ç•™åŒºï¼ˆé€šè¿‡è®¾å¤‡æ ‘ä¸çš„ /memreserve/ åŸŸä¼ é€’ + ç»™å†…æ ¸ï¼‰ä¸è‡ªæ—‹äºŽå†…æ ¸ä¹‹å¤–ï¼Œè½®è¯¢å®ƒä»¬çš„ cpu-release-addr ä½ç½®ï¼ˆå¿…é¡» + 包å«åœ¨ä¿ç•™åŒºä¸ï¼‰ã€‚å¯é€šè¿‡æ’å…¥ wfe 指令æ¥é™ä½Žå¿™å¾ªçŽ¯å¼€é”€ï¼Œè€Œä¸» CPU å°† + å‘出 sev 指令。当对 cpu-release-addr 所指ä½ç½®çš„读å–æ“作返回éžé›¶å€¼ + 时,CPU 必须直接跳入æ¤å€¼æ‰€æŒ‡å‘的地å€ã€‚ + +- 辅助 CPU 通用寄å˜å™¨è®¾ç½® + x0 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) + x1 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) + x2 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) + x3 = 0 (ä¿ç•™ï¼Œå°†æ¥å¯èƒ½ä½¿ç”¨) -- GitLab