OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8910|回复: 7

stm32f103片内flash上fatfs文件系统

[复制链接]

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2017-8-25
在线时间
23 小时
发表于 2017-9-18 19:42:50 | 显示全部楼层 |阅读模式
本帖最后由 zhuzhutang 于 2017-9-18 19:42 编辑

      最近在学习fatfs文件系统,了解了FAT文件格式的基本知识,也用了fatfs来管理格式化为fat32的SD卡的数据,后来想想,能不能在单片机内部的flash也上一个fatfs系统呢,先不考虑flash擦除寿命的问题,这种想法权当拿来练手。
      然后查了一下资料,确实已经有人已经实现了,但是所给出的资料不多。于是开始按照前一段时间搞的SD+fatfs的经验,开始着手将fatfs移植到stm32f103rct6来管理其内部的flash,如果你做过SD+fatfs的话,其实在单片机内部flash里搞fatfs还是挺简单的(别喷,纯粹个人观点,也许是本人水平还不够,未达到那个点上),不过因为单片机内部flash空间比较小,所以内部flash的数据组织形式为FAT12格式。

     MCU:stm32f103rct6, 256Kflash。
    文件系统格式:FAT12,1扇区=512字节,1簇=1扇区。

     首先你得将单片机内部的flash"格式化"为FAT12格式,其实就是编写引导扇区DBR啦。本来想在网上找个软件将我的SD卡格式化成FAT12格式的(100K空间大小),无奈FAT12实在太古老了,找了N久都没找到,最低的也是FAT16的。没办法,只能自己搞一个FAT12的DBR出来了。其实FAT12格式的引导扇区要改的东西不多,也就是BPB_BytesPerSec(每扇区字节数)、BPB_SecPerClus(BPB_SecPerClus)、BPB_TotSec16(扇区总数)等一些重要的参数而已。不过我的BPB_FATSz16(每个FAT表所占扇区数)采用默认的0x09,没有去改它,我不大确定这个是否需要根据具体容量大小来改,因为我在网上找的资料都说FAT表占据1到18扇区,如果改了的话那就不是这个扇区范围内了。如有道友知道,烦请告知一下
       附件中有我划好了100K flash空间的bin文件,我把单片机内部的0x0801000地址开始的后面100K空间大小由FATFS系统管理,将flash"格式化"为FAT12,其实就是将这个bin文件烧录到0x0801000地址中,0x0801000地址的前512个字节就是引导扇区内容,fatfs在挂载设备时会读取设备逻辑扇区0的内容(前512个字节),以获得文件系统所需的信息,如信息非法,人家就不让你挂载进去,所以有些童鞋说设备老是挂载不成功,这时你可以跟一下这些函数:f_mount->find_volume->check_fs,check_fs这个函数就是读取你的引导扇区内容的,看一下读取的信息对不对吧。

       记录到此,继续搬砖!

source.zip

14.81 KB, 下载次数: 564

参考源文件

FAT12文件格式快速入门.zip

50.73 KB, 下载次数: 563

说明文档

FAT12_100K.zip

701 Bytes, 下载次数: 465

bin文件

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2017-9-18 20:50:07 | 显示全部楼层
回复 支持 反对

使用道具 举报

8

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2017-4-5
在线时间
15 小时
发表于 2017-9-20 15:26:36 | 显示全部楼层
我也在学习相关内容,楼主加油啊!
回复 支持 反对

使用道具 举报

0

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2017-9-4
在线时间
49 小时
发表于 2017-10-13 02:15:51 来自手机 | 显示全部楼层
你好,我在学这方面的,可以请教一下吗,加下179219346
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-9-10
在线时间
2 小时
发表于 2019-9-10 09:25:01 | 显示全部楼层
谢谢!!!!!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2021-9-6
在线时间
5 小时
发表于 2021-9-27 11:00:08 | 显示全部楼层

你好,可以请教一下吗,1297206967,谢谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2021-9-27
在线时间
2 小时
发表于 2021-9-27 11:08:08 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
259
金钱
259
注册时间
2019-5-23
在线时间
71 小时
发表于 2024-5-21 09:04:02 | 显示全部楼层
你好 写接口如果按照4字节写入,读接口是不是也要按照4字节读出?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 19:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表