RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统

大概步骤在官网上的介绍已经说清楚了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下配置文件系统

RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统_第1张图片

 大概就是这样了,稍微学过英语就能大致看懂这些配置项,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 不能小于这个值。

RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统_第2张图片

③开启QSPI  在→ RT-Thread Components → Device Drivers配置

RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统_第3张图片

 ④需要配置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,打开工程编译下载 ,结果如下,可见初始化成功

RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统_第4张图片

⑥list_device 查看设备,出现了名为qspi1的SPI Bus总线类型设备和名为qspi10的SPI Device设备,W25Q256挂载在qspi10上,需要注意的是F767有qspi,而F4以及F1只有SPI,所以这里没有出现所谓的spi5和spi50设备,使用的是qspi1和qspi10,看到这样的结果别太奇怪。

RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统_第5张图片

 ⑦ 生成文件系统,使用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了

 

RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统_第6张图片

你可能感兴趣的:(RT-Thread在正点原子Apollo上为 QSPI FLASH W25Q256移植FATFS文件系统)