从Linux启动过程到android启动过程
Linux启动过程:
1、首先开机给系统供电,此时硬件电路会产生一个确定的复位时序,保证cpu是最后一个被复位的器件。为什么cpu要最后被复位呢?因为 如果cpu第一个被复位,则当cpu复位后开始运行时,其他硬件内部的寄存器状态可能还没有准备好,比如磁盘或者内存,那么就可能产生外围硬件初始化错误。
2、当正确完成复位后,cpu开始执行第一条指令,该指令所在的内存地址是固定的,这由cpu的制造者决定。不同的cpu可能会从不同的地址获取指令,但这个地址必须是固定的,这个固定地址所保存的程序往往被称为“引导程序(Bootloader)” 因为其作用是装载真正的用户程序。
不同的菜谱会提供不同的装载方式但是都要提供如下信息:
从哪里读取用户程序
用户程序的长度是多少
装载完用户程序后,应该跳转到哪里,既用户程序的执行入口在哪里?
不同硬件系统会采用不同的策略,但只要以上三个信息确定,用户程序就会被装载到确定的地址,并执行相同的操作
3、硬件装载好后,是执行内核程序(上步的用户程序) 内核程序初始化时执行的操作包括 初始化各种硬件,包括内存、网络接口,显示器、输入设备,然后就是建立各种内部数据结构,这些数据结构将用于多线程调度及内存的管理。当内核初始化完毕后,就开是运行具体的应用程序类,一般情况下,习惯于将第一个应用程序称为“Home”
像windows的Home就是桌面 Linux第一个运行的程序是Terminal (终端)(Home程序的实际目标就是提供一个入口用户可以通过该入口启动其他应用程序) 所以Linux的Terminal是一个Home。
这是linux的启动过程 下面分析下android的启动过程
三个概念:
ARM: 本身是一个公司名称,从技术角度来看 它又是一种微处理器内核的构架。
CPU: 是处理器内部的中央处理单元的缩写,CPU可以按照类型分为短指令集架构和长指令集架构 ARM属于短指令集架构的一种
对于ARM处理器 当复位完毕后,处理器首先执行其片上ROM中的一小块程序。这块ROM的大小一般只有几KB该段程序就是Bootloader程序。
这段程序执行时会根据处理器上一些特殊引脚的高低电平状态,选择从何种物理接口上装载用户程序,对于android而言。该程序中还不是
android程序,而是一个叫做uboot或者fastboot的程序,其作用是初始化硬件设备,比如网口 等 并提供一些调试功能,比如向NAND FLASH
中写入新的数据这可用于开发过程中的内核烧写 升级等
当uboot被装载后便开始运行,他一般会先检测用户是否按下类某些特别按键,这些特别按键是uboot在编译是预先约定好的,用于进入调试模式
如果用户没有按这些特别的按键则 uboot会从NAND Flash中装载Linux内核,装载的地址是在编译uboot时约定好的
Linux内核被装载后,就开始进行内核初始化的过程
以上过程中,init.rc文件在android手机中的系统根目录下,可以使用adb pull命令提取出该文件: adb pull /init.rc ~/Desktop
init.rc的内容格式类似一种脚本,但是他却不是标准的linux脚本 而是仅用于启动的脚本 。
从Linux启动过程到android启动过程的更多相关文章
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
- android 启动过程
android系统启动的时候首先会启动Linux的基础进程,加载Linux kernel启动初始化(init)进程. 接着,回启动Linux deamon(守护进程)会启动以下的内容: ①启动USBd ...
- Android 启动过程简析
首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...
- Android 核心分析 之八Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...
- Android启动过程以及各个镜像的关系
Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...
- Android(java)学习笔记162:Android启动过程(转载)
转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...
- Android启动过程深入解析
本文由 伯乐在线 - 云海之巅 翻译.未经许可,禁止转载!英文出处:kpbird.欢迎加入翻译小组. 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样的? 什么是Li ...
- Android启动过程深入解析【转】
转自:http://www.open-open.com/lib/view/open1403250347934.html 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么 ...
- Android(java)学习笔记105:Android启动过程(转载)
转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...
随机推荐
- Asp.Net Core 2.0 项目实战(7)MD5加密、AES&DES对称加解密
本文目录 1. 摘要 2. MD5加密封装 3. AES的加密.解密 4. DES加密/解密 5. 总结 1. 摘要 C#中常用的一些加密和解密方案,如:md5加密.RSA加密与解密和DES加密等, ...
- 我与android的缘分
android的开始 本人是一名大三的学生,大一大二主要学习的是php后台开发,在大一的时候做过一些小的网站系统,也参加过一些大学生计算机相关的比赛.这次开始着手于安卓开发,也是一时的兴起.因为跟我们 ...
- Vue 波纹按钮组件
代码链接:https://github.com/zhangKunUserGit/vue-component 效果图: 大家可以在线运行: https://zhangkunusergit.github. ...
- [精简版]snowing snow
CSS <style> body { background: #eee; } @keyframes mysnow { 0% { bottom: 100%; opacity: 0; } 50 ...
- Android图表库MPAndroidChart(六)——换一种思考方式,水平条形图的实现过程
Android图表库MPAndroidChart(六)--换一种思考方式,水平条形图的实现过程 一.基本实现 我们之前实现了条形图,现在来看下水平条形图是怎么实现的,说白了就是横起来,看下效果: 说起 ...
- Android N(7.0) 被美翻的新特性!
Tamic 专注移动开发!更多文章请关注 Csdn: http://blog.csdn.net/sk719887916/article/details/52612444 $ http://www.ji ...
- ejabberd mod_echo 解析
ejabberd mod_echo 解析(金庆的专栏 2016.8)按开发入门的说明,mod_echo是最简单的模块之一.https://docs.ejabberd.im/developer/当然 m ...
- Redis 学习笔记1:CentOS 6.7下安装Redis
在linux环境搭建Redis环境,首先从官网(http://redis.io/)下载Redis 版本,本人使用的3.21版本. 1. 将redis 解压到 /usr/local目录下. [root ...
- cassandra eclipse 环境构建
摘要 本文主要介绍如何在eclipse中搭建cassandra环境 更多cassandra,nosql 相关知识请访问http://www.webpersonaldeveloper.cn 正文 1.f ...
- 集成JPA+springmvc+spring+EJB中的Java EE应用
EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序.凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台.EJB (Enterprise Jav ...