OK6410(s3c6410)存储方式之地址存储结构详解

来源:互联网 发布:sql删除dept外键约束 编辑:程序博客网 时间:2024/06/06 08:08

对几种常见存储器进行对比学习(ROM  RAM  FLASH) 

      ROM是只读存储器,RAM是随机存储器,两者最多的区别是ROM掉电数据不丢失,但存储读取速度慢,所以常用作存放程序,存放bootloader,存放内核,存放文件系统。

      RAM掉电数据丢失,但数据存储读取速度快,所以常用作内存(将ROM中的程序拷贝到RAM中去运行)RAM还分为SRAM静态随机存储器(不用不断刷新就可以读取数据,速度快但是造价也高PS:arm51stm32中的片内内存都是)和DRAM动态随机存储器(要不断刷新才能存储读取数据,造价相对较低PS:arm51stm32扩展的外部内存)。

      FLASH是一种可以快速读写的ROM(其融合了ROMRAM的优点),51stm32中存储程序的都是flasharm中存放bootloaderkernel等的也是falsh(nandflashnorflash的区别就是nand不能运行程序,只能存储数据)PS:51中的ROM叫程序存储器,RAM叫数据存储器,其实实质是一样的。

 

      Cache是高速缓冲存储器,产生的原因是,cpu的处理速度比RAM(包括SRAMDRAM)快很多,而且cpu的发展速度也比RAM快,所以在cpu和主存(即内存)直接有很多资源浪费,为了解决这个问题,就在cpuDRAM之间加入了一个高速的SRAM,即控制了成本又提高了资源的利用率。工作原理:就是内存中往往有一些使用频率特别多的数据和程序,把这些数据和程序存入或者映射到cache中,当cpu反复使用这些数据的时候,就可以不从主存中取了,直接从cache中取来用,提高了效率。这里举例子的是cpucache!!!其他好多设备也都有cache,如硬盘也有cachelinuxdisk cache

 S3C6410 支持 32 位物理地址域

 




S3C6410的物理内存分成MemoryPheriperal两部分,地址范围分别为0x0~0x6fffffff0x7fffffff

系统通过 SPINE总线访问Memory空间,通过PERI总线访问Pheriperal空间。

而为了适应不同外设的访问速度,又分别通过AHB总线访问LCD、 CameraAccelerator等高速外设,通过APB总线访问iicwatchdog等低速外设。

内存Memory,又叫主内存,分为4大区域,分别是启动镜像区、内部内存区、静态内存区、动态内存区。

 

1.引导镜像区  0x0000_0000~0x07FF_FFFF  128MB

2.内部存储区  2 * 64MB

(1) 内部ROM      0x0800_0000~0x0BFF_FFFF

(2) 内部SRAM    0x0C00_0000~0x0FFF_FFFF

如果是内部ROM启动0x0800_00000x0BFF_FFFF映射到引导镜像区,如果是nandflash启动 则将内部SRAM的地址0x0C00_00000x0FFF_FFFF映射到引导镜像区。

3.静态存储区  0x1000_0000~0x3FFF_FFFF    6 * 128MB

bank0什么都没接,bank1接了DM9000bank23的片选接在nandflash(但只是接在nandflashcon上的片选,没有统一编址)bank4,5应控制cf控制器但ok6410没接。

 

 

4.动态存储区  0x5000_0000~0x6FFF_FFFF

ok6410用的是SRAM端口2地址为0x50000000,详讲下面ok6410原理图。

 

 

 

1.启动镜像区物理地址为0x00000000~0x07ffffff,共128MB

这个区域的作用正如它的名字所述,是用来启动系统的。但是这个范围内并没有实际的存储 介质与之对应,只能在通过OM[4:0]选择具体的启动介质后再把相应介质的物理地址映射到这个启动区,比如说选择了IROM 启动方式后,就把IROM所占的地址空间映射为0x00000000开始的空间。引导镜像区反映一个镜像,这个镜像指向内存的一部分区域或者静态存储区。引导镜像的开始地址是 0x0000_0000。 

2.内部内存区物理地址为0x08000000~0x0fffffff,共128MB

这个区域对应着内部的内存地址,内部的ROMSRAM都是分布在这个区间。其中,0x08000000~0x0bffffff对应着内部ROM,当然实际上内部的ROM也并没有64MB这么多,只有32KB是有实际存储介质的32KB是一个只读区,放的是IROM方式下的启动代码,选择IROM启动的时候首先运行 的代码就是这一部分,称为BL0,这部分代码由厂家固化。0x0c000000~0x0fffffff对应内部SRAM,实际可用的SRAM按照三星的手册是4KB,其实这就是用于nand flash启动的Steppingstone(但是这个Steppingstone8KB只有4KB可用。)

3.静态内存区物理地址为0x10000000~0x3fffffff,共6*128MB

这个区域用于访问挂在外部总线上的设备,比如说SRAMNOR flashoneNand。这个区域被分割为6bank,每个bank128MB数据宽度最大支持16bit每个bank通过 Xm0CS[5:0]来划定。S3C2410 不一样的是,bank2~bank5能映射到nand flashCF等非线性存储器,这并不是说可以通过bank2~bank5的地址段就能直接访问nand flashCF内部的地址,相反,当映射到这些器件的时候这些bank的地址也不能再使用了,访问这些非线性存储器还是得通过Pheriperal空间的AHB总线进行,和S3C2410中的访问方式是一样的。不过有一个特例是,当Xm0CS2被映射到nand flash的时候,Steppingstone4KBor 8K?)SRAM被映射到bank2开始的4KB,而在以nand flash方式启动的时候bank2被映射到0x00000000开始的地方,实际上就是把Steppingstone映射到0x0000000了,这和 S3C2410的情况还是相似的。

4.动态内存区物理地址为0x40000000~0x6fffffff,共3*256MB

其中第一个256MB为保留区实际使用的动态内存区为 0x50000000~0x6fffffff,又分为2个区间,分别占256MB,可以通过DMCXm1CS[1:0]来进行着2个区间的选择。这个内存区主要是扩展DRAM,最大可以扩展512MBDRAM

 

 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝吃手上瘾拒绝吃奶粉吃奶怎么办 2岁宝宝特别粘人爱哭怎么办 3岁半宝宝突然说话口吃怎么办 2岁3个月宝宝突然说话结巴怎么办 一位特爱说话爱玩的高中生怎么办 猫5天不吃不喝躲起来该怎么办 两个月的小家猫睡觉要黏人睡怎么办 成年的儿子不听话做父母要怎么办 听到孩子上课又不听话想揍他怎么办 18个月小孩脾气很犟怎么办 烦自己的孩子想弄死他怎么办 楼道经常有小孩在门口恶作剧怎么办 2岁宝宝咳嗽咳吐了怎么办 不小心把鱼刺吃下去该怎么办 儿子在学校被老师甩耳光我该怎么办 家长诬陷老师打她家孩子耳光怎么办 一岁宝宝总觉得有痰怎么办 一岁宝宝感冒咳嗽有痰怎么办 哭的时候踹不过气来应该怎么办 孩子在幼儿园被老师罚站怎么办 孩子屁股打肿了又红又紫怎么办 生完孩子两个月一直浑身疼怎么办 宝宝被蚊子叮咬后红肿硬怎么办 小孩屁股青一块紫一块打的怎么办 小孩的手被鞭子抽红了怎么办 孩子每次写作业都要挨打挨骂怎么办 儿子四岁脾气特别大怎么办呢 月子里屁股被开水烫了怎么办 学生打闹家长只找老师责任怎么办 两个学生打闹受伤的孩子家长怎么办 小孩学习不好做家长的该怎么办 对学习不入门的小孩家长该怎么办 孩子老做作业发神上课不专心怎么办 儿子成绩考得差不专心未来怎么办 五年级学生写字慢又丑怎么办 宝宝上课坐不住不听老师话怎么办 三岁宝宝特调皮打他还还手怎么办 怀孕40天不知道喝酒了怎么办 怀孕四十天的时候喝酒抽烟了怎么办 宝宝怀孕三十天左右喝酒了怎么办 两个人都喝酒了意外怀孕怎么办