nandflash 启动,s3c2440

S3C2440的启动时读取的第一条指令是在0x00上,分为成nand flashnor flash上启动。

 nor flash有自己的地址线和数据线,可以采用类似于memory的随机访问方式,在nor flash上可以直接运行程序,所以nor flash可以直接用来做boot,采用nor flash启动的时候会把地址映射0x00上。mini2440就是直接把vivi直接烧录在nor flash上。

 nand flashIO设备,数据、地址、控制线都是共用的,需要软件区控制读取时序,所以不能像nor flash、内存一样随机访问,不能EIP(片上运行),因此不能直接作为boot

S3C2440boot loader烧到nand flash上启动,因为S3C2440里有一个内置的SRAM,叫做stepping stone(垫脚石,很形象…),系统启动加电后,会把nand flash上的起始4KB的内容拷贝到SRAM里执行,这样就实现了从nand flash启动。如果bootloader小于4KB的话(像vboot),在SRAM里就能boot,大于4KB的话(u-bootvivi),在SRAM里做一些基本初始化后,再把bootloader的剩余部分拷贝到SDRAM里(>0x30000000)。

//==========================================================================//注:bootloader是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,bootloader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的bootloader几乎是不可能的。尽管如此,我们仍然可以对 Boot Loader 归纳出一些通用的概念来,以指导用户特定的 bootloader设计与实现。

//==========================================================================//

我们使用S3C2440的时候,经常通过nor flash启动,进入vivi的菜单(S3C2440nor flash已经烧录好了vivi),之后通过viviUSB下载功能,把其他的bootloader下载到nand flash里,下载完成后,再通过nand flash启动,测试我们的boot loader

 nor flash适合做代码存储并EIP的,nand flash适合用来作大量数据存储的。

Nand flash启动: nand flash存储器的前4K将被自动加载到Stepping stone(内部SRAM缓冲器),然后系统自动执行这些载入的启动代码,这4K的启动代码需要将nand flash中的内容复制到SDRAM中执行。nand flash的前4K空间放启动代码,SDRAM速度较快,用来执行主程序的代码。

//==========================================================================//注:SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是自由指定地址进行数据读写。

//==========================================================================//

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值