谈到arm的启动流程不得不说的是bootloader,可是我这篇文章主要来谈谈arm启动流程的,因此bootloader只是跟你们简介一下就ok。这篇文章我会谈到如下内容:布局
1、bootloader简介以及其做用spa
2、2440、6410、210当下比较常见的3款处理器的启动流程进行简单分析,经过这三款处理器的分析但愿你们掌握arm处理器的启动分析。3d
Ok咱们进入主题orm
l Bootloader简介及其做用blog
在我看来bootloader的做用是初始化必要的硬件,引导内核启动。(固然这是主要做用,今天的重点不在bootloader,因此在我后面的博文会继续谈到的)内存
l 启动流程分析ci
在分析启动流程的时候咱们将会使用的文档是三星公司提供的芯片手册,经过手册咱们搞清楚芯片的启动。文档
在分析启动流程以前咱们首先要清楚不管是arm的何种处理器,其都是从0x0000 0000地址处开始执行程序的。下面的分析我将会经过三个方面:1、芯片支持的启动方式2、地址布局3、启动流程flash
1. 2440 table
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,完成系统的启动。