ShuangChenYue ShuangChenYue
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
  • 电子嵌入式通信协议

  • 深入浅出SSD

  • 文件系统

    • FAT16文件系统
      • 1. 存储结构
      • 2. DBR 扇区
      • 3. FAT 表总览
      • 4. FAT 初始化
      • 5. 创建文件
      • 6. 读文件
      • 7. 写文件
    • FAT32文件系统
    • NTFS文件系统
  • 汇编语言

  • STM32

  • 嵌入式软件开发
  • 文件系统
霜晨月
2024-06-03
目录

FAT16文件系统

# FAT16

大端存储:高位字节放在低地址端,低位字节放在高地址端。

小端存储:低位字节放在低地址端,高位字节放在高地址端。

举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:

  • 大端模式:

低地址 -----------------> 高地址 0x12 | 0x34 | 0x56 | 0x78

  • 小端模式:

低地址 ------------------> 高地址 0x78 | 0x56 | 0x34 | 0x12 可见,大端模式和字符串的存储模式类似。

  • FAT16 文件系统:FAT的全称为 File Allocation Table,即“文件分配表”。FAT 分为16位与32位两个不同的版本。如果只说“FAT”,则专指FAT16文件系统。FAT16 文件系统的兼容性好,可以被 MS-DOS、 Windows 及其他多种操作系统识别,但是由于不支持大于 2GB 的硬盘, 现在已被淘汰。FAT16 系统一般在 U盘、MMC卡、SD 卡以及一些小型存储设备上使用比较多,把这些小型存储设备统称为存储卡。
  • 文件系统的缺点:磁盘利用效率低
  • 因为在 Windows 系统中,磁盘文件的分配是以“簇”为单位的,一个簇只分配给一个文件使用,不管 FAT16 这个文件占用整个簇容量的多少。由于这个原因,即使一个很小的文件,它也要占用了一个簇,剩余的空间便全部闲置在那里,形成了磁盘空间的浪费。由于分区表容量的限制,FAT16 支持的分区越大,磁盘上每个簇的容量也越大,造成的浪费也越大。
  • 【注意】:分区格式也被称为“文件系统”,例如,FAT16、FAT32、NTFS、 EXT2、EXT3等都属于文件系统。每个分区必须使用一种文件系统,才能存取数据。没有文件系统的分区是无法使用的。

# 1. 存储结构

FAT16 文件系统把存储卡的划分为几个区,包括 MBR 扇区、DBR 扇区、保留扇区、FAT表1、FAT表2、根目录和数据区,具体结构如图所示,其实保留扇区包含 MBR 扇区,这里把 DBR 标志出来是为了强调它的重要性。

image

# 2. DBR 扇区

DBR区(DOS BOOT RECORD)即操作系统引导记录区的意思,也称为引导扇区或启动扇区。它记录了存储卡的所有重要信息,一共512个字节,其结构如图

image

字节位移 字段长度(字节) 字段名称
0x00 3 跳转指令(Jump Instruction)
0x03 8 OEM ID
0x0B 25 BPB
0x24 26 扩展BPB
0x3E 448 引导程序代码(Bootstrap Code)
0x01FE 4 扇区结束标识符(0xAA55)

# 3. FAT 表总览

image

# 4. FAT 初始化

image

# 5. 创建文件

image

# 6. 读文件

image

# 7. 写文件

image

上次更新: 2024/6/3 14:54:44
第3章 SSD存储介质:闪存
FAT32文件系统

← 第3章 SSD存储介质:闪存 FAT32文件系统→

Theme by Vdoing | Copyright © 2023-2024 霜晨月
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式