嵌入式中常见的存储器总结(一)存储器分类

存储器有两种,一种是断电之后会丢失信息,叫做易失性存储器(volatile memory);一种是断电后仍然可以保存信息,叫做非已失性存储器(nonvolatile memory)。其中SRAM和DRAM是易失性存储器,经常还会被统称为RAM(Random-Access Memory),随机访问存储器,也叫做主存内存。非易失性存储器人们也称为ROM(Read-Only Memory),这里就不能仅仅以字面意思去理解,ROM字面意思是只读存储器,但有很多ROM既可以读也可以写,ROM称为外存。这些名词似乎都无法准确进行概括去区分,甚至在不同的环境中会有不同的意思,对于刚学习计算机的人会有困惑,但是很多东西似乎也是约定俗成,只要我们知道他们的功能就不会理解错误。

例如怎么理解内存和外存呢?我觉得一定是你已经明白了,你才知道。但你是怎么明白的,一定不是从书上看到的概念:内存,存取速度快,容量小;外存,存取速度慢,容量大。我以前看到这样的描述也觉得说了等于没说。我就会想,为什么速度快就是内存,有多快,比谁快,慢的就不能当内存吗?直到我知道CPU是如何执行指令,程序的代码和数据如何被存放和加载的,计算机局部性原理,存储器层次结构,可能才对这些概念有一个更深的认识,知道为什么这样去设计,这些概念也会随着技术的发展会有变化。本人也是能力有限,无法说明白这些存储器更深层次的区别,不过也给大家提供一个思路。
在这里插入图片描述

内存(RAM)

随机访问存储器分为两类,静态的(SRAM)和动态的(DRAM)。

SRAM

SRAM将每个位存储在一个双稳态的存储器单元里。每个单元是用一个六晶体管电路来实现的,在供电期间保留数据。这使得每个内存单元相对较大,并限制了SRAM在低密度内存中的使用。SRAM能够提供更快的数据访问,使用更少的待机电量,但往往比DRAM更昂贵。SRAM一般用来作为高速缓存存储器。

DRAM

DRAM为每个存储器位使用一个晶体管和一个小电容。 由于电容不会无限期地保持电荷,因此必须经常对DRAM单元进行充电(刷新)以避免丢失内容。 这些较小的存储单元允许DRAM用于高密度,低成本的存储器,但通常比SRAM慢。DRAM一般用来作为主存。

外存(ROM)

PROM

PROM,Programmable ROM,可编程只读存储器。只能被编程一次。PROM的每个存储单元有一种熔丝,通过高压电流将其熔丝“烧”断以将其设置为1或0,这过程不可逆,因此数据只能烧写一次。

EPROM

EPROM,Erasable Programmalbe ROM,可擦写可编程只读存储器。EPROM对PROM来说是一个很大的改进,因为不仅可以烧写所需的数据或程序,而且还可以进行多次烧写。早期的EPROM有一个透明的石英窗口,将它们石英窗口暴露于紫外线(UV)中,可以将它们擦除。对EPROM写数据是通过特殊设备来完成的。
在这里插入图片描述

EEPROM

EEPROM,Electrically Erasable PROM,电可擦写可编程只读存储器。这是对早期EPROM的改进,因为它不再需要紫外线来擦除存储芯片,因此不需要特殊的设备进行写入。取而代之的是,只需要向芯片上的一个引脚施加特殊的电压就可以了。EEPROM要求一次写入或擦除一个字节的数据。
在这里插入图片描述

FLASH

FLASH,Flash Memory,闪存。flash是基于EEPROM发展的,区别是EEPROM要求一次写入或擦除一个字节的数据,而闪存则允许以块为单位写入或擦除数据,这使闪存速度更快。

SPI flash

flash以接口不同可以分为传统flash和SPI flash,传统flash的接口不一,CLE、ALE、CE、RE等,使用的管脚数量也不一,因此难以使用。而后面的SPI flash的接口就SPI总线,统一接口可以方便随时更换不同厂家的flash而不需要修改电路设计和代码,并且SPI flash使用的管脚数量比传统的flash更少。

Nor、Nand

flash memory有两种架构,Nor和Nand。
Nor,容量小,价格高,Nor通常用于代码存储和执行。 Nor允许快速随机访问存储器阵列中的任何位置,部件寿命期内所有存储单元(bit)都是良好的以及可以直接从Nor闪存中执行代码。
在这里插入图片描述

Nand,容量大,价格低,通常用于数据存储。 Nand闪存需要一段时间去初始化才能工作,部件寿命期内大概98%的存储单元(bit)是良好的,意味着还有2%的存储单元(bit)是故障,因此需要使用数据校验算法(ECC)。写入和擦除时间比Nor快得多。
在这里插入图片描述

eMMC

eMMC,embedded Multi-Media Controller。是Nand和闪存控制器集成在同一芯片封装。Nor和Nand闪存最初不需要单独的硬件闪存控制器,并且将这部分此功能移交给软件处理。硬件闪存控制器的主要功能一是纠错和编码(ECC);功能二实现了FTL(Flash Translation Layer,闪存转换层),该FTL进行类似于磁盘的块访问并将其转换为有意义的Nand操作,以及执行损耗均衡和块节省。eMMC适用于高性能应用,例如用于智能手机,平板电脑,导航系统和数码相机等便携式消费电子产品。
在这里插入图片描述

SD、TF

SD,Secure Digital Memory Card,数字安全记忆卡。SD卡和eMMC非常相似,区别就是eMMC一般焊接在主板上,而SD卡是可以拔插的。
在这里插入图片描述
TF,TransFLash,也称为Micro SD卡,其实本质上和SD卡是一个东西,只是外形不同,名称不同,开发的公司不同而已。市面上还有TF卡插头适配器,可以直接转换为SD卡。
在这里插入图片描述

HDD

磁盘,Hard Disk Drive,HDD。使用旋转盘片为基础的非易失性存储器,它在平整的磁性表面存储和检索数字数据,数据通过离磁性表面很近的磁头由电磁流来改变极性的方式被写入到磁盘上,数据可以通过盘片被读取,原理是磁头经过盘片的上方时盘片本身的磁场导致读取线圈中电气信号改变。(维基百科)
在这里插入图片描述

SSD

SSD,solid-state drive,固态硬盘。SSD也是和eMMC一样由Nand和闪存控制器组成,可以理解eMMC通常是一个闪存芯片而SSD是多个闪存芯片,SSD容量会更大;SSD使用SATA、PCIe、M2等接口,传输速度比eMMC的SPI接口更快;eMMC常用于移动设备中,SSD常用于PC。
在这里插入图片描述
部分参考:
[1] https://blog.csdn.net/sinat_27746419/article/details/73604520
[2] https://blog.csdn.net/u014470361/article/details/96130939
[3] https://www.gearbest.com/blog/new-gear/tf-card-vs-sd-card-what-is-it-and-9-easy-ways-to-help-you-tell-their-differences-6305
[4] https://www.cypress.com/file/202491/download

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值