Flash概念简述

2023-11-05

1.Flash全名叫做Flash Memory

        Flash存储芯片的一种,通过特定的程序可以修改里面的数据。

        Flash属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。  

        Flash 存储器又称闪存,它结合了ROM 和RAM 的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势), U 盘和MP3里用的就是这种存储器。

        在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash 全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader 以及操作系统或者程序代码或者直接当硬盘使用(U 盘)。

2.Flash的硬件实现机制

        Flash的内部存储是MOSFET,里面有个悬浮门(Floating Gate),是真正存储数据的单元。数据在Flash内存单元中是以电荷(electrical charge) 形式存储的。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示,因此,Flash的存储单元的默认值,不是0(其他常见的存储设备,比如硬盘灯,默认值为0),而是1,而如果将电荷释放掉,电压降低到一定程度,表述数字0。

3.Flash主要分两种,Nand Flash和nor flash。

关于Nand Flash和Nor Flash的区别:

  1. Nor的成本相对高,容量相对小,比如常见的只有128KB,256KB,1MB,2MB等等。        优点是读写数据时候,不容易出错。所以在应用领域方面,Nor Flash比较适合应用于存储少量的代码。

  2. Nand flash成本相对低,缺点是使用中数据读写容易出错,所以一般都需要有对应的软件或者硬件的数据校验算法,统称为ECC。                                                                                  优点是,相对来说容量比较大,现在常见的Nand Flash都是1GB,2GB,8GB等。价格便宜,适合用来存储大量的数据。其在嵌入式系统中的作用,相当于PC上的硬盘,用于存储大量数据。

        所以,一个常见的应用组合就是,用小容量的Nor Flash存储启动代码,比如uboot,用大容量的Nand Flash做整个系统和用户数据的存储。

        而一般的嵌入式平台的启动流程也就是,系统从装有启动代码的Nor Flash启动后,初始化对应的硬件,包括SDRAM等,然后将Nand Flash上的Linux 内核读取到内存中,做好该做的事情后,就跳转到SDRAM中去执行内核了,然后内核解压(如果是压缩内核的话,否则就直接运行了)后,开始运行,在Linux内核启动最后,去Nand Flash上,挂载根文件,比如jffs2,yaffs2等,挂载完成,运行初始化脚本,启动consle交互,才允许你通过console和内核交互。至此完成整个系统启动过程。

        而Nor Flash就分别存放的是Uboot,Nand Flash存放的是Linux的内核镜像和根文件系统,以及余下的空间分成一个数据区。

4.Nand Flash,按照硬件类型,可以分为

  1. Bare NAND chips

    裸片。单独的Nand Flash芯片。

  2. SmartMediaCards

    裸片+一层薄塑料。常用于数码相机和MP3播放器中。之所以称smart,是由于其软件smart,而不是硬件本身有啥smart之处。

  3. DiskOnChip

    裸片+glue logic。glue logic=硬件ECC产生器+用于静态的nand 芯片控制的寄存器+直接访问一小片地址窗口,那块地址中包含了引导代码的stub桩,其可以从Nand Flash中拷贝真正的引导代码。

5.SLC和MLC的实现机制

        Nand Flash按照内部存储数据单元的电压的不同层次,也就是单个内存单元中,是存储1位数据,还是多位数据,可以分为SLC和MLC。

        1.SLC(Single Level Cell)

            单个存储单元,只存储一位数据,表示1或0。

        2. MLC(Multi Level Cell)

            单个存储单元,可以存储多个位。

       

        

       

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flash概念简述 的相关文章

  • 停止服务时单元陷入故障状态(状态=143)[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这是我的问题 我有 CentOS 和 java 进程在上面运行 Java进程是通过启动 停止脚本来操作的 它也创建了 java 实例的 p
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用
  • 无法安装 WWW::Curl::Easy: SZBALINT/WWW-Curl-4.17.tar.gz : make NO

    我正在尝试在我的 Fedora 26 机器上安装 WWW Curl Easy gcc c I usr include D REENTRANT D GNU SOURCE O2 g pipe Wall Werror format securit
  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • Linux shell 脚本中的 while 循环超时

    这工作正常 无限循环 while TRUE do printf done 我在尝试着timeout this while loop与timeout命令 所有这些都不起作用 timeout 5 while TRUE do printf don
  • diff 文件仅比较每行的前 n 个字符

    我有2个文件 我们将它们称为 md5s1 txt 和 md5s2 txt 两者都包含a的输出 find type f print0 xargs 0 md5sum sort gt md5s txt 不同目录下的命令 许多文件被重命名 但内容保
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 使用 find - 删除除任何一个之外的所有文件/目录(在 Linux 中)

    如果我们想删除我们使用的所有文件和目录 rm rf 但是 如果我希望一次性删除除一个特定文件之外的所有文件和目录怎么办 有什么命令可以做到这一点吗 rm rf 可以轻松地一次性删除 甚至可以删除我最喜欢的文件 目录 提前致谢 find ht
  • 为什么我收到“无法进行二进制日志记录”的信息。在我的 MySQL 服务器上?

    当我今天启动 MySQL 服务器并尝试使用以下命令进行一些更改时用于 MySQL 的 Toad http www quest com toad for mysql 我收到此消息 MySQL 数据库错误 无法进行二进制日志记录 消息 交易级别
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 无法加载 JavaHL 库。- linux/eclipse

    在尝试安装 Subversion 插件时 当 Eclipse 启动时出现此错误 Failed to load JavaHL Library These are the errors that were encountered no libs

随机推荐

  • python学习:静态方法,类方法,property装饰,抽象类

    1 静态方法 关键词为 staticmethod def func 在类实例化之前使用 如Class func 使用场景 如检测是否满足实例化的条件 2 类方法 关键词为 classmethod def func return cls 类方
  • Android使用ProgressBar实现加载动画

    项目需要做一个加载转圈的效果 给了一张菊花图 首先想到的是使用补间动画的旋转效果 在anim目录中创建loading xml
  • WPF加载大量控件的优化

    WPF 应用程序从两个线程开始 一个用于处理呈现 一个用于管理 UI 呈现线程有效地隐藏在后台运行 而 UI 线程则接收输入 处理事件 绘制屏幕以及运行应用程序代码 UI 线程对一个名为 Dispatcher 的对象内的工作项进行排队 Di
  • 如何快速掌握Redis跳跃表源码技巧?阿里架构师让你秒懂

    我们再来学习如何从跳跃表中查询数据 跳跃表本质上是一个链表 但它允许我们像数组一样定位某个索引区间内的节点 并且与数组不同的是 跳跃表允许我们将头节点L0层的前驱节点 即跳跃表分值最小的节点 zsl gt header level 0 fo
  • php 微信支付V3接口

    注意事项 1 请求接口签名方式 RSA 用到了API证书序列号 后缀为key pem的密钥文件 cert文件要用java自己生成 具体参考 https developers weixin qq com community develop d
  • mysql安装图解 mysql图文安装教程(详细说明)

    下面的是MySQL安装的图解 用的可执行文件安装的 详细说明了一下 打开下载的mysql安装文件mysql 5 0 27 win32 zip 双击解压缩 运行 setup exe 出现如下界面 mysql安装图文教程1 mysql安装向导启
  • Linux——信号的发送,自己实现结束进程的kill命令

    信号的发送 Linux提供了一种系统调用 2 不是kill命令 kill 可以向指定的进程发送指定的信号 int kill pid t pid int signType signType是要发送的信号 kill方法的pid参数有四种不同的情
  • PID 控制保姆级培训教程下-全国大学生电子设计大赛赛前必备

    紧接上回 PID 控制保姆级培训教程上 全国大学生电子设计大赛赛前必备 http t csdn cn TY4eB 上回介绍到 书接上回 实操设计 干货满满 3 数字控制器的模拟化设计 3 1 数字PID 3 1 1 DDC系统的组成原理 D
  • FastAPI从入门到实战(6)——请求体与嵌套模型

    前面记录的是路径参数和查询参数的内容 那两种形式的数据都不算的发送的数据 都是存在路径中的数据 请求体是客户端发给接口的参数 不存在于路径中 本文就主要记录FastAPI中的请求体应用内容 一个发送请求体的接口 创建一个数据模型 class
  • Linux 使用rpm方式安装最新mysql(5.7.16)步骤以及常见问题解决

    前几天在阿里云买了个服务器 准备自己玩玩 现将最新版mysql 5 7 16 安装步骤 以及遇到问题及解决过程分享如下 第一步 下载rpm包 mysql官网下载 http dev mysql com downloads mysql 但如果你
  • 2021年网络安全省赛--web隐藏信息探索解析(中职组)

    2021年省赛web隐藏信息探索 解析 任务环境说明 Web20200529 服务器场景操作系统 未知 关闭连接 1 通过本地PC中渗透测试平台Kali对服务器场景Web20200529中的网站进行访问 找到登录界面中的FLAG 并将FLA
  • 专属于程序员的知识仓库:开发者导航

    一个专属于开发者的导航网站 收录丰富 内容详实 更新频繁 废话不多说 先上几张图吧 网站还收录了很多惊喜类目 比如最近很火的ChatGPT和AI绘画 开发者导航网至少收录了20多个 大部分都是免魔法 国内直接可以访问的 娱乐区还包括很多影视
  • 金蝶显示服务器异常,金蝶连接云服务器异常怎么回事

    金蝶连接云服务器异常怎么回事 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 ELB的常见异常返回码有400 403 50
  • 派查查 :一个WearOS智能手表系统上的快递查询应用

    目录 前言 项目概述 设计背景 系统架构 接口介绍 即时查询请求 即时查询回复 前言 在学习面向对象程序设计课程的时候 收获颇多 最后的课程报告选题选择了 Android开发 但是安卓手机上好的应用数不胜数 自己不想重蹈覆辙做别人做过不知道
  • 前端常用工具库整理

    功能库 lt lt lt Axios 一个基于 promise 的 HTTP 库 可以用在浏览器和 node js 中 http www axios js com Lodash 一个一致性 模块化 高性能的 JavaScript 实用工具库
  • 小程序使用 svg

    封装组件 components下新建svgIcon文件 wxml
  • node内置模块——Buffer模块(缓冲区)

    文章目录 Buffer 缓冲区 创建Buffer 利用字符串创建buffer Buffer from 使用Buffer方法创建buffer Buffer alloc Buffer allocUnsafe size Buffer元素的操作 B
  • CSS选择器(nth-child)

    nth child 这个选择符括号内可以写 an b a b均为整数 或者关键字 因为工作中有遇到要隐藏列表第三个子元素之后的所有子元素 所以有用到这个选择器 记录一下 1 nth child a 当括号里只写一个数字 比如 list li
  • OSI七层参考模型和数据封装

    OSI七层参考模型和数据封装 一 网络基础原理 1 分层思想 二 OSI七层参考模型 三 TCP IP协议簇和OSI参考模型 1 TCP IP五层模型常见协议 2 ARP是地址解析协议 3 RARP是反地址解析协议 四 PDU协议数据单元数
  • Flash概念简述

    1 Flash全名叫做Flash Memory Flash存储芯片的一种 通过特定的程序可以修改里面的数据 Flash属于非易失性存储设备 Non volatile Memory Device 与此相对应的是易失性存储设备 Volatile