【专题1:电子工程师】 之 【2.SoC/MCU常用外存和内存的部署问题】

  笔者在嵌入式领域深耕6年,对嵌入式项目构建,BLDC电机控制,产品上位机开发以及产品量产和产品售后维护有多年工作经验。经验分享,从0到1, 让我带你从实际工作的角度走进嵌入式成长之路。

  原创不易欢迎大家关注我的微信公众号嵌入式工程师成长之路扫下面二维码
                     在这里插入图片描述
所有文章总目录:【电子工程师 qt工程师 做产品过程中遇到的坑】

原创视频总目录:【电子工程师 qt工程师 做产品过程中遇到的坑】

1.常见的存储结构

【专题1:电子工程师】 之 【2.SoC/MCU常用外存和内存的部署问题】_第1张图片
  iRAM、内存1都属于内存,一般称为RAM,内存可以通过C语言指针进行访问。

  iRAM一般是SRAM(静态内存),它集成在了SoC内部;上电之后不用通过软件初始化,上电之后可以是直接把代码放到iRAM中运行。掉电数据会丢失。

  内存1一般是DRAM(动态内存),它是直接接在cpu的地址总线上;上电之后不能直接使用,必须通过软件进行初始化,初始化好之后才可以把代码放到DRAM中运行。掉电数据会丢失。

  iROM、外存2、外存3都属于外存,外存一般被称为flash或是ROM,数据掉电不会丢失。

  iROM一般是nor Flash,它集成在了SoC内部;上电之后不用通过软件初始化,上电之后可以是直接把代码放到iRAM中运行。掉电数据不会丢失。它和iRAM的特性类似,但掉电数据不会丢失。可以通过C语言指针访问。

  外存2和iROM的特性是一样的,只不过它在SoC外面。它直接连到了地址总线上,可以通过C语言指针访问。

  外存3:通过专门的接口和SoC相连,譬如有spi接口的flash、eeprom、台式机硬盘、Nand/inand/U盘/SSD(台式机中固态硬盘)。初始化好之后,可以根据spi接口的时序对其进行读写。

2.常见外存

  • NorFlash:因为直接和CPU地址总线相连,并且和内存的访问方式是一样的,速度还行,所以一般用来做启动。
  • NandFlash:分为SLC和MLC。SLC价格更贵,容量一般也比较小,但是更稳定,性能更好。而MLC容量可以做得很大,并且价格低,但是不是很稳定,性能不是特别好,使用的时候必须使用校验算法进行校验。
  • sd卡/TF卡/MMC卡:手机中使用的sd卡,各自的大小性能等参数有所不同。
  • eMMC/ inand/ moviNand:
    (1) eMMC:embeded MMC,也就是嵌入在SoC中的MMC卡,即将一张sd卡做成了一块芯片,然后直接嵌入到了SoC的内部,然后就成了eMMC。另一方面eMMC也是一种国际做eMMC芯片的协议。
    (2) iNand是美国SanDisk公司出产的eMMC。
    (3) moviNand是三星公司出产的eMMC。

3.Nandflash和eMMC/inand/moviNand的区别?

  Nandflash就是一块单纯的flash,而eMMC/inand/moviNand是一块flash + 一个微处理器的集成,在eMMC/inand/moviNand的内部有一块小的CPU,用来管理flash的坏块和访问时的校验。

  使用eMMC/inand/moviNand比使用Nandflash要更简单,因为flash的坏块管理以及校验都不用我们来做。

  • oneNand:三星自己出的一套制作eMMC的标准,然后根据自己的这套标准自己生产的eMMC卡,也就是oneNand。
  • eSSD:符合eMMC标准的SD卡,也就是将固态硬盘做成芯片,可以将它集成到SOC中。
  • SATA硬盘:机械式硬盘,磁存储原理。
  • EEPROM:读写速度较快,断电数据不会丢失,读写接口比较简单。

4.ROM和RAM的区别

  RAM是可读可写的随机存储器,随机访问的意思是:对于512M的地址空间,想要访问哪个地址就能立马访问哪个地址。和随机访问相对的是顺序访问,顺序访问:对于512M的地址空间,假如我要访问第100地址的内容,必须把前面的100个地址的内容全部先访问到,然后才能访问第100地址处的内容,也就是说不能随机访问,不能想访问哪个就访问哪个。RAM一般都是用来放数据段的。

  ROM是只读存储器,只读的意思不是真的不能读,而是不能像读RAM那样采用地址进行访问(RAM是采用总线与CPU链接的,给出地址就可以访问,而ROM要按照一定的时序进行访问)ROM主要用来放代码段。

5.存储器的部署

(1)内存
  A、SRAM:静态内存,容量一般比较小,价格高;优点是不需要软件初始化,上电直接就能使用。
  B、DRAM:动态内存,容量大,价格低,缺点就是上电后不能直接使用,需要软件初始化后才能使用。

(2)外存

  • NorFlash:特点是容量小,价格高,优点是可以和CPU直接地址总线式相连,CPU上电后,可以不用进行初始化直接上电进行读写操作。所以一般用作启动介质。
  • NandFlash(跟硬盘是一样的):特点是容量大,价格低,但它不是和CPU直接总线式相连,就不能直接总线式访问。并且上电后要先进行初始化才能使用,读写也是按照一定的时序来操作的。

(3)单片机、嵌入式和PC机对存储器的需求

  • 单片机:内存需求量小,而且希望开发尽量简单,适合全部的内存都直接使用SRAM
  • 嵌入式系统:内存需求大,而且没有NorFlash等可作为启动介质的东西存在。
  • PC机:内存需求量大,而且软件复杂,不在乎DRAM的初始化开销,适合全部使用DRAM。

(4)单片机、嵌入式和PC机的存储器部署

  • 单片机:很小容量的NorFlash+很小容量的SRAM。例如STM32等单片机在开发的时候就不需要关注外存和内存的初始化,譬如128KB的flash(iROM)和20KB的内存(iRAM)的stm32芯片比较常见。
  • 嵌入式系统:因为NorFlash很贵,所以现在很多的嵌入式系统倾向于不用NorFlash,直接是:外接大容量的Nand+外接大容量的DRAM+SoC内置的SRAM。
  • PC机:很小容量的NorFlash(也就是BIOS)+很大容量的硬盘(类似于NandFlash)+大容量的DRAM。

以S5PV210为例:
官方推荐的启动方式:
  外接的大容量的Nand + 外接大容量的DRAM + SOC内置的SRAM(iRAM)+ SOC内置的“Norflash”(iROM)。
  这里打引号的Norflash不一定就是Norflash,只是它和Norflash有一样的特性,可以理解为就是一块Norflash。这块Norflash中就内置了一些代码用于初始化外部Nand,让后将Nand的开头部分代码复制到内部的SRAM中,然后在IRAM中去初始化外部DRAM,然后再将Nand中的启动代码复制到DRAM,最后再使用一个长跳转到DRAM中去运行操作系统。

你可能感兴趣的:(专题1:电子工程师,嵌入式)