大概步骤在官网上的介绍已经说清楚了https://www.rt-thread.org/document/site/application-note/components/dfs/an0012-dfs/
其中有一些细节问题,这里再说一遍
①首先需要有一个stm32f767-atk-apollo的工程,在rtthread\bsp\stm32下有这个bsp包,进去后在env直接输入scons --dist可以生成一个dist目录,里边是一个独立的工程,修改这个工程不会改变我们rtthread源码,比较方便,且可以任意拖动和拷贝给其他人
②menuconfig 进入配置界面,在→ RT-Thread Components → Device virtual file system下配置文件系统
大概就是这样了,稍微学过英语就能大致看懂这些配置项,Enable elm-chan fatfs然后进入elm-chan's FatFs, Generic FAT Filesystem Module,这样配置,其他可以凭喜好,看官方的文档也能设置好,关键是(4096) Maximum sector size to be handled.W25Q256扇区大小为4k 4096Byte,这是最小操作区间,设置Maximum sector size 不能小于这个值。
③开启QSPI 在→ RT-Thread Components → Device Drivers配置
④需要配置libc,在→ RT-Thread Components → POSIX layer and C standard library下配置,
此时 → Hardware Drivers Config → Onboard Peripheral Drivers下的 Enable QSPI FLASH (W25Q256 qspi)也会自动打开,为防止没有自动选中,跳过去看一下
⑤保存配置推出,pkgs --upgrade后scons --target=mdk5,打开工程编译下载 ,结果如下,可见初始化成功
⑥list_device 查看设备,出现了名为qspi1的SPI Bus总线类型设备和名为qspi10的SPI Device设备,W25Q256挂载在qspi10上,需要注意的是F767有qspi,而F4以及F1只有SPI,所以这里没有出现所谓的spi5和spi50设备,使用的是qspi1和qspi10,看到这样的结果别太奇怪。
⑦ 生成文件系统,使用mkfs -t elm W25Q256命令,在W25Q256生成elm-fatfs文件系统,此时虽然生成了文件系统,但是并没有挂载到某个目录,且重启才会生成文件系统。
⑧ 在main函数中键入这段代码,我们将生成的文件系统挂载在根文件目录/下,官网所说的挂载在/spi下是因为事先工程中挂载了RomFS,里边有/spi目录。
rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT); if (dfs_mount("W25Q256", "/", "elm", 0, 0)==0) { rt_kprintf("spi flash mount to / !\n"); }else { rt_kprintf("spi flash mount to / error !\n"); }
结果如下,最后就可以enjoy 这个elm-fatfs了