究浅意深_Android_4_lk.pdf
### 究浅意深_Android_4_lk.pdf 知识点解析 #### 标题及描述概览 本文档“究浅意深_Android_4_lk.pdf”主要探讨了高通平台上的LK(Linux Kernel)启动过程,特别聚焦于Qualcomm MSM7627平台上的ARM11端的Appsboot Bootloader。文档作者为林耕书,并提供了联系信息。 #### 核心知识点详解 ##### 1. **从ARM9启动ARM11** 文档首先回顾了前一篇文档(android_3.pdf)中的相关内容,并引入了如何从ARM9启动ARM11的过程。这一过程涉及到一系列关键步骤,包括: - **加载ARM11的Appsboot**:通过调用`oemsbl_load_aarm_bootloader`函数将Appsboot.mbn加载到RAM中。此操作的具体地址选择需仔细考虑。 - **创建ARM11分区表**:通过`oemsbl_create_aarm_partition_tbl`函数在共享内存中创建分区表,用于整合ARM11端的分区信息,形成完整的系统分区表。 - **记录坏块信息**:通过`oemsbl_get_bad_block_table`函数记录NAND Flash中的坏块信息,确保ARM11能够避免使用这些区域。 - **启动ARM11**:通过`oemsbl_boot_aarm`函数实现ARM11的实际启动。这一步骤涉及对特定寄存器进行设置,以完成ARM11的复位和供电控制。 ##### 2. **Appsboot Bootloader代码分析** 文档进一步深入分析了Appsboot Bootloader的相关代码。其中,重点分析了`oemsbl_load_aarm_bootloader`函数及其内部逻辑。该函数负责将Appsboot.mbn加载至RAM的指定地址,通常是0x00000000处。这一操作符合规格说明。 此外,文档还介绍了`oemsbl_create_aarm_partition_tbl`函数的用途,即在共享内存中创建分区表。虽然文档未详细展示具体代码实现,但提供了一段示例代码展示了分区表的基本结构,如`board_part_list`数组定义了不同分区的起始地址、长度和名称。 ##### 3. **分区表的作用与管理** 文档强调了分区表的重要性,并简要解释了其作用。分区表用于整合ARM11端的所有分区信息,以便构建完整的系统分区表。这一过程对于系统的正常启动至关重要,确保各分区能够正确装载。 文档还提及了一个具体的分区表示例,其中定义了多个分区,例如`boot`、`system`、`cache`、`recovery`和`userdata`等,每个分区都有其特定的起始地址和长度。 ##### 4. **NAND Flash坏块处理** 文档简单提到了NAND Flash中的坏块问题,并指出`oemsbl_get_bad_block_table`函数的作用是记录这些坏块的信息。这一环节对于确保数据完整性和系统稳定性非常重要。 ##### 5. **启动ARM11的关键步骤** 文档详细分析了`oemsbl_boot_aarm`函数的执行过程。通过设置特定寄存器,如`HWIO_A11_RESET_ADDR`和`HWIO_MSM_RAIL_CLAMP_IO_ADDR`,可以控制ARM11的复位和供电状态,从而实现ARM11的启动。 - `HWIO_A11_RESET_ADDR`:该寄存器用于控制ARM11的复位信号。 - `HWIO_MSM_RAIL_CLAMP_IO_ADDR`:控制供电状态,类似于电源开关。 通过这些操作,可以成功地将ARM11从停顿状态唤醒并启动。 #### 结论 本文档深入剖析了Qualcomm MSM7627平台上ARM11端Appsboot Bootloader的启动过程及相关代码实现细节。通过对关键函数的分析和解释,读者可以更好地理解ARM11的启动机制以及系统分区表的构建过程。此外,对于NAND Flash中的坏块处理也有所涉猎,有助于提高系统稳定性和数据安全性。这些知识点为理解和优化基于高通平台的Android设备启动流程提供了有价值的参考。
剩余64页未读,继续阅读
- andyluo3243152015-02-14平台太老了,很多高通的构架已经有所变化,对刚接触高通平台的人还是有意义的。
- 粉丝: 25
- 资源: 62
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助