硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1949|回复: 8
收起左侧

[FatFs] SFTM32F4 FATFS 写入速度测试

[复制链接]

27

主题

272

回帖

353

积分

高级会员

积分
353
发表于 2021-11-11 10:41:12 | 显示全部楼层 |阅读模式
本帖最后由 suozhang 于 2021-11-11 12:29 编辑

file write speed 2532 KB/s. 每次写入4KB
file write speed 1079 KB/s. 每次写入1KB

问题: 此速度不知是否正常 ,大家 测试的速度都是咋样的?

测试代码,按照 一次4KB 的 方式写入的 :
  1. uint32_t f_mkfs_buff[1024];    // 格式化缓冲区
  2. FIL test_file;
复制代码


  1. static void fafts_file_test( void )
  2. {
  3.        
  4.         uint32_t i = 0 ;
  5.        
  6.         uint32_t start_tick, end_tick;
  7.        
  8.         uint8_t result = FR_OK;
  9.        
  10.         UINT bw = 0;
  11.        
  12.         start_tick = xTaskGetTickCount();
  13.         log("file write 4MB test start tick:%u.\r\n", start_tick );
  14.        
  15.         result = f_open(&test_file, "0:/armfly.txt", FA_OPEN_ALWAYS | FA_WRITE);
  16.        
  17.         for( i=0; i<1024; i++ )
  18.         {
  19.                
  20.                 result = f_write(&test_file, f_mkfs_buff, sizeof(f_mkfs_buff), &bw);
  21.                
  22.                 if (result != FR_OK)
  23.                 {
  24.                         log("armfly.txt write error %d.\r\n", result );
  25.                         break;
  26.                 }
  27.         }

  28.         f_close(&test_file);
  29.        
  30.         end_tick = xTaskGetTickCount();
  31.         log("file write 4MB test end tick:%u.\r\n", end_tick );

  32.         log("file write speed %u KB/s.\r\n", 4096*1024/(end_tick-start_tick) );
  33.        
  34.         result = f_open(&test_file, "0:/armfly.txt", FA_OPEN_ALWAYS | FA_READ);
  35.         memset( f_mkfs_buff, 0, sizeof(f_mkfs_buff) );
  36.         result = f_read(&test_file, f_mkfs_buff, sizeof(f_mkfs_buff), &bw);
  37.        
  38.         if (result == FR_OK)
  39.         {
  40.                 log( "armfly.txt read success.\r\n" );
  41.         }
  42.         else
  43.         {
  44.                 log("armfly.txt read error %d.\r\n", result );
  45.         }
  46.        
  47.         f_close(&test_file);
  48. }
复制代码



测试背景:

软件 : CUBEMX  6.2.1 , STM32F407ZGTx ,  SDIO-DMA, FATFS R0.12C

下载.png
下载 (1).png





回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
发表于 2021-11-11 11:13:31 | 显示全部楼层

加大到每次32或者64KB试试
class10的话,F4系列能差不多整到8-10MB
H7差不多13MB

回复

使用道具 举报

27

主题

272

回帖

353

积分

高级会员

积分
353
 楼主| 发表于 2021-11-16 23:01:32 | 显示全部楼层
换个 SD 卡 ,居然 有 6MB/s , 新的 SD卡 也是 class 10, 可能第一个是假货! 害得我 查了半天代码。
QQ图片20211116225952.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
发表于 2021-11-17 07:34:53 | 显示全部楼层
suozhang 发表于 2021-11-16 23:01
换个 SD 卡 ,居然 有 6MB/s , 新的 SD卡 也是 class 10, 可能第一个是假货! 害得我 查了半天代码。

SD卡最好用JD的自营店买,靠谱很多。

回复

使用道具 举报

7

主题

46

回帖

67

积分

初级会员

积分
67
发表于 2021-11-30 12:10:21 | 显示全部楼层
STM32H7   400MHz  开ICACHE  开DCACHE  用的HAL_SD库,没有优化为寄存器方式
512字节:  写入515KB/S,读出1.8MB/S
4K字节:   写入2.6MB/S,读出3.1MB/S
64K字节:  写入9.3MB/S,读出10.9MB/S

回复

使用道具 举报

27

主题

272

回帖

353

积分

高级会员

积分
353
 楼主| 发表于 2021-12-1 10:53:23 | 显示全部楼层
shzdf123 发表于 2021-11-30 12:10
STM32H7   400MHz  开ICACHE  开DCACHE  用的HAL_SD库,没有优化为寄存器方式
512字节:  写入515KB/S,读 ...

  STM32F4 内存 没有 STM32H7 阔绰
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
发表于 2021-12-1 11:21:17 | 显示全部楼层
shzdf123 发表于 2021-11-30 12:10
STM32H7   400MHz  开ICACHE  开DCACHE  用的HAL_SD库,没有优化为寄存器方式
512字节:  写入515KB/S,读 ...

这个是开SDMMC的IDMA了,频繁操作的地方都是DMA在刷,所以初始化代码采用简配版的寄存器方式没有区别。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106405
QQ
发表于 2021-12-1 11:21:40 | 显示全部楼层
suozhang 发表于 2021-12-1 10:53
STM32F4 内存 没有 STM32H7 阔绰

64KB可以有。
回复

使用道具 举报

7

主题

46

回帖

67

积分

初级会员

积分
67
发表于 2021-12-1 14:53:12 | 显示全部楼层
我用的是FileX文件系统
status =  fx_media_open(&sdio_disk, "STM32_SDIO_DISK", fx_stm32_sd_driver, 0, media_memory, sizeof(media_memory));
media_memory这个缓存,是512字节,还是64K字节,测试后发现对速度没什么影响。
所以,我猜,512字节与64K字节的结果相差较大的主要原因是调用fx_file_write()产生的开销比较大。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-19 14:04 , Processed in 0.300850 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表