S3C2440上电启动流程概述

一、S3C2440的启动方式

1、启动介质

S3C2440在上电时会通过判断OM0和OM1的信号组合来决定指令开始执行的位置(即引导ROM的位置),同时这两个信号也用于决定BANK0(nGCS0)的总线宽度。 OM0和OM1的信号值可以由对应的两个外部引脚(引脚名称:T15和R13)的电平状态决定。

不同的启动模式

 

从上图可以看出,当MO[1:0]=00时,S3C2440将会从挂载于Nand Flash控制器之上的外置Nand Flash启动;当 MO[1:0]=01或10时,S3C2440会从挂载于内存控制器Bank0上的外部SROM上启动(指SRAM或ROM,一般Bank0上挂载的为Nor Flash,属于ROM的一种)。

2、不同启动方式的地址分布情况

在S3C2440的数据手册中,对于启动后的地址分布情况有对应的图示说明,如下:

S3C2440复位后的内存地址分布

 

从上图可以看出,不同的启动模式会影响地址位置最低的地址区域 (0x0000_0000 ~ 0x0800_0000)的映射方式。

当OM[1:0]=01或10时,内存控制器Bank0 (对应片选信号nGCS0) 上挂载的外部存储介质被映射到 (0x0000_0000 ~ 0x0800_0000),代码从0地址开始运行,即代码运行于外部存储介质之上。

当)M[1:0]=00时,内部的4K大小的SRAM被映射到 (0x0000_0000 ~ 0x0800_0000),外部Nand Flash中的前4K内容会被复制到内部SRAM,然后代码从0地址开始运行,即代码运行于内部SRAM上。此时挂载于内存控制器Bank0 (对应片选信号nGCS0) 上的存储介质不可见,因为它的地址被片内SRAM占用了。

二、S3C2440的启动流程

1、从Nor Flash启动

通过将OM[1:0]设置为01或者10(分别对应外部存储介质数据总线宽度为16位与32位的情况),即可使得S3C2440在上电时,从挂载在内存控制器Bank0上的Nor Flash启动。

由于Nor Flash具有可直接读取,但是不可直接写入的特性,故在正式运行程序之前,需要通过先运行一段引导程序来进行程序重定位操作,将程序运行过程中可能会被改动的.rodata、.data、.bss、.common段重新定位到可直接读写的SDRAM或SRAM中。对于程序中的.text段,由于在运行过程中只需要读取,所以可以保留在Nor Flash中运行,但是考虑到Nor Flash读取速度较慢,为了提高运行效率,一般也会将.text段一同重定位到SDRAM或SRAM中。

Nor Flash启动流程

 

2、从Nand Flash启动

由于Nand Flash不支持直接读写,故代码无法直接在Nand Flash上运行(即CPU无法直接从Nand Flash读取指令),为了支持从Nand Flash启动,S3C2440使用了一个称为“steppingstone”机制,下面是S3C2440数据手册对此机制的说明。

S3C2440A boot code can be executed on an external NAND flash memory. In order to support NAND flash boot loader, the S3C2440A is eqiupped with an internal SRAM buffer called “steppingstone”. When booting, the first 4kBytes of the NAND flash memory will be loaded into Steppingstone will be executed.

Generally, the boot code will copy NAND flash content to SDRAM. Using hardware ECC, the NAND flash data validity will be checked. Upon the completion of the copy, the main program will be executed on the SDRAM.

《S3C2440A 32-BIT CMOS MICROCONTROLLER USER’S MANUAL》
NAND Flash Controller Boot Loader Block Diagram

 

值得注意的是,在从Nand Flash启动之前,为了能够正确的从Nand Flash读取数据,S3C2440需要在上电时预先知道外部挂载的Nand Flash的一些参数信息,这些参数信息通过对应引脚电平产生的信号来确定,这些信号如下所示:

配置外部引脚来决定Nand Flash启动参数

总体启动流程入下图所示:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值