mirror of
https://github.com/sakumisu/CherryUSB.git
synced 2025-05-07 15:36:55 +08:00
update(demo/usb_host): add fatfs speed test
Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
parent
577ebd0999
commit
5990e5c607
@ -25,6 +25,9 @@
|
||||
#ifndef TEST_USBH_MSC_FATFS
|
||||
#define TEST_USBH_MSC_FATFS 0
|
||||
#endif
|
||||
#ifndef TEST_USBH_MSC_FATFS_SPEED
|
||||
#define TEST_USBH_MSC_FATFS_SPEED 0
|
||||
#endif
|
||||
#ifndef TEST_USBH_AUDIO
|
||||
#define TEST_USBH_AUDIO 0
|
||||
#endif
|
||||
@ -159,7 +162,14 @@ delete:
|
||||
#if TEST_USBH_MSC_FATFS
|
||||
#include "ff.h"
|
||||
|
||||
#if TEST_USBH_MSC_FATFS_SPEED
|
||||
#define WRITE_SIZE_MB (128UL)
|
||||
#define WRITE_SIZE (1024UL * 1024UL * WRITE_SIZE_MB)
|
||||
#define BUF_SIZE (1024UL * 128UL)
|
||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_write_buffer[BUF_SIZE];
|
||||
#else
|
||||
USB_NOCACHE_RAM_SECTION USB_MEM_ALIGNX uint8_t read_write_buffer[25 * 100];
|
||||
#endif
|
||||
|
||||
USB_NOCACHE_RAM_SECTION FATFS fs;
|
||||
USB_NOCACHE_RAM_SECTION FIL fnew;
|
||||
@ -212,6 +222,64 @@ int usb_msc_fatfs_test()
|
||||
USB_LOG_RAW("open fail\r\n");
|
||||
goto unmount;
|
||||
}
|
||||
|
||||
#if TEST_USBH_MSC_FATFS_SPEED
|
||||
for (uint32_t i = 0; i < BUF_SIZE; i++) {
|
||||
read_write_buffer[i] = i % 256;
|
||||
}
|
||||
|
||||
USB_LOG_RAW("test fatfs write speed\r\n");
|
||||
res_sd = f_open(&fnew, "2:cherryusb_msc_test.bin", FA_OPEN_ALWAYS | FA_WRITE);
|
||||
if (res_sd == FR_OK) {
|
||||
uint32_t write_size = WRITE_SIZE;
|
||||
uint32_t start_time = (uint32_t)xTaskGetTickCount();
|
||||
while (write_size > 0) {
|
||||
res_sd = f_write(&fnew, read_write_buffer, BUF_SIZE, (UINT*)&fnum);
|
||||
if (res_sd != FR_OK) {
|
||||
printf("Write file failed, cause: %s\n", res_sd);
|
||||
goto unmount;
|
||||
}
|
||||
write_size -= BUF_SIZE;
|
||||
}
|
||||
if (res_sd == FR_OK) {
|
||||
uint32_t time_ms = xTaskGetTickCount() - start_time;
|
||||
USB_LOG_RAW("Fatfs write speed:%f MB/S\r\n", (WRITE_SIZE_MB * 1000 / (float)time_ms));
|
||||
} else {
|
||||
USB_LOG_RAW("write fail\r\n");
|
||||
goto unmount;
|
||||
}
|
||||
f_close(&fnew);
|
||||
} else {
|
||||
USB_LOG_RAW("open fail\r\n");
|
||||
goto unmount;
|
||||
}
|
||||
USB_LOG_RAW("test fatfs read speed\r\n");
|
||||
|
||||
res_sd = f_open(&fnew, "2:cherryusb_msc_test.bin", FA_OPEN_EXISTING | FA_READ);
|
||||
if (res_sd == FR_OK) {
|
||||
uint32_t write_size = WRITE_SIZE;
|
||||
uint32_t start_time = (uint32_t)xTaskGetTickCount();
|
||||
while (write_size > 0) {
|
||||
res_sd = f_read(&fnew, read_write_buffer, BUF_SIZE, (UINT*)&fnum);
|
||||
if (res_sd != FR_OK) {
|
||||
printf("Read file failed, cause: %s\n", res_sd);
|
||||
goto unmount;
|
||||
}
|
||||
write_size -= BUF_SIZE;
|
||||
}
|
||||
if (res_sd == FR_OK) {
|
||||
uint32_t time_ms = xTaskGetTickCount() - start_time;
|
||||
USB_LOG_RAW("Fatfs read speed:%f MB/S\r\n", (WRITE_SIZE_MB * 1000 / (float)time_ms));
|
||||
} else {
|
||||
USB_LOG_RAW("read fail\r\n");
|
||||
goto unmount;
|
||||
}
|
||||
f_close(&fnew);
|
||||
} else {
|
||||
USB_LOG_RAW("open fail\r\n");
|
||||
goto unmount;
|
||||
}
|
||||
#endif
|
||||
f_mount(NULL, "2:", 1);
|
||||
return 0;
|
||||
unmount:
|
||||
|
Loading…
x
Reference in New Issue
Block a user