从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的启动过程是怎么样 ...
随机推荐
- /bin/bash 常用命令
ls -a 查看一切文件 ls -l 查看目录文件信息 clear 清屏(信息保留屏幕) reset 清屏(所有信息) ls *.txt 查看所有txt文件 wc 统计文件 -l 行数: - c 统计 ...
- FJUT第四周寒假作业之第一集,临时特工?(深度优先搜索)
原网址:http://210.34.193.66:8080/vj/Contest.jsp?cid=163#P2 第一集,临时特工? TimeLimit:1000MS MemoryLimit:128M ...
- CSDN博客投票活动开始了
自己坚持写博客,一方面是为了将自己对知识点的理解做一个总结,另一方面也是因为自己看到了很多无私奉献分享自己知识的小伙伴们,因此自己也想像他们那样尽自己微薄之力把自己对某一知识点的理解分享给大家,或许算 ...
- Bootstrap3 表格-响应式表格
将任何 .table 元素包裹在 .table-responsive 元素内,即可创建响应式表格,其会在小屏幕设备上(小于768px)水平滚动.当屏幕大于 768px 宽度时,水平滚动条消失. Fir ...
- iOS开源加密相册Agony的实现(一)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- Native Hibernate与Hibernate JPA
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan/article/details/50182005 翻译来源:http://stackoverflow. ...
- 【SSH系列】Hibernate映射-- 多对一单向关联映射
在hibernate中非常重要的就是映射,在前面的博文中,小编简单的介绍了基本映射,基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型 ...
- java集合循环删除
java集合循环删除,java list集合操作,java循环.分享牛,分享牛原创.java集合删除方法. 2.6.1.第一种方式 list.add("1"); list.add( ...
- Not saving crash log because we have reached the limit for logs to store on disk.解决办法
一.问题简述: Xcode, window>Devices>DEVICES选中自已的设备,打开控制台:提示日志存量已达限制,这个是系统抛出的log."Not saving cra ...
- Memcached - Base
Memcached 标签 : Java与NoSQL 在程序的实现中, 经常会忽略程序的运行时间. 即使采用类似的实现方法, 有时候运行速度也会相差很多. 大多数情况下, 这一速度上的差异是由数据访问速 ...