MTK安卓启动流程

MTK安卓启动流程

注:ARMv8架构中的EL0、EL1、EL2、EL3层级对应关系

EL0 – app

EL1 – kernel、lk

EL2 – 虚拟化一般不用

EL3 – ARM trust firmware、preloader

启动流程
    1. boot rom
    2. preloader
    3. little kernel
    4. kernel
    1. 上电先启动boot rom —->复位SOC、初始化内部RAM、初始化和发现外设、加载preloader到内部RAM,跳转到preloader
    2. boot rom 加载preloader —-> SOC内部SDRAM;设置C环境、设置时钟UART等、安全(只加载MTK授权的二进制文件)
    3. preloader开始,初始化外部RAM,加载LK到外部RAM
    4. LK开始执行,加载bootimage到外部RAM
Preloader处理流程
    1. pre process,初始化硬件
    2. handshake,握手校验,usb、uart、other mode
    3. load image,加载镜像LK,0x81e00000

    preloader –> LK

    preloader启动流程

Little Kernel 流程
    1. crt0.s 初始化向量表,切换管理模式,跳转到Kmian

    2. kmain,

      thread init early,早期线程初始化,

      arch init early,架构初始化(MMU、DRAM)

      platfrom init early,平台早期初始化(wdt、iic、uart、led、gpio)

      heap init,初始化内核heap、timer

      bootstrap2,创建的系统初始化线程(平台初始化(logo等)、app初始化、启动模式)

        1. bootstrap2详解

        2. platform init,flash初始化、显示初始化、启动模式检测(recovery、fastboot)、加载logo、电量检测

        platfrom init

        1. app init

        2. mt boot init,获取设备串号,sn号,进入boot linux form storage

          • boot linux form storage,根据g boot mode选择启动模式,重定位根文件系统,设置内核启动参数通过boot linux(关闭MMU,IRQ、I\D-cache)拉起内核

      LK流程

    Linux Kernel
      1. 关闭MMU、D-Cache,I-Cache 开关都可以,关闭FIQ、IRQ 、运行在SVC(超级用户模式),R1 –> 机器码,R2 –> 指针
      2. lookup_processor、machine检查处理器和机器码
      3. 检查ATag
      4. 创建页表,并使能MMU
      5. 开始内核
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值