STM32F407单片机内部flash空间比较小,所以内部flash的数据组织形式为FAT12格式;
移植过程需要用到的知识为 FATFS文件系统源码包,FAT12文件格式。这两方面具体知识,自行百度,这里不再介绍。
切入正题,进行具体的文件系统移植。
一、修改ffconf.h文件
二、修改diskio.c文件
(1)、disk_status函数,返回磁盘状态,直接返回0;
(2)、disk_initialize函数,初始化磁盘,直接返回0
(3)、disk_read函数,读磁盘扇区数据
(4)、disk_write函数,将数据写入磁盘扇区
(5)、disk_ioctl函数,控制磁盘指定特性函数
三、将Flash格式化成FAT12格式
该部分需要注意的是,FAT12格式化的数据内容必须正确,否则会导致Flash磁盘挂载不上。(这部分圈起来划重点啦,网上找不到第二例这么详细的,哈哈。。。)
(1)按照FAT12文件格式定义一个FAT12数据结构体;
(2)将结构体数据变量进行初始化,并且写入0x08060000地址,也就是stm32F407 Flash中第7个扇区,文件系统大小为100KB;
四、文件系统操作测试
测试结果:
(1)、引导扇区(0x08060000)
(2)、FAT1表(0x08060200)
(3)、FAT2表(0x08061400)
(4)、根目录(0x08062600)
(5)、数据区(0x08064200)
至此,文件系统移植完毕。(为了省时间直接从word文档拷贝过来的,没排版好,各位见谅!)