Android 启动流程

ops/2025/1/31 11:21:16/

一 Bootloader 阶段

在嵌入式系统中,Bootloader的引导过程与传统的PC环境有所不同,主要是因为嵌入式系统的硬件配置和应用场景更加多样化。以下是嵌入式系统中Bootloader被引导的一般流程:

1. 硬件复位

当嵌入式设备上电或复位时,处理器会执行一个预定义的启动序列。通常,这包括设置CPU寄存器到默认状态,并开始从一个固定的内存地址(通常是ROM或者Flash)读取指令。

2. 初始Bootloader阶段

  • 直接固件加载:某些嵌入式处理器设计为直接从特定位置(如内部ROM)运行代码。这段代码非常小且简单,其主要任务是初始化一些关键的硬件组件(如内存控制器),以便后续可以从外部存储器(如NOR Flash、NAND Flash、SD卡等)加载更复杂的Bootloader程序。
  • Boot ROM:许多现代嵌入式处理器包含一个小型的Boot ROM,它知道如何处理不同类型的启动介质(比如SPI Flash、eMMC、USB等)。这个Boot ROM负责定位并加载第一个真正的Bootloader映像到内存中。

3. 主Bootloader阶段

  • 硬件初始化始化
  • 环境变量设置
  • 加载操作系统内核和文件系统
  • 传递控制给操作系统

第一阶段:
1、硬件设备初始化:
关闭看门狗、关中断、启动ICACHE、关闭DCACHE和TLB,关闭MMU、设置时钟频率、RAM初始化等。
2、为加载BootLoader的第二阶段准备RAM空间
3、复制BootLoader的第二阶段代码到RAM空间中
4、设置好栈
5、跳转到第二阶段代码的C入口处

第二阶段:
1、初始化本阶段要使用的硬件设备
2、检查系统内存映射(memory map):就是确定板子使用了多少内存,他们的地址空间是什么。
3、将内核映象和根文件映象从flash上读到RAM空间中
4、为内核映象设置启动参数
5、调用内核

二 kernel 阶段

1. 内核启动

当内核映像被加载到内存后,内核开始执行:
初始化硬件:例如内存管理、中断、定时器等。
加载 init 进程:这是 Linux 系统中的第一个用户空间进程,通常在 Android 中是 init 进程。

2. init 进程启动

init 进程是 Android 系统中非常重要的一个组件,它负责:
挂载文件系统:例如 /system 和 /data。
启动关键服务:如 zygote、SurfaceFlinger、InputManager 等。
执行 rc 文件:这些文件定义了系统启动时需要运行的脚本和服务。

3. Zygote 进程

在 init 进程中,会启动 Zygote 进程,这是 Java 虚拟机(JVM)的一个实例,用于孵化其他 Java 应用进程。Zygote 负责:
预加载类:减少后续应用启动时间。
孵化应用进程:如 Android 应用和系统服务。


http://www.ppmy.cn/ops/154458.html

相关文章

YOLOv8源码修改(4)- 实现YOLOv8模型剪枝(任意YOLO模型的简单剪枝)

目录 前言 1. 需修改的源码文件 1.1添加C2f_v2模块 1.2 修改模型读取方式 1.3 增加 L1 正则约束化训练 1.4 在tensorboard上增加BN层权重和偏置参数分布的可视化 1.5 增加剪枝处理文件 2. 工程目录结构 3. 源码文件修改 3.1 添加C2f_v2模块和模型读取 3.2 添加L1正则…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.26 统计圣殿:从描述统计到推断检验

1.26 统计圣殿:从描述统计到推断检验 目录 #mermaid-svg-3nz11PRr47fVfGWZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3nz11PRr47fVfGWZ .error-icon{fill:#552222;}#mermaid-svg-3nz11PRr47fVfGWZ…

基于python对抖音热门视频的数据分析与实现

1.1 研究背景 随着互联网技术的飞速发展,短视频平台已经成为人们日常生活中不可或缺的一部分。抖音作为其中的佼佼者,凭借其简洁的操作界面、丰富的视频内容和高效的推荐算法,吸引了大量用户。截至2022年底,抖音日活跃用户数已超…

国产碳化硅(SiC)MOSFET模块在电镀电源中全面取代进口IGBT模块

国产碳化硅(SiC)MOSFET模块在电镀电源中全面取代进口IGBT模块,倾佳电子杨茜分析以下几方面的技术、经济和政策优势: 倾佳电子杨茜致力于推动SiC碳化硅模块在电力电子应用中全面取代IGBT模块,助力电力电子行业自主可控…

HTML-新浪新闻-实现标题-样式1

用css进行样式控制 css引入方式: --行内样式:写在标签的style属性中(不推荐) --内嵌样式:写在style标签中(可以写在页面任何位置,但通常约定写在head标签中) --外联样式&#xf…

C# 与.NET 日志变革:JSON 让程序“开口说清话”

一、引言:日志新时代的开启 在软件开发的漫长旅程中,日志一直是我们不可或缺的伙伴。它就像是应用程序的 “黑匣子”,默默地记录着程序运行过程中的点点滴滴,为我们在调试、排查问题以及性能优化时提供关键线索。在早期&#xff…

Manticore Search,新一代搜索引擎之王

吊打ES,新一代搜索引擎之王 概述 Manticore Search 是一个开源的分布式搜索引擎,专注于高性能和低延迟的搜索场景。 它基于 Sphinx 搜索引擎开发,继承了 Sphinx 的高效索引和查询能力,并在分布式架构、实时搜索、易用性等方面进…

IDEA2020同时使用SVN和GIT

IDEA2020.1.3版本同时使用SVN和GIT: 切这里就行了。切了Git绑远程git仓库地址,切了svn绑好svn远程仓库地址。 变化如下: 切换使用就行.