S3C2440地址空间的分配及启动过程

发布者:极地征服者最新更新时间:2016-07-11 来源: eefocus关键字:S3C2440  地址空间  启动过程 手机看文章 扫描二维码
随时随地手机看文章

一、S3C2440地址空间的分配

1.   s3c2440A 的存储器控制器有以下特性:

l  大小端(通过软件选择)

l  地址空间:每个bank有128M 的字节(总共1G字节/8个banks)

l  可编程的访问位宽,bank0(16/32 位),其他bank(8/16/32 位)

l  共8个存储器banks

l  6 个是ROM,SRAM 等类型存储器bank

l  2 个是可以作为ROM、SRAM、SDRAM 等存储器bank

l  7 个固定的存储器bank起始地址

l  最后一个bank 的起始地址可调整

l  最后两个bank 大小可编程

l  所有存储器bank的访问周期可编程

l  总线访问周期可通过插入外部wait来延长

l  支持SDRAM 的自刷新和掉电模式

 

 

S3C2440地址空间的分配及启动过程 - zhoufeng332@126 - 枫之技术
 S3C2440地址空间的分配及启动过程 - zhoufeng332@126 - 枫之技术 2.   寻址空间

s3c2440是32位的,所以理论上可以寻址4GB空间,内存(SDRAM)和端口(特殊寄存器),还有ROM都映射到同一个4G空间里。但是,芯片引脚上只给出了27根地址(ADDR[26:0]), 单靠芯片上的27根引脚,它只能控制128M的空间,剩下的在哪里?

在cpu芯片手册上,查它的内部寄存器的地址,我们可以找到一部分答案。比如这次总结笔记要讲的存储器控制寄存器,13个寄存器,每个寄存器的地址,都大于0X4000 0000的地址。而0x4000 0000(1G)是1G空间的分界线,也就是说,1G~3G之间的空间,实际上都是被芯片自己占用了。实际上,给用户的使用的空间,只有1G。

我们刚才说了,我们使用了128M,用了27根地址线。而1G空间,需要30根地址线。剩下的3根用在什么地方?查了资料,突然明白了。这三根被三星公司偷偷地用在了3-8译码器的输入端去了。而这个3-8译码器的输出端,就是对应这nGCS0~7,对应着8个bank。很明显了,三星的2440留给用户使用的这1G空间,27根线用于芯片引脚来控制具体的bank了,剩下的三根,用于选择当前处于哪个bank。

二、S3C2440系统启动

       手册里说,2440启动方式决定于bank0,以及OM[1:0]。

 

S3C2440地址空间的分配及启动过程 - zhoufeng332@126 - 枫之技术

Arm的启动都是从0地址开始,所不同的是地址的映射不一样。在arm开电的时候,要想让arm知道以某种方式(地址映射方式)运行,不可能通过你写的某段程序控制,因为这时候你的程序还没启动,这时候arm会通过引脚的电平来判断。

S3C2440支持两种启动方式:NandFlash和非NandFlash(例NorFlash)启动。

         从NorFlash启动时,与nGCS0相连的NorFlash就被映射到nGCS0片选的Bank0空间,其地址被映射为0x0000 0000;

从NandFlash启动时,S3C2440芯片内部自带的一块容量为4K的被称为“Steppingstone”(起步石)的BootRAM被映射到nGCS0片选的Bank0空间,其地址被映射为0x0000 0000。当系统上电或复位时,程序会从0x0地址处开始执行,因此我们编写的启动代码要确保存储在0地址处。   在实际的开发中,一般可以把bootloader烧入到Norflash,程序运行可以通过串口交互,进行一定的操作,比如下载,调试。这样就很可以很方便的调试你的一些代码。Norflash中的Bootloader还可以烧录内核到Norflash等等功能。

NorFlash启动时,没有额外需要考虑的问题,因为这种情况下程序在系统启动前就存储在NorFlash中,我们只要保证将启动代码保存在NorFlash开始的位置即可,系统上电或复位时,0地址处的启动代码就会被执行。

NandFlash启动时,系统启动前所有的程序存储在NandFlash中,系统的启动过程稍微有点复杂:系统上电或复位时,0地址处为S3C2440内部自带的BootSRAM,启动前里面没有任何存储内容,启动后S3C2440先通过硬件机制将NandFlash前4k的内容拷贝到BootSRAM中,然后再运行里面的程序(从0地址处开始)。这种情况下我们需要保证将启动代码保存在NandFlash开始的位置,并且启动代码的大小要小于4K。

如果系统的所有程序在编译链接后的大小小于4K,那在系统的启动代码中无需考虑将程序从NandFlash搬运到SDRAM这个问题,因为所有的程序在启动时即全部由NandFlash拷贝至BootSRAM,程序在BootSRAM中运行即可;如果系统的所有程序在编译链接后的大小大于4K,那在系统的启动代码中就需要包含一段将系统的全部程序从NandFlash搬运到SDRAM的代码,因为系统启动时只将NandFlash的前4K拷贝到了BootSRAM中,还有部分程序在NandFlash中,而程序在NandFlash中是无法运行的,需要将所有程序拷贝至SDRAM并在其中运行,所以系统的启动代码中要包含这段有关程序拷贝的代码,并在所有程序拷贝完成后使程序跳转到SDRAM中运行。也就是说NandFlash启动时需要考虑到涉及的两次搬移,第一次搬运是S3C2440硬件机制自动实现的,无需干预,第二次搬运需要程序员来实现,搬运程序量大小是系统的所有程序。

关键字:S3C2440  地址空间  启动过程 引用地址:S3C2440地址空间的分配及启动过程

上一篇:S3C2440的SDRAM驱动
下一篇:at91rm9200的io口电平中断简单理解

推荐阅读最新更新时间:2024-03-16 14:59

s3c2440代码重定位和段的引入——学以致用,综合Makefile的锻炼
对于2440而言,nand启动,nand的前4k内容由硬件复制到sram。 nor flash,可以像内存一样读,但是不能像内存一样写,执行写操作需要特殊的操作。 程序中包含有需要写的全局或者静态变量,它们在bin文件中,写在nor flash上,直接修改这样的变量是无效的。 到底什么意思呢?还是看例子比较有说服力。 在学习C语言的过程中,我们或多或少知道一些东西,c/c++可执行文件需要预处理,编译,汇编,连接。 程序有text段,data段,bss段,rodata段等等,今天,就和它们来个亲密接触吧。 还是先说上面的问题吧,看例子: 在之前的程序代码基础上,启动代码增加自动识别是nand还是nor启
[单片机]
<font color='red'>s3c2440</font>代码重定位和段的引入——学以致用,综合Makefile的锻炼
S3C2440 FLASH 介绍
S3C2440 有27 根地址线ADDR ,8 根片选信号ngcs0-ngcs7,对应bank0-bank7. 当访问BankN(N=0,1,2,...7) 的地址空间,ngcsN(N=0,1,2,...7) 引脚为低电平,选中外设。 每一个Bank容量:2^27=2^7 * 2^10 * 2^10 = 128Mbyte 总共有8个Bank,所以总寻址大小是:8*128Mbyte = 1Gbyte 所以S3C2440 总的寻址空间是1Gbyte。 市面上很少有32 位宽度的单片SDRAM,一般选择2 片16 位SDRAM 扩展得到 32位 SDRAM. 选择的SDARM 是HY57V561620F,4M
[单片机]
<font color='red'>S3C2440</font> FLASH 介绍
ARM S3C2440 时钟初始化流程
1.设置lock time 2.设置分频系数 3.设置CPU到异步工作模式 4.设置 FCLK 了解 芯片的时钟原理图,以及寄存器的作用 了解芯片的晶振频率,锁相环,分频系数,以及有哪些时钟
[单片机]
基于ARM处理器S3C2440的VGA显示技术
  目前很多SOC厂商的微处理器芯片都集成了LCD控制器,如三星公司的S3C2410.S3C2440,Intel的Xscale系列等。大多数嵌入式系统也采用流行的LCD显示技术。但是在需要大屏幕显示、对分辨率要求不高的场合,如车间、厂房,采用大屏幕LCD则成本过高。另一方面,VGA显示技术因为技术发展成熟,成本低廉,仍在被大量使用,直到今天它仍是所有显示终端最为成熟的标准接口。如果让嵌入式处理器直接支持VGA显示器,则能很大地利用现有资源,节约系统成本。   1 基于S3C2440的VGA显示技术分析   通过分析VGA显示技术的时序逻辑与S3C2440内部集成LCD控制器驱动TFT LCD的时序逻辑,找出它们的共同点,分
[电源管理]
基于ARM处理器<font color='red'>S3C2440</font>的VGA显示技术
s3c2440裸机-电阻触摸屏编程(2.触摸屏TS控制器)
触摸屏接口模式 Normal Conversion Mode: 正常转换模式,一般情况下可以配置ADCCON和ADCDAT0来读取数据。 Separate X/Y position conversion Mode: x,y坐标分离转换格式,x坐标会写入ADCDAT0, y坐标会写入ADCDAT1,所以会产生2次中断开分开完成x,y的坐标转换。 Auto(Sequential) X/Y Position Conversion Mode 自动转换模式,当触摸屏按下后,会一次性对x,y方向的坐标进行转换,x坐标会写入ADCDAT0, x坐标会写入ADCDAT1。会产生一次中断进行x,y坐标的自动转换。 Waiting
[单片机]
<font color='red'>s3c2440</font>裸机-电阻触摸屏编程(2.触摸屏TS控制器)
S3C2440 ARM芯片时钟体系
S3C2440A 中的时钟控制逻辑可以产生必须的时钟信号,包括 CPU 的 FCLK,AHB 总线外设的 HCLK 以及APB 总线外设的 PCLK。S3C2440A 包含两个锁相环(PLL):一个提供给 FCLK、HCLK 和 PCLK,另一个专用于USB 模块(48MHz)。 图 7-1 显示了时钟结构的方框图。主时钟源来自一个外部晶振(XTIpll)或外部时钟(EXTCLK)。时钟发生包含了一个连接到外部晶振的振荡器(震荡放大器),还含有 S3C2440A 所必须的两个用于产生高频率时钟的 PLL(锁相环)。 时钟源选择 表 7-1 显示了模式控制引脚(OM3 和 OM2)的组合关系的并为 S3C2440A 选择
[单片机]
<font color='red'>S3C2440</font> ARM芯片时钟体系
ARM9S3C2440—ADC和触摸屏控制详解
S3C2440芯片内部共有8路A/D转换通道,AIN0-AIN7,转换器只有一个,转换精度为10位,最大转换率为2.5MHz A/D 转换器时钟下的500 KSPS。A/D 转换器支持片上采样-保持功能和掉电模式的操作。在常见的设计中,一般AIN4,AIN5,AIN6,AIN7被用作四线电阻触摸屏的YM、YP、XM、XP通道,剩余的AIN0~AIN3被引出,其中AI0外接一个可调电阻。 ADC的配置流程如下: 1、ADCDLY(P446) rADCDLY=50000; //Normal conversion mode delay about
[单片机]
ARM启动过程
ARM 启动过程 对于一般的嵌入式系统来讲,考虑到系统成本,运行速度等因素,往往联合使用好几种存储器件。在下面讲到的例子中,是我在开发中用到的一个 ARM9EJ 的处理器,系统中采用了SDRAM, ROM, Nand FLASH, ITCM ,DTCM 等。 SDRAM: 程序正常运行时所在的存储器, 物理地址 0x24000000 - 0x24800000 (以8M 为例); ROM: 复位后, ARM 从 ROM 启动, ROM 是只读的,出厂时就烧好了,不可更改,正常运行时,物理地址: 0x2C000000 - 0x2C006000 (24KB); Nand FLASH: 外接存储器件,正常运
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved