Android系统启动流程(一)PowerOn

2019-04-14 12:27发布

(一)概述

  • 1.开机,开机就是给系统开始供电,此时硬件电路会产生一个确定的复位时序,保证CPU是最后一个被复位的器件.

    为什么CPU要最后被复位呢?因为,如果CPU第一个被复位,则当CPU复位后开始运行时,其他硬件内部的寄存器状态可能还没有准备好,比如磁盘或者内存,那么久可能出现外围硬件初始化错误。
  • 2.当正确完成复位后,CPU开始执行第一条指令,该指令所在的内存你地址是固定的,这由CPU的制造者指定。不同的CPU可能会从不同的地址获取指令,但这个地址必须是固定的,这个固定地址所保存的程序往往被称为"引导程序(BootLoader)",因为其作用是装载真正的用户程序
  • 至于如何装载,则是一个策略问题,不同的CPU会提供不同的装载方式,比如有的是通过普通的并口存储器,有的则通过SD卡,还有的还是通过RS232接口。无论硬件上使用何种接口装载,装载过程必须提供以下信息,具体包括:
  • 1 从哪里读取用户程序
  • 2 用户程序的长度是什么
  • 3 装载完用户程序后,应该跳转到哪里,即用户程序的执行入口在哪里?

    不同硬件系统会采用不同的策略,但只要以上三个信息是确定的,用户程序就会被装载到确定的地址,并执行相同的操作。

参考

Android启动流程——1序言、bootloader引导与Linux启动