S3C2440启动的基本原理

Nand Flash启动

当S3C2440 开发板采用的是Nand Flash 启动,镜像一开始是存储在Nand Flash 中,而Nand Flash只能作为存储程序和数据之用,无法在其中运行程序,所以S3C2440 开发板启动代码中应用环境初始化这一步和上述步骤稍有不同。S3C2440 镜像文件加载和运行时的地址映射关系如下图所示:

S3C2440 没有上电之前映像文件存储在Nand Flash 中,Nand Flash 由专门的控制器控制,不占用存储器BANK。当开发板上电时,Nand Flash 的前4K 被复制到S3C2440 芯片内部的一块容量为4K 的SRAM(被称为“Steppingstone”),然后这块SRAM 被映射到地址0x00000000 处,程序从此处开始运行。因为Nand Flash 中不能运行程序,所以在这4K 的代码中必须包含一段代码将Nand Flash 中的程序拷贝至S3C2440 的SDRAM 中(0x30000000 开始)。应用环境初始化应该包含这段代码。

Nand Flash 中的映像文件被拷贝至从0x30000000 开始的SDRAM,这时候映像文件还没有真正被执行,此时是加载状态,加载域如上图所示,包括所有RO 属性的输出段和RW 属性的输出段,ZI 属性的输出段此时还不存在。在映像文件运行时,会生成3 个运行域,如上图所示,RO 和RW 属性的运行域的起始地址和加载时是相同的,所以在应用程序执行环境初始化中不需要对其进行拷贝,ZI 运行域则需要在映像开始被执行前建立并被初始化为0,所以应用程序执行环境初始化中也要包含这类代码。

Nor Flash启动

当S3C2440采用Nor Flash启动时,代码可以在上面直接运行。但为了运行的效率,还是把程序拷贝到SDRRAM中运行。加载时地址关系和运行时地址关系和Nand Flash的基本相似。Nand Flash启动时,会将RO段和RW段同时拷贝到SDRAM中,然后再建立ZI段。从Nor Flash启动时是先拷贝RO段,然后再拷贝RW段,最后建立ZI段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值