s3c2440的内存管理机制

发布时间:2024-07-23  

1.     Nand Flash、Nor Flash、SDRAM地址区别

Nand Flash:ROM,容量大,适用于数据存储,ARM不能从Nand中直接启动,需要把程序从Nand的前4k空间中拷贝到SDRAM,然后再从SDRAM中启动。

Nor Flash:ROM,容量小,适用于程序存储,ARM可以从Nor Flash中直接启动。

SDRAM: RAM,容量大,操作系统等大型软件都运行在SDRAM中。

 

2.     S3c2440寻址空间:

S3C2440有27根地址线ADDR[26:0],8根片选信号ngcs0-ngcs7,对应bank0-bank7,当访问bankx的地址空间,ngcsx引脚为低电平,选中外设。

2^27=2^7 * 2^10 * 2^10 = 128Mbyte

8*128Mbyte = 1Gbyte

所以S3C2440总的寻址空间是1Gbyte。(也就是最高地址0x40000000)

寻址空间如下图:

 

 

3.     SDRAM的寻址原理:

SDRAM内部是一个存储阵列。可以把它想象成一个表格。和表格的检索原理一样,先指定行,再指定列,就可以准确找到所需要的存储单元。这个表格称为逻辑BANK。目前的SDRAM基本都是4个BANK。寻址的流程就是先指定BANK地址,再指定行地址,最后指定列地址。这就是SDRAM的寻址原理。

4.     内存片(HY57V561620F)的连接方式:

HY57V561620F的容量是16M寻址*16位宽=256Mbit。

TQ2440中使用了两片内存,总容量为2*32M=64Mbyte。

 

A0-A12是地址线:行地址、列地址复用,行地址使用A0-A12(13条),列地址使用A0-A8(9条)。

BA0-BA1是bank选择引脚。(bank选择与行地址(row address)同时下发,在列地址下发时,有其他用途)。

 

这个SDRAM有

13根行地址线   RA0-RA12

9根列地址线    CA0-CA8

2根BANK选择线 BA0-BA1

SDRAM的地址引脚是复用的,在读写SDRAM存储单元时,操作过程是将读写的地址分两次输入到芯片中,每一次都由同一组地址线输入。两次送到芯片上去的地址分别称为行地址和列地址。它们被锁存到芯片内部的行地址锁存器和列地址锁存器。/RAS是行地址锁存信号,该信号将行地址锁存在芯片内部的行地址锁存器中;/CAS是列地址锁存信号,该信号将列地址锁存在芯片内部的列地址锁存器中。

 

SDRAM的A0接S3C2440的ADDR2,很多初学者都对这里又疑问。A0为什么不接ADDR0?

要理解这种接法,首先要清楚在CPU的寻址空间中,字节(8位)是表示存储容量的唯一单位。

用2片HY57V561620F扩展成32位SDRAM,可以认为每个存储单元是4个字节。因此当它的地址线A1:A0=01时,处理器上对应的地址线应为ADDR3:ADDR2=01(32位SDRAM每4字节一个地址,对应于CPU)(因为CPU的寻址空间是以Byte为单位的)。所以SDRAM的A0引脚接到了S3C2440的ADDR2地址线上。

(可以看成,ARM的寻址地址=CPU的地址*4,因为对CPU来讲相当于没读一次都相隔4byte)。

 

同理,如果用1片HY57V561620F,数据线是16位,因为一个存储单元是2个字节,这时SDRAM的A0要接到S3C2440的ADDR1上。

 也就是说SDRAM的A0接S3C2440的哪一根地址线是根据整个SDRAM的数据位宽来决定的。

上面的接线图上,BA0,BA1接ADDR24,ADDR25,为什么用这两根地址线呢?

BA0~BA1代表了SDRAM的最高地址位。因为CPU的寻址空间是以字节(Byte)为单位的,本系统SDRAM容量为64MByte,那就需要A25~A0(64M=2^26)地址线来寻址,所以BA1~BA0地址线应该接到2440的ADDR25~ADDR24引脚上。

13根行地址线+9根列地址线 = 22根。另外HY57V561620F一个存储单元是2个字节,相当于有了23根地址线。BA0,BA1是最高地址位,所以应该接在ADDR24,ADDR25上。

 

5.     启动过程中寻址方式

系统启动取决于S3c2440 CPU的OM0、OM1两个引脚的取值:

 

因此在TQ2440中,直接将OM1接地(永远为0),OM0作为拨码开关,来选择是从nand启动(接地,0)还是从nor 32-bit启动(悬空,1)。

6.     Nor Flash引脚图(EN29LV160AB-70TCP)

 

地址线A0-A19,共20条;

数据线D0-D15,共16条(D15为数据、地址复用);

当47脚BYTE#配置为字节byte模式时(0),D15用于A-1地址线,所以寻址空间为20+1=21条,也就是2M byte。

当47脚BYTE#配置为双字word模式时(1),D0-D15都用于数据线,寻址空间为20条,1M,数据线D0-D15有效,数据量为1M*2=2Mbyte。(TQ2440采用此模式)

7.     重要信息地址


标示

地址

含义

寄存器

寄存器范围

0x48000000~0x5fffffff



S3C24X0_GPIO_BASE

0x56000000

Gpio各寄存器基地址


S3C2410_SDI_BASE

0x5A000000

SDI


S3C24X0_USB_DEVICE_BASE

0x52000140

用户设备


S3C2410_NAND_BASE

0x4E000000

Nand


S3C24X0_LCD_BASE

0x4D000000

LCD


S3C24X0_INTERRUPT_BASE

0x4A000000

中断





运行数据

_bss_start

0x33db6990



_armboot_start

0x33d80000



CFG_ENV_SIZE

0x20000



FREE_RAM_SIZE

0x3d1df7c






















 

宏观内存范围

Nor Flash(nor 启动方式)

0x00000000~0x001fffff

Nor flash位于bank0。

2Mbyte容量。


CPU内部SRAM(Nand Flash启动方式)

0x00000000~

Nand flash启动时拷贝到SRAM中运行


外部SDRAM

0x30000000~0x34000000

64Mbyte容量


Nand Flash

NULL

Nand Flash不直连总线,通过控制器访问。

 

 

内存分配

SDRAM地址end

@0x34000000

Bss_start

此上,为bss数据区

Armboot_start

此上,为uboot映像,大概200k

CFG_MALLOC_LEN

256k

GLB_DATA_SIZE

128byte+4byte

IRQ_stack

4k

FIQ_stack

4k

用户栈区

128k

空闲地址空间

大概61Mbyte(SDRAM内存总共64M).

SDRAM地址start

@0x30000000

Nor /nand flash…..




 

8.     名词解释




nGCS0

芯片选择(片选)寄存器

nGCS0-nGCS7








文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>