作者:郭孝星

微博:郭孝星的新浪微博

邮箱:allenwells@163.com

博客:http://blog.csdn.net/allenwells

Github:https://github.com/AllenWells

一 系统上电和启动ROM

NOR Flash作为启动ROM的系统启动过程

  1. NOR Flash开头处存放启动代码,程序从NOR Flash開始处启动。

  2. 配置EMI寄存器,设置好各存储器的地址和存取规则。

  3. 配置电源管理模块。各模块上电。

  4. 启动代码将位于NOR Flash中的正式运行代码拷贝到内存中。以提高运行效率。

  5. 设置PC指针,指向NOR Flash中固定地址。
  6. 设置地址映射,用0地址映射到内存RAM空间。

  7. 设置PC指针,指向RAM中初始化代码。開始运行代码。

NAND Flash作为启动ROM的系统启动流程

  1. 上电初始。DMA默认设置将存储在NAND Flash中第一页的数据搬运到内部RAM中,然后设置PC到内部RAM開始处的地址。開始运行代码。
  2. 在启动代码中设置中断向量和硬件配置等。
  3. 将运行代码搬运到外部SDRAM或DDR=RAM,留出启动代码的位置。
  4. 将启动代码搬运到SDRAM或DDR-RAM中首址。

  5. 设置Remap。将0地址又一次映射到SDRAM或DDR-RAM首地址。
  6. 设置PC指针,開始运行正式的运行代码。

二 Bootloader引导

三 Linux内核引导

非压缩内核:Image

压缩内核:zImage

  1. 内核初始化
  2. 设备初始化
  3. 启动内核
  4. 挂载文件系统
  5. 启动用户空间进程

四 init初始化系统服务

  1. 初始化log系统
  2. 解析/init.rc和/init.%hardware%.rc文件,运行early-init,并运行解析出的init动作、early-boot动作、boot动作和execute property动作。
  3. 进行设备初始化,属性server初始化并开启属性服务。

  4. 进入无线循环以等待属性设置或子进程退出事件。

Linux系统启动流程分析的更多相关文章

  1. linux基础-附件1 linux系统启动流程

    附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ...

  2. Linux系统启动流程及安装命令行版本

    Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ...

  3. 【转载】Linux系统启动流程

    原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ...

  4. Linux系统启动流程及grub重建(1)

    日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel--& ...

  5. Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密

    一.系统启动流程 一般来说,Linux 系统的启动流程是这样的: 1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIO ...

  6. Linux系统启动流程(重要!)

    Linux系统启动流程   从上至下为: BIOS  MBR:Boot Code 执行引导程序-GRUB(操作系统) 加载内核 执行init run level 1.BIOS(Basic Input ...

  7. 谈谈Linux系统启动流程

    @ 目录 大体流程分析 一.BIOS 1.1 BIOS简介 1.2 POST 二.BootLoader (GRUB) 2.1 What's MBR? 2.2 What's GRUB? 2.3 boot ...

  8. 嵌入式Linux开发之uboot启动Linux整体流程分析

    嵌入式Linux开发之uboot启动Linux整体流程分析 Uboot全称Universal Boot Loader,一个遵循GPL协议的的开源项目,其作用是引导操作系统,支持引导linux.VxWo ...

  9. linux 系统启动流程

    原著资料网址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html (版权归原作者所有) Linux系统的启动分5个阶段,每个阶段都完成不 ...

随机推荐

  1. 循环实现数组filter方法

    // 循环实现数组 filter 方法 const selfFilter = function (fn, context){ // 如果调用的地方使用箭头函数,这里的this岂不是不对了,那该怎么解决 ...

  2. L_01 网络字节顺序

    (1)计算机在存储多字节数据时存在大端字节顺序和小端字节顺序两种方式. 大端:高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放在内存的高地址端. 小端:低位字节排放在内存的低地址端(即该 ...

  3. 使用 隧道技术 使用http代理连接 svn:// git://

    问题点 在某些情况下  无法通过代理 用 svn 访问svn://协议例如(svn://www.qdac.cc )   故此有了此贴 远端需要一个代理 服务器 connect-tunnel -P 代理 ...

  4. [JOYOI] 1071 LCIS

    拖了好久的LCIS f[i][j]表示a串前i个,b串以b[j]结尾的LCIS长度. 转移时考虑a[i]和b[j]是否相等,如果不等: 那么既然是以j结尾,说明a串前i-1位有一个字符和b匹配了,所以 ...

  5. python中的参数、全局变量及局部变量

    1.位置参数.关键字参数.默认参数的使用 位置参数.关键字参数 def test(x,y,z): print(x) print(y) print(z) test(1,2,3) #位置参数,必须一一对应 ...

  6. ubuntu18.04 server配置静态ip

    最新发布的ubuntu18.04 server,启用了新的网络工具netplan,对于命令行配置网络参数跟之前的版本有比较大的差别,现在介绍如下:1.其网络配置文件是放在/etc/netplan/50 ...

  7. utf-8 下汉字为什么需要三个字节

    Unicode 十六进制码点范围 --> UTF-8 二进制0000 0000 - 0000 007F --> 0xxxxxxx 0000 0080 - 0000 07FF --> ...

  8. 关于在Safari浏览器中将网页添加到主屏幕的相关设置(自定义图标,启动动画,自定义名称)

    在ios中我们可以使用Safari浏览自带的将网页添加到主屏幕上,让我们的web页面看起来像native那样 第一步: 第二步: 第三步: 到这里还没结束:我们还要进行相关设置才能使我们的应用更像原生 ...

  9. awk中RS,ORS,FS,OFS区别与联系

    学习awk时,一定要记得动手去实践,只有在实践中才能发现问题,以下就我在学习中和实践中的经验,总结一下RS,ORS,FS,OFS的区别和联系. 一.OS和ORS 1.RS是记录分隔符,默认的分隔符是\ ...

  10. 一些简单的JavaScript的方法

    <script type="text/javascript"> //js跳转 function UserMouserDown() { confirm('你确定要删除吗? ...