存储器Flash页、扇区、块的区别

作者 | strongerHuang

微信公众号 | 嵌入式专栏

大家都知道Flash是用于存储数据的存储器,但很多读者看到页(Page)、扇区(Sector)、块(Block)等这些单位时一脸懵逼,这到底是什么,有什么区别?

dc973dfbbfd7f5774891f614cc5d7e96.png

下面就来讲讲关于Flash内部结构组织以及相关的内容。

页、扇区、块的描述

扇区、块这些专用名词,其实是从早期的软盘、硬盘等存储器发展而来,目的是将一个存储器划分为多个(扇区、块)区域,更方便的编程管理这些存储单元。

1.页(Page)

Flash存储器中一种区域划分的单元,好比一本书中一页(其中包含N个字)。

比如:STM32F1中小容量芯片内部Flash,1K字节为1页,整个Flash分为32页(当然,不同容量的芯片,页数不同)。

bcf9c3a727d2c7030541a3c467bf492e.png

注:不同厂家的、不同类型存储器的页大小不同,1KB、2KB、4KB等各种容量的页大小都有。

2.扇区(Sector)

扇区和页类似,也是一种存储结构单元,只是扇区更常见,大部分Flash主要还是以扇区为最小的单元。

比如:W25Q256芯片以4KB为1扇区。

2d81b1d927c45403e8068f6bdb194bae.png

同样:不同厂家的、不同类型存储器的扇区大小可能不同。

3.块(Block)

块,比扇区更高一个等级,一般1块包含多个扇区。

同样,以上图W25Q256芯片为例:1块包含16个扇区。

4.额外说明

不同厂家的、不同类型存储器的划分方式不同,有的以页为最小单元,有的以扇区为最小单元,但大部分都以扇区为最小单元。

还有,你可能会看到一些其他的名词,比如:和扇区一个级别的SubSector,和块一个级别的Bank、Bulk等。

fe27d75d21223424f515a2fe3db6413a.png

它们的区别

其实,从上面的描述,大家应该看出来它们的区别了。

用包含关系来描述Flash物理分区的话:芯片包含多个块,块又包含多个扇区,扇区又包含多个页,页包含多个字节

d3d0942c851ef2f309821211ed5fd282.png

根据容量大小来说,它们的关系:
 页(Page)< 扇区(Sector) < 块(Block)< 芯片(Chip)

dcbe9d52f3fb25d412abef25f5e74e38.png

网上有一个很形象的比如:

Flash芯片就像一列火车,块(Block)就像一节车厢,车厢里的每排座位就像一个扇区(Sector)。

文件系统中的扇区、块

上面描述的Flash存储器物理地址的划分,为了方便管理,编程读写操作Flash时引入了文件系统。

文件系统的种类很多,比如:FAT、FAT32、exFAT 、 Ext3、 NFS、 NTFS等。不同文件系统,底层对存储地址的划分可能不同。

在MCU这类嵌入式系统中,页、扇区是最小的物理存储单元,但在Windows、Linux这类系统中,这么小的存储单元已经不能满足要求了(不能对众多扇区寻址),于是就会以块作为最小的寻址单元。

在Windows环境下,块是另外一种称呼,叫簇,可以理解一群、一组(扇区)。

150635d89f4cf4cefe934c0d1fa8cada.png

注:簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。

最小存储单元如果太小了,会造成寻址空间不够,像现在动辄上G、T的存储容量,太小了肯定

如果太大,会造成存储空间的浪费,也就是所谓的碎片。

所以,最小存储单元应该要根据存储器大小设置一个合理的值,就如U盘分配单元大小一样:

2f8c8c31b8ba0506192d4f23ca2732a9.png

U盘格式化时,一般建议选择默认配置即可。

------------ END ------------


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

3852894470d83ae1b58d235e107dac24.png

嵌入式Linux

微信扫描二维码,关注我的公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

volatile用法

许多程序员无法正确的理解C语言关键字volatile。这并不奇怪&#xff0c;大多数C原因书籍不过一两句一带而过。本文将告诉你如何正确使用它。 在C/C嵌入式代码中&#xff0c;你是否经历过下面的情况&#xff1a; ● 代码执行正常–直到你打开了编译器优化 ● 代码执行正常–直…

Java 删除ArrayList中重复元素,保持顺序

// 删除ArrayList中重复元素&#xff0c;保持顺序 public static List<Map<String, Object>> removeDuplicateWithOrder(List<Map<String, Object>> list) { Set<Map<String, Object>> set new HashSet<Map<St…

2011.5.11

终于逮到一次博士的开题&#xff0c;中期&#xff0c;预答辩&#xff5e; 忽然想到一句话&#xff0c;是骡子是马&#xff0c;拉出来溜溜就知道&#xff0c;话虽很粗&#xff0c;理却不糙&#xff5e;几年的功力&#xff0c;在台上一展示&#xff0c;无需赘语&#xff5e;&…

Linux 终端(TTY)

TTY 是 Teletype 或 Teletypewriter 的缩写&#xff0c;原来是指电传打字机&#xff0c;后来这种设备逐渐键盘和显示器取代。不管是电传打字机还是键盘显示器&#xff0c;都是作为计算机的终端设备存在的&#xff0c;所以 TTY 也泛指计算机的终端(terminal)设备。为了支持这些 …

任务、进程、线程之间的区别

任务&#xff08;task&#xff09; 任务是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一…

印象笔记 MAC安装使用旧版本

印象笔记终于支持markdown了&#xff0c;赞&#xff01;第一个beta版用起来非常不错。提示更新安装新版本后保存markdown一直提示 “Note content is invalid.”&#xff0c;无法保存&#xff0c;无奈下只能安装旧版本印象笔记markdown 密码:wa23安装旧版本后&#xff0c;打开印…

在NetBeans IDE 6.9.1上搭建Android SDK环境(WIN和Linux平台)

这个相当全呀&#xff0c;并且经过本人测试&#xff01; 目前Android在Netbeans上进行开发需要借助nbandroid的平台插件。 1. 系统软件需求&#xff1a; ◆Windows&#xff1b; ◆JDK 1.6&#xff1a;jdk-6u23-windows-i586.exe ◆Android SDK 2.1&#xff1a;android-sdk_r08-…

你打开的那些网页,大概率是被监控了

你有没有这样的经历&#xff1a;当用手机搜索一件物品时&#xff0c;APP很快就会给你精准推荐这件物品。这并不是APP有多懂你&#xff0c;而是你的隐私已被APP监视了。哪怕你用的是“清理历史记录切换无痕模式”&#xff0c;后台依然可以记录你的搜索……还有&#xff0c;长夜漫…

操作系统常见面试题

1.进程的常见状态&#xff1f;以及各种状态之间的转换条件&#xff1f; 就绪&#xff1a;进程已处于准备好运行的状态&#xff0c;即进程已分配到除CPU外的所有必要资源后&#xff0c;只要再获得CPU&#xff0c;便可立即执行。执行&#xff1a;进程已经获得CPU&#xff0c;程序…

加强型的记录集权限(数据集权限、约束表达式设置功能)实现方法界面参考...

1。功能要求相对复杂的信息管理系统&#xff0c;有比较严格的权限管理设置的需求。例如业务管理系统中的一个角色只能查看金额小于500万的合同&#xff0c;而且只能看自己所在部门的合同&#xff0c;系统要求限制条件能灵活设置过滤所能看到的&#xff0c;所能操作的数据项&…

python-类的定制

python-类的定制 1.看到类似__slots__这种形如__xxx__的变量或者函数名就要注意&#xff0c;这些在Python中是有特殊用途的。__slots__我们已经知道怎么用了&#xff0c;__len__()方法我们也知道是为了能让class作用于len()函数。除此之外&#xff0c;Python的class中还有许多这…

性能强悍的MCU,主频干到GHz

目前有两款高性能MCU印象深刻&#xff0c;不是多核心就是主频上1GHz。这也许是为了满足一些高数据吞吐量但仍需高实时性的需求吧。比如机械臂。一、第一款是来自于TI的Sitara AM2x&#xff0c;如型号为AM2434的单片机&#xff0c;拥有四个800MHz的核心&#xff0c;官方称为双核…

windows2003安全设置

一、分区规划 所有分区采用NTFS格式&#xff0c;NTFS在空间的利用、安全和性能方面比FAT格式都有较大的提升。建议分三个区。系统在C盘&#xff0c;空间15G-20G&#xff1b;D/E盘平分剩余空间&#xff0c;重要程序和数据库程序安装在D盘&#xff0c;E盘放临时文件和工具文件以及…

C语言无符号数运算问题

C语言中有符号数和无符号数进行运算&#xff08;包括逻辑运算和算术运算&#xff09;默认会将有符号数看成无符号数进行运算&#xff0c;其中算术运算默认返回无符号数&#xff0c;逻辑运算当然是返回0或1了。 unsigned int和int进行运算 直接看例子来说明问题吧 复制代码 #i…

Unity3D_(游戏)控制物体的上、下、左、右移动

通过键盘上↑、↓、←、→实现对物体的控制 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Gary_Text : MonoBehaviour {public Transform WuTi;public float speed 1;// Use this for initializationvoid Start () {}// Upda…

糟糕的C语言睡眠排序算法

不知道大家知道这个算法没有&#xff0c;就是靠睡觉完成排序的。比如数字1 4 3&#xff0c;第一个数字1的时候&#xff0c;创建一个线程&#xff0c;然后让线程休眠1个时间单位&#xff0c;依次是 4 和 3个单位。因为睡眠的时间不同&#xff0c;线程醒的时间也不同。3会比4先醒…

Rocchio算法

其基本思想是使用训练集为每个类构造一个原型向量&#xff0c;构造方法如下&#xff1a;给定一个类&#xff0c;训练集中所有属于这个类的文档对应向量的分量用正数表示&#xff0c;所有不属于这个类的文档对应向量的分量用负数表示&#xff0c;然后把所有的向量加起来&#xf…

C语言定义:__DATE__和_TIME__

/******************************************************************** > File Name: 05-ymd.c* > Author: fly* > Mail: XXXXXXXXicode.com在这里插入代码片* > Create Time: Thu Sep 7 16:43:30 2017**********************************************…

写给小白看的,逆向工程怎么上路?

什么是逆向工程大家好&#xff0c;我是写代码的篮球&#xff0c;这篇文章转自小白哥的文章。给大家出一道思考题&#xff1a;用C语言设计一个程序&#xff0c;验证输入的密码是否是“12345678”&#xff0c;如果验证成功&#xff0c;就输出“success”&#xff0c;如果验证失败…

vue中,点击button按钮后,页面上的input框再次自动获取焦点

需求&#xff1a;点击button按钮&#xff0c;录入成功后&#xff0c;页面上的input框自动聚焦&#xff0c;快速进行下一次录入&#xff0c;提高效率 开始尝试了几种方法都没有成功 一、首先想到的用vue指令 v-focus&#xff0c;然而没有成功 <Input v-model"book.isbnO…