CPU的各种存储器接口

设计电路时往往绕不开要做一些内存或者外存的接口设计,比如接SDRAM、NAND FLASH等等。这些无非是为了扩展原来CPU的内存或者外存资源,方便运行更大的系统。比较常见的就是一些Linux的核心板。I.MX6这个就是很多产品设计中使用的。
那么,在这些设计中,我们怎么选型往往比较困难,因为我们可能都不知道内存和外存都是什么?用它们有什么用?这个过去也是经常会困扰我的问题,所以需要系统的整理一下,方便在糊涂的时候拿出来理清一下。

基本概念


内存 :内部存储器 用来运行程序的 RAM 举例(DRAM SRAM DDR)
外存: 外部存储器 用来存储东西的 ROM 举例(硬盘 Flash(Nand iNand···· U盘、SSD) 光盘)

比如常用的ST的单片机,stm32f103c8t6,内核是ARM Cortex-M3,Flash是64KB,RAM是20KB。这里的flash就是外存,用来保存我们烧录的代码,代码只是静静的放在flash上,一旦跑起来,它就要到RAM上去了。

CPU访问存储设备的方式

访问内存:直接地址访问。内存需要直接地址访问,所以是通过地址总线&数据总线的总线式访问方式连接的(好处是直接访问,随机访问;坏处是占用CPU的地址空间,大小受限)

访问外存:外设接口访问。外存是通过CPU的外存接口来连接的(好处是不占用CPU的地址空间,坏处是访问速度没有总线式快,访问时序较复杂)

这里说明一下:我们以三星的一款CPU-“S5PV210”为例。该芯片内核是ARM Cortex-A8。下图是该芯片的 Address Map,即地址映射。
在这里插入图片描述
从该映射图中可知,S5PV210可以连接的RAM从地址0x2000 0000 ~0x7FF FFFF,可以扩展的RAM的大小为1.5GB,也就是说该芯片可以外部扩展1.5GB的SDRAM芯片,如果接了超过1.5G,那么超过的部分就访问不到了。如果想读外部SDRAM中的数据,那么只要直接读0x2000 0000 ~0x7FF FFFF这个范围内的地址就可以了。

S5PV210的NAND的地址是0xB000 0000~0xBFFF FFFF。这个空间是256MB,那这个是说这个芯片只能外接256M的flash吗?当然不是,以为我们前面说了外存的访问不是像内存那样通过总线访问的,而是通过接口访问的。类似于uart、spi等等外设接口。当然,flash的访问外设接口时序逻辑会更复杂一点。

SoC常用外存

Flash
①NorFlash: 总线式访问,一般接到SoC的SROM接口上,比如上面说的S5PV210的SROMC_BANK0这里,优点是可以直接总线访问,一般用来启动。台式机的BIOS就是一块NorFlash。比较贵!
②NandFlash: 分为SLC和MLC,注意ECC校验的问题
③eMMC/iNand/moviNand : eMMC(embedded MMC),相当于是一个芯片类型的SD卡,这里的eMMC和NandFlash的区别:NandFlash就是单纯的存储单元,而eMMC里面包含了一些电路可以用来计算坏块之类的; iNand是SanDisk公司出产的eMMC,moviNand是三星公司出产的eMMC
④oneNAND: oneNand是三星公司出的一种Nand
⑤SD卡/TF卡/MMC卡 :这3中其实都是SD卡
⑥eSSD:SSD就是固态硬盘,固态硬盘里面其实也是NandFlash,而且是MLC的NandFlash。
硬盘
SATA硬盘(机械式访问、磁存储原理、SATA是接口)单位存储容量比较便宜,在嵌入式设计中使用很少,多用在电脑上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值