U盘读写基础知识
来源:互联网 发布:企业名录数据库 编辑:程序博客网 时间:2024/06/12 18:56
U 盘(或者 SD 卡,下同)提供了若干个物理扇区用于数据存储,每个扇区大小通常是 512 字节。
由于计算机通常将 U 盘中的物理扇区组织为 FAT 文件系统,为了方便单片机通过 U 盘或者 SD 卡与计
算机之间交换数据,单片机也应该在 FAT 规范下通过文件的形式存取 U 盘中的数据。
一个 U 盘中可以有若干个文件,每个文件都是一组数据的集合,以文件名区分和识别。实际文件
数据的存放可能不是连续的,而是通过一组“指针”链接的多个块(也就是分配单元或者簇),从而
能够根据需要随时增大文件长度以容纳更多数据。目录(文件夹)是为了便于分类管理,管理者可以
人为指定将多个文件归档在一起,例如 2004 年的文件归到一个目录(文件夹)中。
在 FAT 文件系统中,磁盘容量以簇为基本单位进行分配,而簇的大小总是扇区的倍数,所以文件
的占用空间总是簇的倍数,也是扇区的倍数。虽然文件占用的空间是簇或者扇区的倍数,但是在实际
应用中,保存在文件中的有效数据的长度却不一定是扇区的倍数,所以 FAT 文件系统在文件目录信息
FAT_DIR_INFO 中专门记录了当前文件中有效数据的长度,即有效数据的字节数,也就是通常所说的
文件长度,文件长度总是小于或者等于文件占用的空间。
无法读出超过文件长度的数据,虽然数据实际存在。
如果数据量少或者数据不连续,那么可以在每次追加数据后立即更新文件目录信息中的文件长
度,但是,如果数据量大并且需要连续写入数据,立即更新文件目录信息会降低效率,并且频繁修改
文件目录信息也会缩短 U 盘中闪存的使用寿命(因为闪存只能进行有限次擦写),所以在这种情况下,
应该在连续写入多组数据后再更新一次文件目录信息中的文件长度,或者一直等到关闭文件时再更新
文件长度,CMD_FILE_CLOSE 命令可以将内存中的文件长度刷新到 U 盘文件的文件目录信息中。
虽然 CH376 最大支持 1GB 的单个文件,但是为了提高效率,建议单个文件的长度不要超过 100MB,
通常在几 KB 到几 MB 范围是比较正常的,数据较多时可以分多个目录,分多个文件存储
由于计算机通常将 U 盘中的物理扇区组织为 FAT 文件系统,为了方便单片机通过 U 盘或者 SD 卡与计
算机之间交换数据,单片机也应该在 FAT 规范下通过文件的形式存取 U 盘中的数据。
一个 U 盘中可以有若干个文件,每个文件都是一组数据的集合,以文件名区分和识别。实际文件
数据的存放可能不是连续的,而是通过一组“指针”链接的多个块(也就是分配单元或者簇),从而
能够根据需要随时增大文件长度以容纳更多数据。目录(文件夹)是为了便于分类管理,管理者可以
人为指定将多个文件归档在一起,例如 2004 年的文件归到一个目录(文件夹)中。
在 FAT 文件系统中,磁盘容量以簇为基本单位进行分配,而簇的大小总是扇区的倍数,所以文件
的占用空间总是簇的倍数,也是扇区的倍数。虽然文件占用的空间是簇或者扇区的倍数,但是在实际
应用中,保存在文件中的有效数据的长度却不一定是扇区的倍数,所以 FAT 文件系统在文件目录信息
FAT_DIR_INFO 中专门记录了当前文件中有效数据的长度,即有效数据的字节数,也就是通常所说的
文件长度,文件长度总是小于或者等于文件占用的空间。
在对文件写入数据后,如果是覆盖了原数据,那么文件长度可能不发生变化,当超过原文件长度后,
变为追加数据,那么文件长度应该发生变化(增大)。如果向文件追加数据后,没有修改文件目
录信息中的文件长度,那么 FAT 文件系统会认为超过文件长度的数据是无效的,正常情况下,计算机无法读出超过文件长度的数据,虽然数据实际存在。
如果数据量少或者数据不连续,那么可以在每次追加数据后立即更新文件目录信息中的文件长
度,但是,如果数据量大并且需要连续写入数据,立即更新文件目录信息会降低效率,并且频繁修改
文件目录信息也会缩短 U 盘中闪存的使用寿命(因为闪存只能进行有限次擦写),所以在这种情况下,
应该在连续写入多组数据后再更新一次文件目录信息中的文件长度,或者一直等到关闭文件时再更新
文件长度,CMD_FILE_CLOSE 命令可以将内存中的文件长度刷新到 U 盘文件的文件目录信息中。
虽然 CH376 最大支持 1GB 的单个文件,但是为了提高效率,建议单个文件的长度不要超过 100MB,
通常在几 KB 到几 MB 范围是比较正常的,数据较多时可以分多个目录,分多个文件存储
阅读全文
0 0
- U盘读写基础知识
- MQX 读写U盘
- U盘读写模块 单片机读写U盘
- Mac U盘读写问题
- 51单片机读写U盘 430单片机读写U盘 U盘读写设备
- 单片机控制U盘 单片机读写U盘 高速U盘读写模块
- 单片机读写U盘的模块 USB118
- 读写U盘(FAT32)引导扇区
- 如何让单片机轻松读写U盘
- ZedBoard学习(3)U盘读写
- 如何加快U盘读写速度
- IPad读写U盘的解决方案
- 读写U盘(FAT32)引导扇区
- STM32F107 USB otg U盘读写
- linux之U盘读写速度测试
- android 识别U盘以及读写文件
- 读写U盘(FAT32)引导扇区
- Android OTG-U盘文件读写
- 使用go写了一个简单ini解析器
- Redis之 集合(Sets)
- 小周seo:百度是怎么判断那些是优质内容
- android 解决oppoR9s只请求一次联网权限问题
- Leetcode:628. Maximum Product of Three Numbers
- U盘读写基础知识
- opencv寻找已知物体
- extern关键词
- JQuery(3)--冒泡效果
- 综合性18道面试官必问经典Java面试题!
- X
- Java第一章练习习题
- [001]ccs5.3环境配置及第一个程序
- Android中图片压缩分析(上)