2440初始化存储器原理(接上一篇)

发布者:MysticalEssence最新更新时间:2016-07-11 来源: eefocus关键字:初始化  存储器 手机看文章 扫描二维码
随时随地手机看文章

JLInk 调试加载的执行初始化存储器脚本(2440)

Setmem 0x53000000 0x00000000 32
Setmem 0x4A000008 0xFFFFFFFF 32
Setmem 0x4A00001C 0x000007FF 32
Setmem 0x53000000 0x00000000 32
Setmem 0x56000050 0x000055AA 32
Setmem 0x4C000014 0x00000007 32
Setmem 0x4C000000 0x00FFFFFF 32
Setmem 0x4C000004 0x00061012 32
Setmem 0x4C000008 0x00040042 32
Setmem 0x48000000 0x22111120 32
Setmem 0x48000004 0x00002F50 32
Setmem 0x48000008 0x00000700 32
Setmem 0x4800000C 0x00000700 32
Setmem 0x48000010 0x00000700 32
Setmem 0x48000014 0x00000700 32
Setmem 0x48000018 0x0007FFFC 32
Setmem 0x4800001C 0x00018005 32
Setmem 0x48000020 0x00018005 32
Setmem 0x48000024 0x008E0459 32
Setmem 0x48000028 0x00000032 32
Setmem 0x4800002C 0x00000030 32
Setmem 0x48000030 0x00000030 32 

原理:

1、什么是存储控制器

      存储控制器是创建和控制其他存储设备的一种设备。S3C2440中存储控制器的起始地址为0x48000000结束地址为0x48000030。通过配置存储控制器提供的13个寄存器的具体数值来达到访问外围设备的目的。

2、如何得到外围设备的访问地址

      在说明得到外围设备地址之前,先说明一下什么是片选信号。读过微机原理的同志应该很清楚了。

      在S3C2440中分为nGCS0~nGCS7,共8个片选信号。分别对应了BANK0~BANK7,当需要访问外围设备的空间时(即访问BANKx 时),nGCSx 引脚输出低电平信号,这样选择相对应的BANKx外围设备来访问。(注:nGCS0~nGCS7在S3C2440手册中可以查找到相应的地址分配表)

      BANK访问地址=BANK起始地址+地址线地址。

3、存储控制器中寄存器的使用

3.1、存储控制器提供的13个寄存器

          BWSCON,BANKCONx(x=0~7),REFRESH,BANKSIZE,MRSRBx(x=6~7),共13个寄存器。在这些寄存器的配置中,当配置BANK0~BANK5的时候,只需要配置BWSCON和BANKCONx(x=0~5)即可。由于BANK6和BANK7嘤糜谕饨覵DRAM,所以配置的时候除配置BWSCON和BANKCONx(x=6~7)外,还需要配置REFRESH,BANKSIZE,MRSRB6和MRSRB7等4个寄存器。

BWSCON(R/WBusWidth & WaitStatusControl,位宽和等待寄存器)

        BWSCON共32位,BWSCON的高4位对应了外设的BANK7,然而BWSCON是每4位对应一个BANK,所以依次类推可以得到其余BANK6~BANK0的对应位数。

         STx(x= 0~7):启动/禁止SDRAM数据掩码引脚。对于SDRAM此位为0,对于SRAM此位为1。一般为0。

         WSx(x= 0~7):是否使用存储器的WAIT信号。通常设为0。 /*0 = WAIT disable*/

         DWx(x= 0~7):用2位来设置对应BANK位宽(数据总线宽度),00=8-bit;01=16-bit;10=32-bit;11=reserved

        其中,比较特殊的BANK0,它没有ST0和WS0,且DW0[2:1]为只读,由硬件电路跳线决定01=16-bit;10=32-bit。

BANKCONx(x= 0~5):用来控制外接设备的访问时序,默认设置0X0700可以满足使用需求。

BANKCONx(x= 6~7):只有BANK6和BANK7可以用来外接SRAM或SDRAM,所以在配置BANK6~BANK7会有所不同。

         MT[16:15]位:用来标识外接的设备是ROM/SRAM,还是SDRAM。 /*00 = ROM or SRAM;01 = Reserved;10 = Reserved;11 = Sync.DRAM */

         当MT=0b00时(即外接ROM):此时设置与BANKCONx(x= 0~5)并无多大差异。

         当MT=0b11时(即外接SDRAM):

         Trcd[3:2]:Time of RAS toCASdelay(内存行地址传输到列地址的延迟时间) /*00 = 2 clocks;01 = 3 clocks;10 = 4 clocks*/

         SCAN[1:0]:表示SDRAM列的地址,可根据具体芯片情况设置 /*00 = 8-bit;01 = 9-bit;10= 10-bit*/

REFRESH:刷新控制寄存器。

         REFEN[23]:使能控制SDRAM刷新功能。/*0 = Disable;1 = Enable (self or CBR/auto refresh)*/

         TREFMD[22]:SDRAM刷新模式。/*0 = CBR/Auto Refresh;1 = Self Refresh (休眠模式)*/

         Trp[21:20]:Time of SDRAM RASpre-charge(RAS预充电时间)。/*00 = 2 clocks;01 = 3 clocks;10 = 4 clocks;11 = Not support*/

         Tsrc[19:18]:Time of SDRAM SemiRowcycle(半行周期时间)。/*00 = 4 clocks;01 = 5 clocks;10 = 6 clocks;11 = 7 clocks*/      注:Reserved[17:11]:Not used.

          Refresh Counter[10:0]:SDRAM refresh count value(刷新计数值)。

BANKSIZE寄存器:

          BURST_EN[7]:ARM coreburst operation enable(ARM内核心突发操作使能)。/*0 = Disable burst operation;1 = Enable burst operation*/      注:Reserved[6]:Not used.

          SCKE_EN[5]:SDRAM power down mode enable control bySCKE。(SCKE power down模式使能)/*0 = SDRAM power down mode disable;1 = SDRAM power down mode enable*/

          SCLK_EN[4]:SCLK is enabled only during SDRAM access cycle for reducing power consumption. When SDRAM is not accessed SCLK becomes 'L' level(低电平). /*0 = SCLK is always active. 1 = SCLK is active only during the access (recommended).*/  注:Reserved[3]:Not used.

          BK76MAP[2:0]:设置BANK6~BANK7的大小。/* 010 = 128MB/128MB;001 = 64MB/64MB;000 = 32M/32M;111 = 16M/16M;110 = 8M/8M;101 = 4M/4M;100 = 2M/2M */

MRSRBx(x= 6~7):SDRAM模式设置寄存器。

          能做修改的只有CL[6:4]:代表SDRAM时序的一些参数。 /*000 = 1 clock;010 = 2 clocks;011=3 clocks;Others: reserved*/

 

 

 

 

2410内存控制器介绍(BWSCON)

http://blogold.chinaunix.net/u1/59572/showart_1914422.html

 

 

下面先转载手册对于内存控制器基本特点的概述:

 

— Little/Big endian (selectable by a software)

— Address space: 128Mbytes per bank (total 1GB/8 banks)

— Programmable access size (8/16/32-bit) for all banks except bank0 (16/32-bit)

— Total 8 memory banks

Six memory banks for ROM, SRAM, etc.

       Remaining two memory banks for ROM, SRAM, SDRAM, etc .

— Seven fixed memory bank start address

— One flexible memory bank start address and programmable bank size

— Programmable access cycles for all memory banks

— External wait to extend the bus cycles

Supporting self-refresh and power down mode in SDRAM

bank6和bank7的大小必须一样,并且bank7的起始地址根据bank6的大小不同而不同

 

复位后S3C2410A的存储器映射图如下:

 

 

 

 

bank0(nGCS0)数据总线宽度由OM[1:0]决定:

OM[1:0]=   00 Nand Flash 模式

            01 16位

            10 32位

            11 测试模式

  2)以图2(带nWAIT信号)为例,描述一下处理器的总线的读操作过程,来说明Flash整体读、写的流程。第一个时钟周期开始,系统地址总线给出需要访问的存储空间地址,经过Tacs时间后,片选信号也相应给出(锁存当前地址线上地址信息),再经过Tcso时间后,处理器给出当前操作是读(nOE为低)还是写(new为低),并在Tacc时间内将数据数据准备好放之总线上,Tacc时间后(并查看nWAIT信号,为低则延长本次总线作y一个时钟周期),nOE 拉高,锁存数据线数据。这样一个总线操作就基本完成

 

 

 

图2  带nWAIT 信号的总线读操作

 


 

 

相关的寄存器

数据宽度和等待控制寄存器:

BWSCON       地址0x48000000

BWSCON每四位为一组,控制着bank0到bank7,以bank7为例这四位分别为:ST7[31],WS7[30],DW7[29,28]

ST7:启动/禁止SDRAM的数据掩码引脚,对于SDRAM,此位为0;对于SRAM,此位为1。

Determine SRAM for using UB/LB for bank 7.

0 = Not using UB/LB (The pins are dedicated nWBE[3:0])

1 = Using UB/LB (The pins are dedicated nBE[3:0])

nBE[3:0] is the 'AND' signal nWBE[3:0] and nOE.

WS7:是否使用存储器的WAIT信号,通常设为0

DW7:使用两位来设置存储器的位宽:00-8位,01-16位,10-32位,11-保留。

其他个bank与此一样,比较特殊的是bank0对应的4位,它们由硬件跳线决定,只读。

 

bank控制寄存器(BANKCONN:nGCS0-nGCS5) : reset value: 0x0700

BANKCON0     地址0x48000004

BANKCON1     地址0x48000008

BANKCON2     地址0x4800000C

BANKCON3     地址0x48000010

BANKCON4     地址0x48000014

BANKCON5     地址0x48000018    

BANK控制寄存器(BANKCONN:nGCS6-nGCS7) : reset value: 0x0700

BANKCON6     地址0x4800001C    

BANKCON7     地址0x48000020

 

各bank控制寄存器只使用[14:0]位,主要是控制读写时序各个参数的大小,如:Tacs,Tcos等。对于bank6和bank7,还要使用到[16:15]两位,用来控制bank6和bank7的存储模式,00表示使用rom或sram存储,11表示使用sdram存储。

 

对于本开发板,使用两片容量为32Mbyte、位宽为16的SDRAM组成容量为64Mbyte、位宽为32的存储器,所以其BWSCON相应位 为:0010。对于本开发板,BWSCON可设为0x22111110:其实我们只需要将BANK6对应的4位设为0010即可,其它的是什么值没什么影 响,这个值是参考手册上给出的。

 2.BANKCON0-BANKCON5:我们没用到,使用默认值0x00000700即可

 3.BANKCON6-BANKCON7:设为0x00018005

在8个BANK中,只有BANK6和BANK7可以使用SRAM或SDRAM,所以BANKCON6-7与BANKCON0-5有点不同:

  a.MT([16:15]):用于设置本BANK外接的是SRAM还是SDRAM:SRAM-0b00,SDRAM-0b11

  b.当MT=0b11时,还需要设置两个参数:

Trcd([3:2]):RAS to CAS delay,设为推荐值0b01

SCAN([1:0]):SDRAM的列地址位数,对于本开发板使用的SDRAM HY57V561620CT-H,列地址位数为9,所以SCAN=0b01。如果使用其他型号的SDRAM,您需要查看它的数据手册来决定SCAN的取值:00-8位,01-9位,10-10位

 

REFRESH控制寄存器:

REFRESH      地址:x48000024

REFRESH(SDRAM refresh control register):设为0x008e0000+ R_CNT

地址0其中R_CNT用于控制SDRAM的刷新周期,占用REFRESH寄存器的[10:0]位,它的取值可如下计算(SDRAM时钟频率就是HCLK):

R_CNT = 2^11 + 1 – SDRAM时钟频率(MHz) * SDRAM刷新周期(uS)

在未使用PLL时,SDRAM时钟频率等于晶振频率12MHz;SDRAM的刷新周期在SDRAM的数据手册上有标明,在本开发板使用的SDRAM HY57V561620CT-H的数据手册上,可看见这么一行“8192 refresh cycles / 64ms”:所以,刷新周期=64ms/8192 = 7.8125 uS。

对于本实验,R_CNT = 2^11 + 1 – 12 * 7.8125 = 1955,

REFRESH=0x008e0000 + 1955 = 0x008e07a3

 

BANKSIZE寄存器:

BANKSIZE     地址0x48000028

BURST_EN    [7]    ARM核突发操作允许

                   0--禁止突发操作

                   1--允许突发操作

Reserved    [6]    不使用

SCKE_EN     [5]    SCKE允许控制

                   0=SDRAM SCKE 禁止

                   1=SDRAM SCKE 允许

SCLK_EN     [4]    SCLK仅在减少功耗期间SDRAM存取周期内允许,当SDRAM不进行

                   存取时,SCLK变'L'电平

                   0=SCLK总是激活

                   1=SDRAM仅在存取期间激活(推荐)

Reserved    [3]    不使用

BK76MAP     [2:0]   BANK6/7存储映射

                    010=128MB/128MB    001=64MB/64MB

                    000=32MB/32MB      111=16MB/16MB

                    110=8MB/8MB        101=4MB/4MB

                    100=2MB/2MB

 

位[7]=1:Enable burst operation

位[5]=1:SDRAM power down mode enable

位[4]=1:SCLK is active only during the access (recommended)

位[2:1]=010:BANK6、BANK7对应的地址空间与BANK0-5不同。BANK0-5的地址空间都是固定的128M,地址范围是 (x*128M)到(x+1)*128M-1,x表示0到5。但是BANK7的起始地址是可变的,您可以从S3C2410数据手册第5章“Table 5-1. Bank 6/7 Addresses”中了解到BANK6、7的地址范围与地址空间的关系。本开发板仅使用BANK6的64M空间,我们可以令位 [2:1]=010(128M/128M)或001(64M/64M):这没关系,多出来的空间程序会检测出来,不会发生使用不存在的内存的情况——后面 介绍到的bootloader和linux内核都会作内存检测。

位[6]、位[3]没有使用

 

SDRAM模式寄存器设置寄存器(MRSR):

MRSRB6       地址0x4800002C

MRSRB7       地址0x48000030

能让我们修改的只有位[6:4](CL),SDRAM HY57V561620CT-H不支持CL=1的情况,所以位[6:4]取值为010(CL=2)或011(CL=3)。

 

 

 

关键字:初始化  存储器 引用地址:2440初始化存储器原理(接上一篇)

上一篇:S3C2440 Mini 2440 DMA方式实现Uart(串口)通信
下一篇:Jlink + ADS调试 S3C2440

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

Xilinx “2008可编程解决方案中国巡演”
主题: 2008可编程解决方案中国巡演 地点/时间: 北京,2008年3月11日 杭州,2008年3月13日 深圳,2008年3月18日   赛灵思宣布 “2008可编程解决方案中国巡演 ”将于2008年3月11日从北京正式拉开序幕, 随后通过在杭州和深圳的巡演覆盖华东华南地区。该巡演由赛灵思公司联合其合作伙伴安富利、世健、好利顺电子、明导电子和The MathWorks等共同打造。   为期一天的研讨会将提供多种技术演讲,覆盖工程设计人员最关注的安全、功耗、存储器接口解决方案、PCIe,、DSP和嵌入式解决方案等主题,并设计数字显示、手持式设备、监控、广播、医疗等多个热门领域
[焦点新闻]
【ARM】2440裸机系列-图片显示
功能 LCD显示字汉字,字符和图片 说明 汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中 主要代码 1)绘制背景 1 2 3 4 5 6 7 8 9 10 11 void Brush_ U32 c) { int x,y ; for( y = 0 ; y LCD_HEIGHT ; y++ ) { for( x = 0 ; x LCD_WIDTH ; x++ ) { LCD_BUFFER = c ; } } } 2)文字绘制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
[单片机]
【ARM】<font color='red'>2440</font>裸机系列-图片显示
存储器芯片需求火热,三星将获利
三星电子预定下周五(10月5日)发表第三季(7到9月)财报,目前华尔街预期存储器芯片需求火热将推动三星第三季营收成长,且第三季营业获利可望创新高。 周二收盘三星股价报47,400韩元,涨幅不到1%。 华尔街大型投资银行预期三星第三季营收年增5.1%至65.2兆韩元(约580亿美元),营业获利可望年增18.5%至17.2兆韩元(约154亿美元)。 就今年全年的表现来看,华尔街预期三星今年营收达到250兆韩元,较去年成长4%。今年营业获利可望达到65兆韩元,较去年成长20%。 去年以来三星半导体事业蒸蒸日上,已促成去年第四季三星营收65.9兆韩元创下历史新高,随后今年第一季营业获利又达到15.6兆韩元,创下历史新
[嵌入式]
<font color='red'>存储器</font>芯片需求火热,三星将获利
存储器价格上涨 带动今年全球集成电路市场营收大幅增长16%
集微网消息(编译/丹阳)2017年上半年全球半导体产业收获颇丰,一举带动科技行业的营收增长,纵观发展态势,还将持续至2017年下半年。IC insights在最新预测中指出,由于存储器(DRAM和NAND闪存)的价格上涨,至2017年全球集成电路销售额也将同比增长16%。这也是即2010年后,全球集成电路销售额首次呈两位数增长。 IC insights 预计,今年DRAM市场规模增长55%,NAND市场规模增长35%,是引起全球集成电路销售额上涨的重要原因。如无两者的带动,整体集成电路市场的年增长率仅为6%。   如图所示,近年来,DRAM市场规模的增长对整体集成电路市场增长产生显著的影响。DRAM市场规模在2013年和2014年
[手机便携]
jz2440裸机开发与分析:串口基础知识1
UART简介 串口的作用 1、打印调试信息 2、连接一些串口设备,比如GPS,GSM,ESP8266 串口需要配置的内容 1、波特率 2、数据位 3、停止位 4、校验位 5、流控制 串口发送数据的过程 1、双方先约定好每一位占据的时间(波特率),假设为1s 2、首先arm将TXD引脚拉低,维持1bit(1s)时间 3、PC机载低电平开始处计时 4、arm根据数据驱动引脚TXD电平,每一位维持1bit(1s)时间,发送8位,称为数据位 PC机在数据位的中间读取引脚状态 5、第7位发送完成之后,发送校验位(奇偶校验位,数据位+校验位中为1的个数是奇数或者偶数) 校验位现在基本用不到了,电子技术很稳定 6、 最后发出停止位,
[单片机]
jz<font color='red'>2440</font>裸机开发与分析:串口基础知识1
将JZ2440调试串口改为COM2
众所周知,JZ2440 V2很小巧。今天单就JZ2440串口讨论一些问题。我们在用串口进行调试时,需要用JZ2440自带的一根USB线连接电脑USB口和开发板的USB-com1口。先来看一下JZ2440串口大致连接图: 从S3C2440上引出TXD0和RXD0到串口芯片PL2303,大家都知道PL2303是干嘛用的。单片机一般都用PL2303,它的作用是USB转TTL电平,电平经过PL2303转换后,电脑和开发板即可通信,设置好参数就能显示开发板的打印信息了。 JZ2440在这一点上还有一处可以说说,它没有使用其他开发板常用的RS232 DB9接口,很大程度上减小了开发板体积,同时也节约了USB转串口线,降低成本, 可谓
[单片机]
将JZ<font color='red'>2440</font>调试串口改为COM2
调查:MP3等移动存储器是企业最大安全威胁
国外媒体报道,据最新一项调查结果显示,USB存储器和MP3播放器等便携式移动设备是企业的最大安全威胁。 Centennial Software对370名中、高级IT管理人员进行了调查,结果发现,38.4%的被调查者表示,MP3播放器等便携式移动设备是他们的最大安全威胁。据悉,这也是便携式移动设备对企业的威胁首次超越病毒和恶意软件。 此外,23.7%将互联网病毒视为最大威胁,22.3%认为恶意软件/间谍软件是最大威胁。
[焦点新闻]
带有大容量片上存储器的32位智能卡微控制器(图)
生产商: 瑞萨科技   Renesas Technology  产品说明: 大容量EEPROM和掩膜ROM有助于实现移动电话USIM卡等先进高性能和高度安全性 高性能32位CPU核心和大容量EEPROM与掩膜ROM集成在一起的AE57C1和AE58C智能卡微控制器可用于诸如第三代移动电话USIM卡和多应用卡的智能卡中。 AE57C1和AE58C将AE-5 CPU核心与32位ALU和内部总线宽度集成在一起,可以在16MHz的最大内部工作频率下每个周期执行一个指令。这样就为诸如Java Card或MULTOS等通用操作系统提供了充足的功率。 这些新产品也包括适用于移动电话的USIM卡的大容量片上存储器。AE57
[安防电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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