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

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

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

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

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

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

SD 卡底层驱动接口层的程序模块包括SD 卡初始化程序和SD 卡数据读写程序。(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 卡单块数据的写操作过程与单块数据的读操作过程类似。

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

我要反馈