Android开机流程-从Power ON到Kernel启动init进程(基于高通平台)

Android开机流程-从Power ON到Kernel启动init进程(基于高通平台)

基础概念

进入正文之前,我们先了解下涉及到的一些缩写或者专业术语。

PBL:

Primary Bootloader(主要引导加载程序),或者叫Boot ROM。PBL 是启动过程的第一个阶段,负责初始化硬件并加载下一个阶段的引导加载程序。程序固化在只读存储上,一旦出厂便不可更改。

SBL:

Secondary Bootloader(二级引导加载程序),现在叫XBL (eXtended Boot Loader)。

XBL:

eXtensible Bootloader(可扩展引导加载程序)。XBL 是一个模块化和可扩展的引导加载程序,可以加载和执行不同的引导模块,支持灵活的启动配置。提供的功能包括部分硬件环境初始化(如DDR, clocks 和 USB 等),代码安全环境初始化 (TrustZone),高通 9008 模式(紧急下载模式,Emergency Download Mode)。XBL程序存放在emmc中。

XBL用于取代SBL,在模块化、扩展能力、安全性、启动性能和可靠性方面都优于SBL。

ABL:

Android Bootloader(Android引导加载程序,或者叫aboot)。提供的功能包括验证/加载boot.img, recovery模式,fastboot模式。ABL 功能比较复杂,内部其实运行着一个 mini 的操作系统,这个操作系统就是lk(https://github.com/littlekernel/lk),不过高通从MSM8998开始使用UEFI替代LK(Little Kernel)作为手机的Bootloader。其他平台也有使用uboot作为bootloader。

UEFI(统一可扩展固件接口)、u-boot(统一引导加载程序)和lk(Little Kernel)是三种不同的引导加载程序或固件,用于启动计算机或设备的操作系统。它们之间的区别主要体现在以下几个方面:
UEFI:UEFI是一种固件接口标准,用于替代传统的BIOS(基本输入/输出系统)。UEFI提供了更强大、更灵活的引导和初始化系统的功能。UEFI支持图形界面、网络启动、安全启动等高级功能,使其在现代计算机系统中越来越受欢迎。
u-boot:u-boot是一种开源的引导加载程序,主要用于嵌入式系统。它提供了启动、初始化硬件以及加载操作系统等功能。u-boot通常被用于嵌入式系统中,如嵌入式Linux系统、嵌入式Android系统等。
lk:lk是一种轻量级的内核,主要用于嵌入式系统中的启动过程。lk通常用于启动Android系统的启动过程中,负责初始化硬件并启动操作系统。与u-boot相比,lk更加轻量级,适合于资源受限的嵌入式设备。LK显著的特点是实现了一个简单的线程机制(thread)。

UEFI是一种固件接口标准,而u-boot和lk是两种不同的引导加载程序,用于启动嵌入式系统中的操作系统。它们各自具有不同的特点和适用场景。

EL0, EL1, EL2, EL3

在 ARM 架构中,EL0 到 EL3 是指不同的特权级别,每个级别都有不同的访问权限和功能。高通(Qualcomm)处理器也是基于 ARM 架构的,因此遵循这些特权级别定义。具体来说:

EL0(用户模式,User Mode):

这是最低的特权级别,通常用于运行普通的用户应用程序。应用程序在这个级别上运行时,不能直接访问硬件或修改系统的关键资源。主要目的是提供一个安全的环境,防止用户应用程序对系统造成破坏。

EL1(内核模式,Kernel Mode):

这是操作系统内核运行的特权级别。操作系统内核在这个级别上运行时,具有访问硬件和管理系统资源的权限。内核在EL1级别上管理进程调度、内存管理和其他系统服务。

EL2(Hypervisor Mode):

这是用于虚拟化的特权级别,主要用于运行虚拟机管理程(Hypervisor)。
Hypervisor可以创建和管理多个虚拟机,每个虚拟机运行在EL1或EL0级别上。在EL2级别上运行的Hypervisor可以直接控制硬件资源,并为每个虚拟机提供隔离和保护。

EL3(Secure Monitor Mode):

这是用于处理安全世界(Secure World)和普通世界(Normal World)之间的切换的特权级别。在这个级别上运行的是Secure Monitor,它负责管理安全状态的转换。
TrustZone技术利用EL3来确保安全世界和普通世界之间的隔离。

HLOS: High-Level Operating System(高级操作系统)。HLOS 是运行在移动设备(如智能手机和平板电脑)上的主要操作系统,它管理和控制设备的大多数功能和应用。HLOS 通常是指运行在 EL1 特权级别上的操作系统,比如 Android 或 Windows Mobile。

IMEM(Internal Memory):

在高通(Qualcomm)平台上,IMEM(Internal Memory)通常指的是片上(SOC)内部内存,用于在设备启动和运行过程中存储关键数据和代码。IMEM 是 SoC 的一部分,具有高访问速度和低延迟的特点。

开机流程讲解

开机流程概述

下面以高通SM6125平台为例,讲解下高通平台从上电到执行init整个过程。

请添加图片描述

PBL 是启动过程的第一个阶段,设备上电PBL 执行, PBL 会将初始启动代码加载到 IMEM 中执行,进行基本的硬件初始化。 启动过程中,PBL 可能会将一些重要的信息存储在 IMEM 中,以供后续阶段(如 XBL 和 ABL)访问。

PBL加载和验证 XBL, XBL 可以从 IMEM 中读取硬件配置参数和启动信息,以继续进行更高级别的硬件初始化。XBL 阶段初

### 黑马商城技术架构分析 黑马商城的技术架构采用了现代化的微服务设计理念,通过模块化的方式构建各个功能组件。为了确保系统的可扩展性和维护性,项目遵循了RESTful架构原则[^1]。 #### RESTful 架构的应用 在黑马商城中,RESTful架构被广泛应用于前后端分离的设计模式下。前端通过HTTP请求与后端交互数据,所有的API设计都严格遵守RESTful风格指南。这不仅提高了开发效率,还增强了系统的灵活性和兼容性。 #### API 文档管理 对于API文档的编写,Swagger工具发挥了重要作用。它能够自动生成详细的接口说明文档,并提供在线测试环境,极大地简化了开发者的工作流程。借助Swagger UI界面,团队成员可以直观地查看并调用各种API资源。 #### 数据访问层处理 考虑到实际业务场景中的复杂需求,DAO(Data Access Object)层实现了多种不同类型的数据源操作逻辑。由于这些数据来源并不固定——有的来自关系型数据库查询结果;有的则是由第三方API响应获取;还有部分是从XML文件解析而来——因此,在编码过程中特别强调了面向接口编程的重要性[^2]。 #### Spring Boot 配置实例 以下是Spring Boot应用中关于`RestTemplate`的一个简单配置示例: ```java @Configuration public class AppConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } } ``` 这段代码展示了如何定义一个名为`restTemplate()`的方法来创建并返回一个新的`RestTemplate`对象。该方法上标注了`@Bean`注解,意味着这个方法将会注册成一个bean供其他地方注入使用[^3]。 ### CartServiceImpl 类片段展示 下面是一个有关购物车服务实现类的部分代码段落: ```java @Service public class CartServiceImpl implements CartService { private final RestTemplate restTemplate; @Autowired public CartServiceImpl(RestTemplateBuilder restTemplateBuilder) { this.restTemplate = restTemplateBuilder.build(); } // ... other methods ... } ``` 这里可以看到依赖注入机制是如何工作的:通过构造函数参数的形式接收了一个`RestTemplateBuilder`类型的builder对象用于初始化内部使用的`RestTemplate`实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

techfuture

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值