Arm启动流程解析

谈到arm的启动流程不得不说的是bootloader,但是我这篇文章主要来谈谈arm启动流程的,所以bootloader只是跟大家简介一下就ok。这篇文章我会谈到以下内容:

1、bootloader简介以及其作用

2、2440、6410、210当下比较常见的3款处理器的启动流程进行简单分析,通过这三款处理器的分析希望大家掌握arm处理器的启动分析。

Ok我们进入主题

l  Bootloader简介及其作用

在我看来bootloader的作用是初始化必要的硬件,引导内核启动。(当然这是主要作用,今天的重点不在bootloader,所以在我后面的博文会继续谈到的)

l  启动流程分析

在分析启动流程的时候我们将会使用的文档是三星公司提供的芯片手册,通过手册我们搞清楚芯片的启动。

在分析启动流程之前我们首先要清楚不论是arm的何种处理器,其都是从0x0000 0000地址处开始执行程序的。下面的分析我将会通过三个方面:1、芯片支持的启动方式2、地址布局3、启动流程

1.   2440

a)   启动方式

由上图可知,S3C2440支持两种启动模式:NAND和非NAND(这里是Nor Flash),具体采用的方式取决于OM0、OM1两个引脚的状态。

 
 

b)  
地址布局

我们知道arm从0地址出运行代码那么我们的零地址处到底存放的是什么东西呢?我们通过地址布局图来分析

从上图我们可以清楚的看到左边的是从Nor Flash启动的地址布局,右边是从NAND启动的地址布局,因为Nor Flash内可以运行程序,所以我们在放bootloader的时候放在0地址处即可,所以我们重点分析从NAND启动。

c)  
启动流程

我们从地址布局图中可以看到,当我们从NAND启动的时候0地址处是BootSRAM(又叫做stepping stone垫脚石),当我们上电时其会做以下事情

1.  
上电后处理器自动将nandflash前4KB的内容复制到boot
sram开始执行(由硬件完成)。

2.  
通过bootsram(即刚才复制进来的4k)来初始化相关硬件和寄存器从而访问nandflash,接下来把剩余的bootloader复制到内存(SDRAM/DRAM)中,当stepping stone 里面的4KB执行完以后跳转到内存继续执行,完成系统的启动。

2.  
6410

a)  
启动方式

从上图我们可以看到6410支持的启动方式比较多有SROM(Nor
Flash)启动,oneNAND启动,IROM(IROM是处理器内部的固件/存储器,但不是stepping stone)启动。其中IROM中又有sd卡、NAND,我们可以配置相应的管脚去选择其启动方式。

b)  
地址布局

从上图我们可以发现在0地址处是一个镜像区,不放置任何设备,当我们选择不同的启动方式的时候,其通过映射关系将对应的设备映射到镜像区域。比如我们选择从IROM启动其就会将IROM映射到该区域。

c)  
启动流程

假设我们从NAND启动,从启动方式中我们可以知道从NAND启动是属于从IROM启动的,所以当我们上电的时候其会做以下事情:

1.  
将IROM映射到镜像区

2.  
IROM中有芯片厂商写好的BL0,由BL0将系统引导至启动选项,然后将BL1(NAND中前8k)拷进stepping stone进行运行

3.  
BL1将剩下的BL2拷进内存,当BL1执行完以后跳转到内存继续执行,完成系统的启动。

3.  
210

a)  
启动方式

从上图我们可以看到210支持的启动方式相当的多,但和6410相似。

b)  
地址布局

从上图我们可以看到其地址布局和6410类似,采用了映射的方法。

c)  
启动流程

假设我们从NAND启动,从启动方式中我们可以知道从NAND启动是属于从IROM启动的,所以当我们上电的时候其会做以下事情:

1.  
将IROM映射到镜像区

2.  
IROM中有芯片厂商写好的BL0,由BL0将系统引导至启动选项,然后将BL1(NAND中前16k)拷进stepping stone进行运行

3.  
若BL2小于80K,BL1则将其拷进stepping stone。若BL2大于80k,BL1将剩下的BL2拷进内存。当BL1执行完以后跳转到内存或者继续在stepping stone运行BL2,完成系统的启动。

时间: 2024-11-10 21:35:18

Arm启动流程解析的相关文章

EurekaClient自动装配及启动流程解析

在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类EurekaDiscoveryClientConfigServiceBootstrapConfiguration @ConditionalOnClass(ConfigServicePropertySourceLocator.class) @ConditionalOnProperty(value =

【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)

作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 :  -- u-boot 源码 : http://download.csdn.net/detail/han1202012/8342761 -- S3C2440 文档 : http://download.csdn.net/detail/han1202012/8342701 -- S5PV210_iROM_Applicati

Nginx(一):启动流程解析

nginx作为高效的http服务器和反向代理服务器,值得我们深入了解. 我们带着几个问题,深入了解下nginx的工作原理.首先是开篇:nginx是如何启动的? nginx是用c写的软件,github地址: https://github.com/nginx/nginx 其目录结构如下,我们主要关注 src 目录下的文件. nginx.c 是main函数入口,我们也是通过这里进行启动流程分析的. 零.启动流程时序图 我们先通过一个时序图进行全局观察nginx是如何跑起来的,然后后续再稍微深入了解些细

“无处不在” 的系统核心服务 —— ActivityManagerService 启动流程解析

本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 系列文章目录: Java 世界的盘古和女娲 -- Zygote Zygote 家的大儿子 -- SystemServer Android 世界中,谁喊醒了 Zygote ? 文中相关源码链接: SystemServer.java ActivityManagerService.java 之前介绍 SystemServer 启动流程 的时候说到,SystemServer 进程启动了一系列的系统服务,Activ

EurekaServer自动装配及启动流程解析

在开始本篇文章之前,我想你对SpringCloud和SpringBoot的基本使用已经比较熟悉了,如果不熟悉的话可以参考我之前写过的文章 本篇文章的源码基于SpringBoot2.0,SpringCloud的Finchley.RELEASE @EnableEurekaServer注解 我们知道,在使用Eureka作为注册中心的时候,我们会在启动类中增加一个@EnableEurekaServer注解,这个注解我们是一个自定义的EnableXXX系列的注解,主要作用我们之前也多次提到了,就是引入配置

庖丁解牛 Activity 启动流程

前言 这是 Android 9.0 AOSP 系列 的第五篇了,先来回顾一下前面几篇的大致内容. Java 世界的盘古和女娲 -- Zygote 主要介绍了 Android 世界的第一个 Java 进程 Zygote 的启动过程. 注册服务端 socket,用于响应客户端请求 各种预加载操作,类,资源,共享库等 强制 GC 一次 fork SystemServer 进程 循环等待客户端发来的 socket 请求(请求 socket 连接和请求 fork 应用进程) Zygote家的大儿子 --

ARM Linux从Bootloader、kernel到filesystem启动流程

转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesystem.bootloader 是一上电就拿到cpu 的控制权的,而bootloader实现了硬件的初始化.bootloader俨然就成了Power on 之后”第一个吃螃蟹”的代码. 谈到这就得想到硬件机制是如何满足这个功能的了.CPU内部一般都集成小容量的SRAM (又叫stapping stone,垫脚石),

android源码解析之(十四)-->Activity启动流程

好吧,终于要开始讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍: An activity represents a single screen with a user interface. For example, an email appl

15.ARM处理器的启动流程

15.ARM处理器的启动流程 ARM处理器启动流程涉及三方面的知识: 启动方式 地址布局 启动流程 S3c2440的ARM处理器的启动流程: 2440支持 Nor Flash启动,Nor Flash的大小2MB ????Nand Flash启动,Nand Flash的大小256MB 所以2440把uboot和kernel.FileSystem放到Nand Flash来启动的 地址布局: