一、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系统时钟讲解
推荐阅读最新更新时间:2024-11-09 23:17
推荐帖子
- 演示msp430播放一种叫ByteBeat类型的电子音乐
- 演示的是本论坛这个帖子:播放音乐仅用一个喇叭一个低通30行代码,请先看一下这个帖子。我对什么Bytebeat也不了解,只看到网上这一段:Bytebeatisanewgenreofelectronicmusic,establishedinSeptember,2011.Accordingtocanonical.org,Bytebeatisgenerallya“pieceofrhythmicandsomewhatmelodicmusic
- wangfuchong 微控制器 MCU
- 在IAR环境下STM32工程输出hex文件简洁方法
- 1.BOOT_RAM2.BOOT_FLASH在IAR环境下STM32工程输出hex文件简洁方法没怎么用过iar,还真不知道如何生成hex文件,以前用过iar430,不过都是通过jtag加载的。谢谢!谢谢!哈哈~~~各种IAR环境几乎都可以用此法生成HEX文件~~~不错.谢谢.谢谢大叔!顺便问下要生成ISP的BIN格式用哪个选
- max1 stm32/stm8
- 运放输出问题
- 原理图如上,测试热电阻用的电路。在AD0出监测到的输出波形如下,输出波形偶尔有这种下陷的波形。不明白是什么原因造成的。2.5V和VCCA都正常。运放输出问题LM358的性能比较差的,遇到国产好牌子的还行,如果遇到次品,可能就麻烦了。建议检查一下输入,是不是把输入信号放大了,如果输入没有信号,输出是这样,只能怀疑IC的问题TVS也有可能产生噪声。过去的噪声发器的信号源,首先是齐纳管楼主应用双踪示波器同时监看输入输出。
- angelhtf 模拟电子
- VDSP汇编出来的代码效率很低?
- 各位大牛觉得VDSP汇编出来的代码效率怎么样啊?怎么我觉得C语言汇编出来的代码效率很低,尽管使能了编译器优化,但像并行指令很少体现啊,甚至连循环零开销也做不到(并没有超过两层循环),莫非必须要自己写汇编?听说CCS的C代码汇编效率能达到90%?VDSP汇编出来的代码效率很低?
- clj2004000 DSP 与 ARM 处理器
- 2020 TI 嵌入式产品 Workshop —— MSP430™入门培训邀请函
- 日期及地点:2020年11月3日深圳2020年11月5日上海讲师:TI多位资深应用工程师2020TI嵌入式产品线下WorkshopMSP430入门培训来啦!本次培训主要讲解如何使用MSP430超低功耗微控制器家族开始设计你的应用。内容包括了产品家族介绍、典型应用、软硬件设计入门、以及简单的设计实验。多位TI资深应用工程师带您深入了解MSP430产品,动手实验环节等您亲自参与,设计难
- eric_wang TI技术论坛
- 《智能驾驶之激光雷达算法详解》5.多传感器SLAM
- 本书第13章是关于多传感器融合SLAM算法的相关讲解,主要介绍了多传感器融合在智能车辆定位中的应用。由于单一传感器存在工作特性和局限性,处理不了复杂路况,因此多传感器融合实现高精度、稳定、实时的定位成为学术界和工业界的热点之一。多传感器融合SLAM有松耦合和紧耦合两种方式,紧耦合方式精度和稳定性较高,是目前研究重点,如LIC-Fusion算法、基于因子图框架的算法、R2LIVE算法及LVI-SAM算法等。此外,一些学者结合事先构建的高精点云地图提供全局定位信息,如百度的相关研究及
- 镜花水月000 汽车电子
设计资源 培训 开发板 精华推荐
- 具有反向电池和太阳能电池板保护的 LTC4367CMS8 系列迟滞太阳能充电器的典型应用
- 使用 ams AG 的 AS1329A-BWLT 的参考设计
- EVAL-AD7676CB,用于 AD7676、16 位、500 Ksps PulSAR 模数转换器的评估板
- 使用 TLE6250G 高速 CAN 收发器的典型大电流应用
- 使用 Diodes Incorporated 的 PI3HDMI1210-A 的参考设计
- LTC3605EUF 演示板、14V、5A 多相同步降压稳压器
- LTC3851AEUD-1 高效 3.3V/15A 降压转换器的典型应用电路
- 超小两路光敏电阻传感器模块(GL5616 & LM393)
- USB示波器+信号发生器+USB存储 三合一
- 具有备用电源监控功能的 LTC4420CDD 18V 双输入微电源路径优先器的典型应用电路