[牛人杂谈]

Petit FAT文件系统模块

[复制链接]
880|9
手机看帖
扫描二维码
随时随地手机跟帖
捉虫天师|  楼主 | 2019-1-27 12:05 | 显示全部楼层 |阅读模式
Petit FAT文件系统模块
Petit FatFs是用于微型8位微控制器的FatFs模块的子集。它的编写符合ANSI C并与磁盘I / O层完全分离。即使RAM大小小于扇区大小,它也可以集成到内存有限的微控制器中。此处还提供功能齐全的FAT文件系统模块。
特征
  • RAM消耗非常小(44字节工作区+特定堆栈)。
  • 代码大小非常小(2K-4K字节)。
  • FAT12,FAT16和FAT32。
  • 单卷和单个文件。
  • 流式文件读取。
  • 文件写入功能有一些限制。

应用界面
Petit FatFs模块提供以下功能。
  • pf_mount - 安装卷
  • pf_open - 打开文件
  • pf_read - 读取文件
  • pf_write - 写入文件
  • pf_lseek - 移动读/写指针
  • pf_opendir - 打开目录
  • pf_readdir - 读取目录项

磁盘I / O接口
由于Petit FatFs模块与磁盘I / O层完全分离,因此需要以下功能来降低层以从存储设备读取数据。低级磁盘I / O模块不是Petit FatFs模块的一部分,必须由用户提供。资源中也提供了示例驱动程序。
  • disk_initialize - 初始化存储设备
  • disk_readp - 读取部分扇区
  • disk_writep - 划分写入扇区

资源
Petit FatFs模块是一个免费软件,可用于教育,研究和开发。您可以出于个人,非营利或商业用途使用,修改和/或重新分发它,不受您的任何限制。有关详细信息,请参阅应用笔记。
  • FatFs用户论坛
  • 首先阅读:Petit FatFs模块应用说明 [size=0.7em]2014年6月10日
  • 下载:Petit FatFs R0.03 | 更新 | 补丁 [size=0.7em]2014年6月10日
  • 下载:各种平台的示例项目 [size=0.7em]2014年6月10日
  • 下载:旧版本
  • Microsoft的FAT32规范 ↗(FAT文件系统的参考文档)
  • 如何使用MMC / SDC
  • 基准测试3(通过USI获得MMC的ATtiny85 / 8MHz)


返回

捉虫天师|  楼主 | 2019-1-27 12:06 | 显示全部楼层
http://elm-chan.org/fsw/ff/00index_p.html

使用特权

评论回复
yiyigirl2014| | 2019-1-27 22:18 | 显示全部楼层
怎么跟硬件关联上?

使用特权

评论回复
yiy| | 2019-1-27 23:34 | 显示全部楼层
51也可以用啊, 牛。

使用特权

评论回复
huahuagg| | 2019-1-28 19:51 | 显示全部楼层
最基本的应用。

使用特权

评论回复
捉虫天师|  楼主 | 2019-1-28 21:45 | 显示全部楼层
好多年没更新了。

使用特权

评论回复
天灵灵地灵灵| | 2019-1-29 10:45 | 显示全部楼层
disk_initialize函数初始化磁盘驱动器。

DSTATUS disk_initialize(void)
返回值
磁盘状态以下列标志的组合返回。

STA_NOINIT
表示磁盘驱动器尚未初始化。此标志设置为:系统重置,磁盘删除和disk_initialize功能失败,并清除:disk_initialize()函数成功。
STA_NODISK
表示驱动器中没有介质。这始终在固定磁盘驱动器上清除。Petit FatFs不会引用此标志。
描述
所述disk_initialize()函数初始化的存储装置。如果函数成功,则清除返回值中的STA_NOINIT标志。

使用特权

评论回复
天灵灵地灵灵| | 2019-1-29 10:45 | 显示全部楼层
disk_readp函数读取设备的部分扇区。

DRESULT disk_readp(
  BYTE * buff,     / * [OUT]指向读缓冲区* /
  DWORD 扇区的指针,   / * [IN]读取扇区号* /
  UINT 偏移量,    / * [IN]扇区中的字节偏移量开始读取* /
  UINT count      / * [IN]要读取的字节数* /
);
参数
浅黄色
指向缓冲区的指针,用于存储读取的数据。如果给出NULL,则读取数据字节将被转发到输出流而不是内存。如何处理streamimg数据取决于每个项目。
扇形
指定要在逻辑块地址(LBA)中读取的扇区号。
抵消
指定要开始读取的扇区中的字节偏移量。该值可以是0到511。
计数
指定要读取的字节数。该值可以是0到512,offset + count不能超过512。
回报价值
RES_OK(0)
功能成功了。
RES_ERROR
磁盘读取操作期间发生硬错误,无法恢复。
RES_PARERR
无效的参数。
RES_NOTRDY
设备尚未初始化。

使用特权

评论回复
天灵灵地灵灵| | 2019-1-29 10:46 | 显示全部楼层
disk_writep函数将数据写入扇区。

DRESULT disk_writep(
  BYTE * buff,   / * [IN]指向要写入的数据的指针* /
  DWORD sc,     / * [IN]扇区号或wtite的字节数* /
);
参数
浅黄色
指向要写入扇区的数据的指针。如果给出NULL,则该函数启动/完成对扇区的写入事务。
SC
如果buff不是NULL,则指定要写入的字节的nubmer 。如果buff为NULL且sc不为零,则该函数启动对扇区的写入事务。如果 buff和sc为零,则函数最终确定当前扇区写入transactin。
回报价值
RES_OK(0)
功能成功了。
RES_ERROR
写入操作期间发生硬错误,无法恢复或介质被写保护。
RES_PARERR
无效的参数。
RES_NOTRDY
设备尚未初始化。
描述
扇区写操作按以下顺序完成。

disk_writep(0,sector_number); 启动扇区写入事务。
disk_writep(data,byte_to_write); 开始将数据写入扇区。
disk_writep(data,byte_to_write); 并且可以通过一次或多次调用将数据写入512字节。
disk_writep(data,byte_to_write); ...
disk_writep(0,0); 完成写入事务。如果发送的字节数小于512,则扇区中的左字节填充为零。
如果写入事务正在进行中,则disk_readp()函数将失败,disk_initialize()函数将完成当前写入事务。

备注
_USE_WRITE == 1时需要此功能。

使用特权

评论回复
玛尼玛尼哄| | 2019-1-29 15:42 | 显示全部楼层
需要以下功能来降低层以从存储设备读取数据

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

174

主题

2992

帖子

7

粉丝