首页 理论教育 移植FAT32文件系统的方法与步骤

移植FAT32文件系统的方法与步骤

时间:2026-01-22 理论教育 眠眠 版权反馈
【摘要】:FAT32 文件系统相对FAT 系列的前期文件系统,提高了磁盘的利用率,磁盘管理能力得到很大改善。SD 卡与FAT32 文件系统的结合能实现对数据更为高效的管理,FAT32文件系统为应用程序提供打开、读写等抽象接口,实现按名存取文件,使用户脱离存储设备的底层驱动。本书使用FAT32 文件系统实现对存储空间的管理。

FAT32 文件系统相对FAT 系列的前期文件系统,提高了磁盘的利用率,磁盘管理能力得到很大改善。SD 卡与FAT32 文件系统的结合能实现对数据更为高效的管理,FAT32文件系统为应用程序提供打开、读写等抽象接口,实现按名存取文件,使用户脱离存储设备的底层驱动。本书使用FAT32 文件系统实现对存储空间的管理。文件系统的软件结构一般分为三个层次:①底层驱动接口层,实现对SD 卡底层的驱动;②中间层,是文件系统的核心部分,实现FAT 文件的读/写协议,移植时需要包含其头文件;③应用接口层,提供了一系列的接口函数供给用户调用。FAT32 文件系统移植需要做的是编写驱动层的接口函数,实现FAT32 文件系统与SD 卡的挂接,移植好后就可以直接调用FAT32 提供的接口函数方便地对文件进行各种操作(杨春桃,2014)。

图示

图10-19 三维电子罗盘数据采集程序流程图

SD 卡底层驱动接口层的程序模块包括SD 卡初始化程序和SD 卡数据读写程序。(https://www.xing528.com)

(1)SD 卡的初始化

在SD 卡能实现读写数据之前,必须通过SD 卡的操作命令和操作时序对SD 卡进行正确的初始化。正确连接硬件后,系统上电,微控制器发送74 个时钟周期,完成上电的延时过程,SD 卡缺省进入SD 模式。接着,发送复位命令(CMD0),复位SD 卡,并读取SD卡的应答信号。如果这时片选信号CS 为高电平态,SD 卡将保持SD 模式,当将CS 置为低电平,则SD 卡进入SPI 模式。SD 卡工作于何种工作模式会向微控制器发出相应的应答信号,当微控制器收到的应答信号为01 时,表明SD 卡已进入SPI 模式。此后,微控制器不断地向SD 卡发送初始化命令CMD1,并不断读取SD 卡的应答信号。当SD 卡初始化过程结束时,SD 卡将发出00 应答信号通知微控制器,其已成功激活,可以继续发出命令。完成初始化后,便可读取SD 卡的各寄存器。SD 规范要求主机在进行任何请求之前先发送一条初始化命令,即先向SD 卡发送命令CMD55。发送ACMD41 命令获取卡操作条件寄存器OCR 的信息,判断当前电压是否在SD 卡的允许工作范围内;发送CMD10 命令,微控制器可以获知卡识别寄存器CID 中包括厂商ID、卡的版本等信息;所使用的卡的容量,支持的命令集等相关信息是在卡的CSD 寄存器中,微控制器可通过发送CMD9 命令获得;此外,对数据块的读、写长度设置,微控制器可通过发送CMD16 命令进行,这里设置数据块为512 字节。此时,SD 已进入传输状态,可进行读写等操作。

(2)SD 卡数据读写

在SD 卡与控制器的通信过程中,微控制器为主机,SD 卡的所有的操作均根据微控制器发出的相应命令进行。微控制器通过发送CMD17/CMD18 命令进行单块/多块数据的读操作,通过发送CMD24/CMD25 进行单块/多块数据的写操作。进行单块数据读操作时。对于SD 卡数据读操作,微控制器向SD 卡发出CMD17 命令,并将起始字节作为参数,等待SD 卡发出应答信号。SD 卡验证微控制器发过来的字节地址,并以一个R1 作为应答,如果SD 卡的读取操作没有发生错误,则SD 卡向微控制器发出一个数据起始令牌。微控制器接收卡的响应R1,读数据起始令牌0xfe,接着开始接收数据,接收CRC 校验码,禁止片选,按照SD 卡的操作时序补充8 个时钟,之后,完成对单个数据块的读操作。SD 卡单块数据的写操作过程与单块数据的读操作过程类似。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈