1.参考spiffs中的vfs的调用,实现类flash实现spi调用W25QXX
如
至于return hal_spiflash_read((hal_partition_t)SPIFFS_CFG_PARTITION, addr, dst, size);的实现就是SPI W25QXX的细节了(走了好多弯路,这个感觉就是硬件实现了...)
2.flash分配中增加
2.1把HAL_PARTITION_SPIFFS的参数值定义,主要是HAL_FLASH_SPI这个不同,其他的好理解
3.第三步就是修改结构体
3.1增加一个附加参数变量
4.在初始化spi时,传递spi设备指针
5.当然得根据需要修改spiffs中的几个宏定义(其实我觉得真心不必要,可以在spiffs_vfs.c中看到,其实就是初始化的时候调用了,完全可以声明成变量或者修改hal_logic_partition_t结构体让其容纳更多flash参数
5.1这个是告诉spiffs使用flash总大小
5.2这个是一次擦除大小
5.3这个是写数据时的大小(因为spi限制每次写1页256Byte)
5.4这个是块大小,我的理解为就是spiffs一次性操作的大小,理解为W25QXX擦除1个扇区4k或者多个扇区32k或者多个扇区64k的东西
6.我遇到的最多的问题就是spi操作W25QXXX的函数没写好,导致spiffs初始化老是报错,大家多排查
7.然后就是在终端输入aos make menuconfig找到ulog打开输入到文件
8.重新编译就能看到效果了...
9.ulog中还发现个问题就是不能打开Async,否则调试串口输出的LOGD和LOGI就有问题咯