1.启动流程一览,图片中不考虑ATF(arm trust firmware),加上ATF,则preloader和LK之间插上个ATF

mtk平台软件架构 mtk 系统_启动流程

2.启动流程分析

1.上电后启动ROM中的代码
  • 从reset vector开始启动
  • 初始化stack空间
  • 找到并初始化启动设备(sd/nand/emmc)
  • 加载preloader到SRAM中,并跳转到preloader中执行代码
2.preloader执行
  • 创建c运行环境
  • 必要的硬件初始化
  • 加载ATF(安全相关)
  • 加载并跳转到lk执行
3.lk执行
  • 获取preloader中传递的参数
  • 使能mmu
  • 初始化必要的硬件设备
  • 设置启动模式
  • 加载并跳转到kernel执行
4.kernel执行
  • 函数执行入口stext
  • start kernel
  • boot param
  • kthread
  • kernel_init
  • init.rc