|
硬件环境:SPI时钟是80M,使用DMA,2线Dual模式
软件环境:Read函数包括f_open,f_lseek, f_read,f_close4个函数
计时方式:在Read和memset函数打断点,分别记录系统定时器的tick的值(单位ms)
static uint8_t m_TestBuff[1000];
//读取根目录下的文件
Read("1:/test.txt", 0, m_TestBuff, 1000);
memset(m_TestBuff, 0, 1000);
//读取二级目录下的文件
Read("1:/202412/19/test.txt", 0, m_TestBuff, 1000);
memset(m_TestBuff, 0, 1000);
在fafts裸读测试3次,1000字节,lvgl任务中
1:/202412/19/test.txt:3ms,2ms,3ms
1:/test.txt:2ms,1ms,1ms
从上可以看出,多级目录影响还不是很大只是多个1,2个ms
fafts+levelx读测试3次,1000字节,lvgl任务中(在这之前已经进行过多个文件重复写操作了)
1:/202412/19/test.txt:358ms,352ms,357ms
1:/test.txt:6ms,6ms,4ms
从上可以看出,多级目录影响巨大,慢的离谱
奇怪是在格式化flash后,使用levelx只写入少量文件时,读的速度和裸读速度差不多,一旦进行过多个文件重复写操作后,读多级目录速度骤降
有没有大哥们分析一下是什么原因,有或者说有比levelx更好的平衡磨损的中间层
|
|