当前位置: 首页 > article >正文

Android 启动流程

一 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.kler.cn/a/526042.html

相关文章:

  • (笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识
  • INCOSE需求编写指南-附录 D: 交叉引用矩阵
  • 【C++】特殊类设计
  • 第十六届蓝桥杯大赛软件赛(编程类)知识点大纲
  • hive:数据导入,数据导出,加载数据到Hive,复制表结构
  • 如何在Spring Boot项目中高效集成Spring Security
  • 新版231普通阿里滑块 自动化和逆向实现 分析
  • 【25考研】考研366是否能进北航计算机复试?该怎么准备?
  • Ubuntu全面卸载mysql
  • unity使用内置videoplayer打包到安卓手机进行视频播放
  • linux asio网络编程理论及实现
  • 8.线程的同步和互斥
  • 大数据相关职位介绍之三(数据挖掘,数据安全 ,数据合规师,首席数据官,数据科学家 )
  • 解析静态链接
  • 我的毕设之路:(2)系统类型的论文写法
  • C++并发编程指南07
  • CMAKE工程编译好后自动把可执行文件传输到远程开发板
  • 深度学习探索:ChatGPT数据分析精髓 梯度下降优化方法深度剖析
  • 微软官方工具箱 PowerToys,提升工作效率
  • Conditional DETR for Fast Training Convergence论文学习
  • 负荷预测算法模型
  • 新月智能护甲系统CMIA--未来战场的守护者
  • 从巫师求雨说起
  • 如何使用formlinker,重构微软表单创建的数字生产力法则?
  • 提供算法模型管理、摄像头管理、告警管理、数据统计等功能的智慧园区开源了
  • MySQL(高级特性篇) 14 章——MySQL事务日志