一、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启动参数
总体启动流程入下图所示:
上一篇:S3C2440A时钟结构分析(ARM9架构)
下一篇:S3C2440系统时钟讲解
推荐阅读






推荐帖子
- EEWORLD大学堂----ARM Computex 2015
- ARMComputex2015:http://training.eeworld.com.cn/course/2102ARMComputex2015EEWORLD大学堂----ARMComputex2015
-
chenyy
单片机
- 一种用VHDL设计嵌入式Web Server的方案
- 摘要:近几年嵌入式Internet开始迅猛发展,但绝大多数嵌入式Internet都使用微控制器和相应的软件来实现。本文介绍一种基于硬件来实现嵌入式WebServer的方案。该方案的核心思想是用VHDL语言来设计实现,并且用FPGA进行验证。 关键词:VHDLInternet协议控制信息协议数据报 最近几年随着Internet应用的迅猛发展,Internet的通信协议,特别是TCP/IP协议,已成为嵌入式Internet的主体构架;然而,仅仅使用嵌入TCP/IP协议对许我应用来
-
maker
FPGA/CPLD
- 问altium designer一个问题
- 如图,导线末端的方块怎么设置出来的? 问altiumdesigner一个问题
-
白手梦想家
PCB设计
- 老话题--2812--FIFO--求助
- 是这样的,我发现我的2812这块板子上的SCI有问题,不知道你们遇到过吗? 1.我用的是SCI--FIFO;我接受9个char;发送不确定16char吧;我把接受总断打开了,如果接受9个就中断,发送总断关闭了。 2.我用的是485通信,因为除了用到RX\\TX外,还会用到一个IO引脚来控制485收发的。但是我发现如果我打开接受中断和发送中断,只能进行一次,即:接受中断---》发送中断,然后就再也进不去了,我怀疑是控制485收发IO的问题,转换不过来,(在发现过程中我还以为是清除FIFO,是
-
meng219902
微控制器 MCU
- 玩转Zynq连载45——[ex64] MT9V034摄像头的图像拉普拉斯锐化处理
- 1系统概述如图所示,这是整个视频采集系统的原理框图。上电初始,FPGA需要通过IIC接口对CMOSSensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOSSensor就能够持续输出标准RGB的视频数据流,FPGA通过对其同步信号,如时钟、行频和场频进行检测,从而从数据总线上实时的采集图像数据。MT9V034摄像头默认初始化数据就能输出正常的视频流,因此FPGA中实际上未作任何IIC初
-
ove学习使我快乐
FPGA/CPLD
- 电流采样
- 电流采样 负载电流会经过一个GND经过一个采样电阻0.5R回到系统主GND,现在遇到的问题是,负载关断的时候,运放输出电压反而更大,负载关断的的时候电流比负载接入的时候电流反而大了200多mA,是这个差分采样电路有问题吗?请指点 电流采样
-
QWE4562009
电路观察室