




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 MT6752 的 Android 系统启动流程分析报告1、Bootloader 引导 .22、Linux 内核启动 .233、Android 系统启动 .23报告人:日 期:2016.09.03对于 Android 整个启动过程来说,基本可以划分成三个阶段:Bootloader 引导、Linux kernel 启动、Android 启动。但根据芯片架构和平台的不同,在启动的 Bootloader 阶段会有所差异。本文以 MTK 的 MT6752 平台为例,分析一下基于该平台的 Android 系统启动流程。1、Bootloader 引导1.1、Bootloader 基本介绍BootLoader 是在操作系统运行之前运行的一段程序,它可以将系统的软硬件环境带到一个合适状态,为运行操作系统做好准备,目的就是引导 linux 操作系统及 Android 框架(framework)。它的主要功能包括设置处理器和内存的频率、调试信息端口、可引导的存储设备等等。在可执行环境创建好之后,接下来把 software 装载到内存并执行。除了装载 software,一个外部工具也能和 bootloader 握手(handshake) ,可指示设备进入不同的操作模式,比如USB 下载模式和 META 模式。就算没有外部工具的握手,通过外部任何组合或是客户自定义按键,bootloader 也能够进入这些模式。由于不同处理器芯片厂商对 arm core 的封装差异比较大,所以不同的 arm 处理器,对于上电引导都是由特定处理器芯片厂商自己开发的程序,这个上电引导程序通常比较简单,会初始化硬件,提供下载模式等,然后才会加载通常的 bootloader。下面是几个 arm 平台的 bootloader 方案:marvell(pxa935) : bootROM + OBM + BLOBinformax(im9815) : bootROM + barbox + U-bootmediatek(mt6517) : bootROM + pre-loader + U-bootbroadcom(bcm2157) : bootROM + boot1/boot2 + U-boot而对 MT6752 平台,MTK 对 bootloader 引导方案又进行了调整,它将 bootloader 分为以下两个部分: (1) 第 1 部分 bootloader,是 MTK 内部(in-house)的 pre-loader,这部分依赖平台。(2) 第 2 部分 bootloader,是 LK(little kernel 的缩写,作用同常见的 u-boot 差不多) ,这部分依赖操作系统,负责引导 linux 操作系统和 Android 框架。1.2、bootloader 的工作流程1.2.1 bootloader 正常的启动流程先来看启动流程图:正常启动的主要工作如下:(1) 设备上电后,Boot ROM 开始运行。(2) BootROM 初始化软件堆栈(software stack)、通信端口和可引导存储设备(比如NAND/EMMC)。(3) BootROM 从存储器中加载 pre-loader 到内部 SRAM(ISRAM)中,因为这时候还没有初始化外部的 DRAM。(4) BootROM 跳转到 pre-loader 的入口处并执行。(5) Pre-loader 初始化 DRAM 和加载 U-Boot 到 RAM 中。(6) Pre-loader 跳转到 U-Boot 中并执行,然后 U-Boot 做一些初始化,比如显示的初始化等。(7) U-Boot 从存储器中加载引导镜像 (boot image),包括 linux 内核和 ramdisk(Android 呢?)(8) U-Boot 跳转到 linux 内核并执行。1.2.2 bootloader 正常的下载流程先来看正常的下载流程图:正常的下载主要工作如下:(1) 设备上电后,Boot ROM 开始运行。(2) BootROM 初始化软件堆栈(software stack)、通信端口和可引导存储设备(比如NAND/EMMC)。(3) BootROM 通过 UART/USB 和 flash 工具握手。(4) BootROM 通过 UART 下载 pre-loader 镜像到 NAND flash/EMMC 中,然后重启。(5) BootROM 加载 pre-loader 到内部 SRAM 汇总,因为 DRAM 还没有初始化。(6) BootROM 跳转到 pre-loader 并执行。(7) Pre-loader 初始化 DRAM 和通过 USB 与 flash 工具握手。(8) Pre-loader 通过 USB 下载其余镜像文件,比如 U-Boot、boot image、recovery image、android system image、user data 到 NAND FLASH/EMMC 中。1.2.3 Bootloader 备用的下载流程(emergency download procedure)(1) 设备上电后,Boot ROM 开始运行。(2) BootROM 初始化软件堆栈(software stack)、通信端口和可引导存储设备(比如NAND/EMMC)。(3) BootROM 在 emergency DL 按键按下后,通过 USB 和 flash 工具握手。(4) BootROM 通过 USB 把指定的镜像文件下载到 NAND FLASH/EMMC 中。1.3、Pre-loader 启动过程1.3.1 Pre-loader 的功能pre-loader 是 MTK 内置的 loader,它的主要功能如下:(1) 负责在芯片组平台(chipset platform)上准备好可执行的环境(2) 如果外部工具有效,它会试图通过 UART 或是 USB 来和外部工具握手。(3) 从 NAND/EMMC 加载 U-Boot,并跳转到 U-Boot。(4) 使用工具握手,设备能够触发进入下载模式来下载需要的镜像,或是进入工厂/ 测试模式,比如 META 模式和 ATE 工厂模式,在这些模式下可以测试模块,或是通过传递引导参数给 U-Boot 和 linux 内核来校准设备(device calibration)1.3.2 Pre-loader 中涉及的硬件部分当系统启动时,芯片组(chipset)内部的可引导 ROM 开始执行,并从可引导存储设备(NAND/EMMC 等等) 上拷贝 pre-loader。所以,需要通过初始化一些硬件模块来为软件创造必要的可执行环境(essential execution environment),所有这些硬件模块在接下来描述。(1) PLL 模块1) PLL 模块用于调整处理器和外部内存的频率。2) 在 PLL 模块初始化后,处理器和外部内存的频率可由 26MHZ/26MHZ 增加到1GHZ/192MHZ。(2) UART 模块1) UART 模块用于调试或是 META 模式下的握手。2) 默认情况下,UART4 初始化波特率为 9216000bps 和用于调试信息的输出,UART1初始化为 115200bps 和作为 UART META 默认端口。但也可以使用 UART1 作为调试或是 UART META 端口。(3) 计时器(timer)模块这是个基本的模块,用来计算硬件模块所需要的延时或是超时时间。(4) 内存模块1) Pre-loader 由 boot ROM 加载和在芯片组内部的 SRAM 中执行,因为外部的 DRAM还没有初始化。2) 为了准备软件整个可执行环境,pre-loader 采用内置的内存设置来初始化DRAM(DRAM is initialized upon pre-loader built-inmemory settigns)。这样,U-Boot就能够被加载到 DRAM 中并执行。(5) GPIO 模块(6) PMIC 模块为了提供一些基本的硬件功能,比如控制外设电源,pre-loader 初始化上层模块(upper modules)。(7) RTC 模块1) 当通过 power 按键开机后,pre-loader 拉高 RTC 的 PWBB 来保持设备一直有电(keep the device alive)和继续引导 U-Boot。2) RTC 闹钟(alarm)有可能是设备开机的启动源,对于这种情况,设备部需要按 power按键就可自动启动。(8) USB 模块当 USB 线插入时,它初始化来和外部工具通信,比如用于升级系统的下载工具或是META 模式触发器的 META 工具。(9) NAND 模块(10) MSDC 模块Pre-loader 可以从 NAND flash 或是 EMMC 中加载 U-Boot,这两者只能选择其中一种来启动。1.3.3 Pre-loader 的过程(procedure)和流程(flow)1.3.4 pre-loader 的上电情景当检测到按下 power 按键或是 USB/充电线插入,pre-loader 调用rtc_bbpu_power_on()函数来锁存 RTC 的 PWBB 来保持设备的一直供电,这样就算是松开power 按键设备也不会关机。 函数位置在:mediatekplatformmt6752preloadersrcdriversrtc.c 文件第 681 行定义。1.3.5 下载过程(download procedure)Pre-loader 检查下面的条件:(1) 充电器已连接(charger is connected)(2) USB 已连接(3) Flash 工具的握手是否通过如果满足上面这几种要求,pre-loader 就会开始下载镜像。下载镜像的主函数 usbdl_handlerPre-loader 接收到从 flash 工具传递进来的“DOWNLOAD”字符串时,usbdl_handler 函数开始下载镜像:函数位置在:mediatekpl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养殖设备收购合同样本
- 养鸡合同样本
- 个人汽车借款合同样本
- 代建合同样本 乙方
- 个人信息保护合同样本
- 初高中语文衔接暑期预习:5套学习资料汇编(含练习题及答案)
- 幼儿园生活常识教育计划
- 2025年郑州货运从业资格证考试模拟考试题库答案大全
- 幼儿园探索与发现课程安排计划
- 财务知识的分享与传播计划
- 示范区标识及精神堡垒、文化墙施工方案
- 最新2022年兰州一中高考录取情况
- 内科医生工作总结PPT课件
- 反渗透理论及要求
- 气道异物梗阻的急救ppt课件
- T∕CNTAC 22-2018 绒毛织物掉毛性的试验方法
- 能源计量网络图范例二
- 历代皇帝年号表
- 超星尔雅学习通《时间管理》章节测试含答案
- 二至六年级24点试题与部分答案
- 2016年江苏开放大学-实践性考核作业-建设工程施工管理1课件
评论
0/150
提交评论