文章目录

  • Android整体上电启动流程
  • DRAM在哪得到初始化的?
  • LK的功能
  • Init进程的功能

Android整体上电启动流程


具体流程图如下:

流程分析

1-3: 板子上电时,就跳转到boot Rom中去执行boot code,之后boot code中去加载preloader到ISRAM中去执行
4-6: 接着preloader跳转到EL3去执行ATF(Arm Trust firmware), ATF为ARM芯片的底层固驱动,将触发LK
7-8: 将LK从flash中copy到DRAM中去初始化,为进行启动linux kernel做准备
9-10: 解压bootimage成ramdisk跟kernel,并加载到DRAM中进行初始化dtb,开始做kernel初始化.
11-13: LK跳转到kernel初始化,kernel初始化完成,会fork出init进程, 然后, 拉起ramdisk中的init进程进入用户空间初始化验,
init进程fork出zygote进程,直到整个Android系统自动完成.
到此,整个Android系统就启动完毕,可以看Android的logo启动,最后进入桌面.

DRAM在哪得到初始化的?

由于硬件DRAM的颗粒不同,访问的timing也不同,因此,要知道DRAM如何运行,首先得知道DRAM的时序如何?DRAM的初始化是在preloader中做的,而preloader的加载地址是其头部有一个0x300的header,所以在boot code中去加载读取出preloader的header, 将其加载到ISRAM中去执行即可得到DRAM的初始化时序,即可开始运行系统了.

LK的功能

1, 线程池的初始化,包括运行队列,链表初始化
2, 架构初始化,包括DRAM MMU初始化,使能协处理器
3, platform early init, 包括UART, timer, I2C, pmic, usb等
4, platform init,包括storagre, mmc, nand, leds, disp
5, load boot logo and display it
6, load kernel into DRAM, 解压kernel并启动kernel

Init进程的功能

1, 创建文件并挂载
2, 初始化和启动属性服务
3, 解析init.rx配置文件并启动zygote进程

更多相关文章

  1. Android(安卓)IPC机制(Android开发艺术探索)
  2. Android开机自启动。
  3. AndroidManifest中original-package标签
  4. android service 通过broadcast通知Myreceiver 启动activity
  5. android使程序进程不被LMK杀死| application运行环境初始化
  6. 关于 onPause 和 onStop 的那些事
  7. IPC多进程模式学习笔记
  8. Android进程调度之adj算法
  9. android+kotlin开发笔记(一)

随机推荐

  1. Android 删除指定文件代码
  2. Android支持展开/收缩功能的列表控件
  3. Android CheckBox example
  4. Android之拖拉功能
  5. elipse上安android
  6. android ndk 常用宏定义
  7. Android(安卓)下拉刷新上拉加载 PullToRe
  8. Android 水平平分布局和垂直平分布局
  9. Android安装使用过程
  10. android 实现序列化 浅析一