谈到arm的发动流程不得不说的是bootloader,可是我这篇文章首要来谈谈arm发动流程的,所以bootloader仅仅跟咱们简介一下就ok。这篇文章我会谈到以下内容:
1、bootloader简介以及其效果
2、2440、6410、210当下比较常见的3款处理器的发动流程进行简略剖析,经过这三款处理器的剖析期望咱们把握arm处理器的发动剖析。
Ok咱们进入主题
lBootloader简介及其效果
在我看来bootloader的效果是初始化必要的硬件,引导内核发动。(当然这是首要效果,今日的要点不在bootloader,所以在我后边的博文会持续谈到的)
l发动流程剖析
在剖析发动流程的时分咱们将会运用的文档是三星公司供给的芯片手册,经过手册咱们搞清楚芯片的发动。
在剖析发动流程之前咱们首先要清楚不论是arm的何种处理器,其都是从0x0 0地址处开端履行程序的。下面的剖析我将会经过三个方面: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,完结体系的发动。