s3c2440 s3c6410和s5pv210启动过程区别

参考https://www.cnblogs.com/gary-guo/p/5738799.html

以下都以nandflash为例

A)s3c2440

1) IROM 无只考虑nandflash启动

2)IRAM(就是BootSRAM),4K

3)内存SDRAM 0x3000 0000

以下为2440的mem map,左边表示我们选择从Nor flash启动时,地址的布局,右边表示我们从Nandflash启动时,地址的布局

对2440来说有个steppingstone(4k),也即是右边的BootSRAM

当处理器上电后,它会从哪儿去取它的第一条指令呢,它会从0地址处去取第一条指令;

如果我们是从nor flash启动,那么0地址处应该安排我们的nor flash,那么我们的代码应该放在nor flash的最前端,否则,cpu去取指令,发现没有指令或者错误指令,那么cpu 也没有办法继续运行了。

如果我们从nandflash启动,从右边表中没有看到nandflash,而且nandflash它不能直接访问,也就是说不能像内存一样直接去访问它,它必须通过一些寄存器才能访问到,所以说它不能直接参与arm处理器的统一编址,也就在上面右边看不到了,那么nandflash没有参与统一编址,那么0地址处安排的是什么呢?0地址处排布的是BootSRAM,它实际上是处理器片内的一个RAM,它有4kb的大小,它还有一个名字叫做stepping stone,“垫脚石”。那么它是没有统一编址的nandflash是什么关系呢?实际上,我们一旦上电之后,且选择从nandflash启动之后,我们的处理器首先会自动地把nandflash最前端的4kb数据复制到stepping stone里面去,那么我们的处理器就间接地取到了nandflash里面的内容,然后cpu再去运行stepping stone里面的代码,实际上cpu就是运行的nandflash里面最前端的4kb的内容,那么硬件自动复制了nandflash前面的4kb过来,通过我们的bootloader不只有4kb,那剩下的bootloader怎么办呢?那么剩下的部分就要复制到内存里面来了,因为stepping stone已经存不下了,那么谁来做复制这个工作呢?当然就是前面的4kb的bootloader,它除了做一些硬件上的初始化,它还必须把剩下的代码复制到内存,且运行完stepping stone里面的4kb程序之后,然后跳转到内存里面去执行下面的代码。

那么我们还得关心我们的内存,那么内存在什么地方呢?

B)s3c6410:

1)IROM(0x0800 0000)64M 只用了32K作为BL0,  0地址映射到IROM   

2)IRAM (0x0C00 0000)64M 只用了8K,加载BL1,作为steppingstone

2)内存DRAM(0x5000 0000) 加载BL2

 

我们已经知道nandflash启动是属于IROM启动当中的一种,我们上电之后,我们选择从IROM启动,我们IROM映射到0地址处,所以我们的处理器首先是从IROM当中去取第一条指令,IROM里面存放的是什么东西呢?其实IROM里面存放的是芯片厂商给我们固化好了的一些程序,这个程序通常称为BL0,即bootloader的第0阶段。这段代码除了做一些硬件的初始化外,它还会做一些工作,把我们nandflash里面的bootloader1,BL1,是nandflash最前面的8KB,拷贝到我们的stepping stone里面来运行,那么我们的BL1就到我们的stepping stone里面来运行了,在运行的过程当中,我们的bootloader不止8KB还有一段程序留在nandflash里面,那么我们的BL1就会把nandflash剩余的bootloader,即BL2拷贝到SDRAM里面来运行,

 

C)s5pv210:

1)IROM(0XD000 0000) ,大小为64KB,对于0地址处,是启动区域,也是采用的映射方式,与6410一样;

2)IRAM(,0xD002 0000),大小96KB,加载 BL1+BL2,steppingstone;

3)SDRAM:(0x2000 0000),加载剩下的BL2 ,


由于nandflash是IROM的一个分支,所以他是从IROM方式来启动的,处理器上电后,因为IROM被映射到了0地址处,所以说我们的处理器会从IROM当中去取到第一条指令,IROM当中的代码是芯片厂商已经固化好了的程序,其作用在于初始化一些硬件,然后拷贝nandflash里面的bootloader1即,BL1,的内容到芯片内部的IRAM(SRAM,也就是垫脚石),它的大小为96kb,由于垫脚石比较大,所以我们把nandflash里面的BL2拷贝到垫脚石里面来,如果说nandflash里面还有bootloader,那么就把它拷贝到内存SDRAM里面去,注意对于BL1的大小为16KB,那么BL2最大为80KB,即如果BL2的内容超过了80kb,就要往内存里面复制了。最后我们的bootloader要么在IRAM中运行,要么在内存中运行

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值