天天看点

AliOS Things外接W25Q128,使用ulog调用spiffs

1.参考spiffs中的vfs的调用,实现类flash实现spi调用W25QXX

AliOS Things外接W25Q128,使用ulog调用spiffs

至于return hal_spiflash_read((hal_partition_t)SPIFFS_CFG_PARTITION, addr, dst, size);的实现就是SPI W25QXX的细节了(走了好多弯路,这个感觉就是硬件实现了...)

2.flash分配中增加

AliOS Things外接W25Q128,使用ulog调用spiffs

2.1把HAL_PARTITION_SPIFFS的参数值定义,主要是HAL_FLASH_SPI这个不同,其他的好理解

3.第三步就是修改结构体

AliOS Things外接W25Q128,使用ulog调用spiffs

3.1增加一个附加参数变量

4.在初始化spi时,传递spi设备指针

AliOS Things外接W25Q128,使用ulog调用spiffs

5.当然得根据需要修改spiffs中的几个宏定义(其实我觉得真心不必要,可以在spiffs_vfs.c中看到,其实就是初始化的时候调用了,完全可以声明成变量或者修改hal_logic_partition_t结构体让其容纳更多flash参数

5.1这个是告诉spiffs使用flash总大小

AliOS Things外接W25Q128,使用ulog调用spiffs

5.2这个是一次擦除大小

AliOS Things外接W25Q128,使用ulog调用spiffs

5.3这个是写数据时的大小(因为spi限制每次写1页256Byte)

AliOS Things外接W25Q128,使用ulog调用spiffs

5.4这个是块大小,我的理解为就是spiffs一次性操作的大小,理解为W25QXX擦除1个扇区4k或者多个扇区32k或者多个扇区64k的东西

AliOS Things外接W25Q128,使用ulog调用spiffs

6.我遇到的最多的问题就是spi操作W25QXXX的函数没写好,导致spiffs初始化老是报错,大家多排查

7.然后就是在终端输入aos make menuconfig找到ulog打开输入到文件

8.重新编译就能看到效果了...

9.ulog中还发现个问题就是不能打开Async,否则调试串口输出的LOGD和LOGI就有问题咯

继续阅读