您的位置 首页 动态

s3c2440 存储系统和I/O空间 知道

用友善之臂的板子已经有一段时间了.对于存储系统和I/O空间的认识也渐渐淡忘了,原因是在做其他开发时,一直用着自带的启动代码,从不关心板子…

用友善之臂的板子现已有一段时刻了.关于存储系统和I/O空间的知道也逐渐淡忘了,原因是在做其他开发时,一向用着自带的发动代码,从不关怀板子的贮存空间装备.最近在做网卡驱动,忽然间就不知道网卡的地址是什么了,所以花点时刻总结一下.废话少说.开端吧.

1,板上的存储资源

两个32M的SDRAM.

一个2M的NOR FLASH

一个128M(有些是64M)的NAND FLASH

以上这些资源看原理图便知.

2,板上的I/O资源

这块板子上(精确的说是S3C2440)的I/O空间是用存储映射的办法映射到存储空间上的,也就说I/O空间是要占用存储空间的.

3,各种存储器的差异与各自的用处

为什么这块板子上有那么多存储设备呢?原因很简单.每种存储设备的用处都不相同,并且为了统筹广阔用户的需求,也必须有不同的存储设备.首先说SDRAM.(写到这忽然想起忘了说SRAM了.SRAM是静态随机存储器,它具有掉电不丢掉数据且不用频频改写的特色,存储速度快,相当于PC的内存,看来这块相当于内存的东西很重要,可是刚刚怎样没说有这块东西呢?原因很简单.因为本来就没有.其实,假如需求随机存储器,SDRAM便是随机存储器啊,仅仅它需求不断的改写以坚持里边的数据(电平).提到这,SDRAM的效果同学们也应该了解了.也就说咱们这块板子便是有64M的内存,满足用了.

其次说说NOR FLASH.NOR FLASH是具有SRAM接口特性的ROM.可是NOR FLASH才2M未免太少了,没错,是很少,可是咱们有NAND FLASH啊,它也是ROM啊,所以加起来咱们能够说这块板子有130M(66M)的硬盘.这也满足用了,能够少好几个Linux了.

再说说NAND FLASH,NAND FLASH能够做的很大,可是速度却比不上NOR FLASH,NOR FLASH能做快却不能做的大,所以,速度和容量是一对对立.为了战胜这对对立,这板子上两种FLASH都有了.各有用处.别的,初学者必定要知道NAND FLASH与NOR FLASH发动的不同吧.这是跟他们的特性有关的,接下来谈谈.

4,NOR FLASH发动与NAND FLASH发动

开发板上有一个S2开关,当它打在NOR一端是便是NOR发动.相反,打在另一端便是NAND FLASH发动了.先说着两种发动的不同,再说说硬件上是怎样发动的,空间有时怎样分配的.当S2打在NAND FLASH发动,那么程序便是在NAND FLASH上跑起来.其实,在内部还有一个4K字节的steppingstone的缓冲器(其实这是一个SRAM),当挑选NAND FALSH发动时,这个缓冲器映射在地址0x0000_0000上,而它担任将NAND FLASH上的代码仿制到SDRAM上(咱们都知道,程序运转时都是在RAM上运转的,怎样可能是在FLASH上运转呢,其实便是将FLASH上的代码仿制了罢了)而担任仿制这段代码的东西便是传说中的BIOS啦.

当S2打在NOR FLASH一端时,又有什么差异呢?当挑选用NOR FLASH发动时,2M的NOR FLASH就映射到地址0x0000_0000上,程序便是从这儿运转了.那莫非程序就能从NOR FLASH上运转吗?当然不可,那为什么能够在这儿发动呢,其实这个NOR FLASH现已安装了BIOS的了(若有读者不知什么是BIOS,那就暂时以为它的功用便是从FLASH上仿制代码到SDRAM就能够了)

4,S3C2410 S3C2440NAND存储系统

咱们都知道,32位能够寻址4G空间.可是S3C2440却的存储空间里把4G这姿态分的:

(途中只显示最低的1G)

0x4000_0000只要还有3G空间是这样分配:

OM[1:0]=01或许是10时:0x4000_0000-0x4000_0fff.这4字节的便是前面说的stepingstone的啦.0x4000_0fff_0x4800_0000是没用到的.0x4800_0000-0x6000_0000的空间是特别功用寄存器的.你发现,一切的寄存器都是在这个范围内的.0x6000_0000—0Xffff_ffff的仍是未用到的.

OM[1:0]=00时.这个时分如上图所示.刚刚说的steppingstone映射到ox000_0000那里,也便是途中的BOOT INTERNAL SRAM.其他的相同.

其实.S3C2440把低1G的空间分成了8块,由图可知,第0至6这七块的开始地址是不变的.而第七段的地址是可变的(它的地址有第六块需求用到多少来决议,横竖便是第六第七是连在一起的).前6块能够是ROM SRAM .最终两块不光能够是ROM,SRAM外,还能够是SDRAM.其实啊,简单点的说,便是只要最终两块才干是SDRAM.也便是说SDRAM必需求映射到这两块里边.mini2440便是挑选映射在第七块上,所以SDRAM的开始地址是0x3000_0000(这便是手册上为什么在加载测验程序时DNW的初始值要设为这个,它便是为了想程序直接加载到SDRAM上,这仅仅做试验并且,掉电后仍是会丢掉的.所以做产品时是不可能这样做的).

刚刚说S3C2440把存储空间分为8块,它为什么要这么做呢?其实很简单,即便它不这么做,咱们也会这么做的.先了算一管用:每块128M,那便是需求27根地址线来寻址.而8块呢就跟着引出与之一一对应的8跟片选引脚.讲到这聪明的读者必能想到.其实这8根片选引脚便是里边用3根地址线译码出来的.所以一共用了30根地址线,30根不正好是1G么.呵呵.

说的差不多了.应该有许多需求完善的,可是这关于初学者来说仍是有必定的协助吧?

S3C2440 MEMORY CONTROLLER详解

BANK0总线宽度由OM[1:0]引脚决议,当OM[1:0]=01时,booting ROM data width是16位,当[1:0]=10时,booting ROM data width是32位,当OM[1:0]=00时,从NAND FLASH发动。在友善之臂S3C2440开发板上,OM1引脚直接接地。

依据这张表,能够查找到SDRAM的BANK挑选引脚衔接方法,比方,咱们运用的SDRAM是2片HYNIX的HY57V561620(L)T,它的标准是4*4M*16bit(运用两片是为了装备成32位的总线宽度),BANK巨细是4M*16=64MB,总线宽度是32位,器材巨细是4*BANK巨细=256Mb(M bit的意思吧),寄存器装备便是(4M*16*4B)*2( M bit ),依据上面的表格,SDRAM上的BANK地址引脚(BA[1:0])与S3C2440的A[25:24]相连。

上表是寄存器操控地址总线衔接方法,咱们运用2片SDRAM装备成32位的总线宽度,所以SDRAM上的A[12:0]接到S3C2440的A[14:2]引脚。
具体的S3C2440与两片SDRAM接线方法如下图所示:

SDRAM的作业时序作为ARM工程师了解即可,具体的读写操控由寄存器操控器完结,作为FPGA工程师则需求具体了解SDRAM作业原理与时序,在此不再赘述。作为ARM工程师,最重要的是精确装备与SDRAM相关的寄存器。

软件可编程的巨细端形式;

地址空间:每个BANK可寻址128MB(一共8个BANK 1GB空间);

可编程的拜访位宽:BANK0为16或32位,其他BANK为8或16或32位;

8个存储器BANK,其间6个用于ROM或许SRAM,2个用于ROM、SRAM或许SDRAM;

BANK0~BANK6的开始地址固定;

BANK7的开始地址和巨细可编程;

一切存储器BANK的拜访周期可编程;

外部wait信号可延长总线周期;

支撑SDRAM的自改写和掉电形式。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/dongtai/274670.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部