From 22fe6de668b75dd64c7027c846c0f20a834c248d Mon Sep 17 00:00:00 2001 From: Samuel Date: Sat, 19 Jul 2025 12:56:07 +0200 Subject: [PATCH] Test performance USB + SD --- diskio_SDIO.c | 10 +++++----- main.c | 24 +++++++++++++++++++++--- msc_app.c | 17 ++++++++--------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/diskio_SDIO.c b/diskio_SDIO.c index dbeddbf..6b3f049 100644 --- a/diskio_SDIO.c +++ b/diskio_SDIO.c @@ -36,7 +36,7 @@ specific language governing permissions and limitations under the License. DSTATUS SDIO_disk_status(BYTE pdrv /* Physical drive number to identify the drive */ ) { - TRACE_PRINTF(">>> %s\n", __FUNCTION__); + // TRACE_PRINTF(">>> %s\n", __FUNCTION__); sd_card_t *sd_card_p = sd_get_by_num(pdrv); if (!sd_card_p) return RES_PARERR; sd_card_detect(sd_card_p); // Fast: just a GPIO read @@ -50,7 +50,7 @@ DSTATUS SDIO_disk_status(BYTE pdrv /* Physical drive number to identify the driv DSTATUS SDIO_disk_initialize( BYTE pdrv /* Physical drive number to identify the drive */ ) { - TRACE_PRINTF(">>> %s\n", __FUNCTION__); + // TRACE_PRINTF(">>> %s\n", __FUNCTION__); bool ok = sd_init_driver(); if (!ok) return RES_NOTRDY; @@ -96,7 +96,7 @@ DRESULT SDIO_disk_read(BYTE pdrv, /* Physical drive number to identify the driv LBA_t sector, /* Start sector in LBA */ UINT count /* Number of sectors to read */ ) { - TRACE_PRINTF(">>> %s\n", __FUNCTION__); + // TRACE_PRINTF(">>> %s\n", __FUNCTION__); sd_card_t *sd_card_p = sd_get_by_num(pdrv); if (!sd_card_p) { TRACE_PRINTF("Error: !sd_card_p, pdrv: %d\n", pdrv); @@ -117,7 +117,7 @@ DRESULT SDIO_disk_write(BYTE pdrv, /* Physical drive number to identify the driv LBA_t sector, /* Start sector in LBA */ UINT count /* Number of sectors to write */ ) { - TRACE_PRINTF(">>> %s\n", __FUNCTION__); + // TRACE_PRINTF(">>> %s\n", __FUNCTION__); sd_card_t *sd_card_p = sd_get_by_num(pdrv); if (!sd_card_p) return RES_PARERR; int rc = sd_card_p->write_blocks(sd_card_p, buff, sector, count); @@ -134,7 +134,7 @@ DRESULT SDIO_disk_ioctl(BYTE pdrv, /* Physical drive number (0..) */ BYTE cmd, /* Control code */ void *buff /* Buffer to send/receive control data */ ) { - TRACE_PRINTF(">>> %s\n", __FUNCTION__); + // TRACE_PRINTF(">>> %s\n", __FUNCTION__); sd_card_t *sd_card_p = sd_get_by_num(pdrv); if (!sd_card_p) return RES_PARERR; switch (cmd) { diff --git a/main.c b/main.c index e7a374f..f72623d 100644 --- a/main.c +++ b/main.c @@ -46,6 +46,9 @@ extern uint8_t tuh_max3421_reg_read(uint8_t rhport, uint8_t reg, bool in_isr); extern bool tuh_max3421_reg_write(uint8_t rhport, uint8_t reg, uint8_t data, bool in_isr); #endif +// USB Log +void log_to_usb(const char * message); + //--------------------------------------------------------------------+ // SD CARD //--------------------------------------------------------------------+ @@ -103,7 +106,7 @@ sd_card_t* sd_get_by_num(size_t num) { int main(void) { board_init(); - printf("TinyUSB Host CDC MSC HID Example\r\n"); + printf("TinyUSB Host CDC MSC HID Example - test comparatif\r\n"); // init host stack on configured roothub port tuh_init(BOARD_TUH_RHPORT); @@ -139,6 +142,18 @@ int main(void) { } + + + const char buffer[]= "Ceci est le test de Poivron Robotique\n"; + char big_big_buffer[0x10000]; // 16 ko + + int size = 0; + big_big_buffer[0]= '\0'; + while(size + strlen(buffer) < 0x10000){ + strcat(big_big_buffer, buffer); + size += strlen(buffer); + } + while (1) { // tinyusb host task tuh_task(); @@ -146,6 +161,9 @@ int main(void) { led_blinking_task(); cdc_app_task(); hid_app_task(); + log_to_sd(big_big_buffer); + log_to_usb(big_big_buffer); // à commenter pour obtenir un test juste sur la carte SD.(ou simplement ne pas brancher de clé USB) + } } @@ -174,7 +192,7 @@ void tuh_umount_cb(uint8_t dev_addr) { // Blinking Task //--------------------------------------------------------------------+ void led_blinking_task(void) { - const uint32_t interval_ms = 1000; + const uint32_t interval_ms = 500; static uint32_t start_ms = 0; static bool led_state = false; @@ -202,5 +220,5 @@ void log_to_sd(const char * chaine){ f_sync(&fil_sdcard); current_time = get_absolute_time(); printf("Ecrit: %d octets en %llu us\n", nb_char_written, current_time - start_time); - printf(">vitesse(Mo/s):%d:%.1f\n", i++, (float)(nb_char_written) / (float)(current_time - start_time)); + printf(">sd(Mo/s):%d:%.3f\n", (int)(current_time/1000), (float)(nb_char_written) / (float)(current_time - start_time)); } \ No newline at end of file diff --git a/msc_app.c b/msc_app.c index 75a4a12..9901af4 100644 --- a/msc_app.c +++ b/msc_app.c @@ -83,7 +83,6 @@ bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_da char big_buffer[0x1000]; // 4 ko char big_big_buffer[0x10000]; // 16 ko int nb_byte_written; - absolute_time_t current_time, start_time; char filepath[50]; filepath[0] = drive_path[0]; filepath[1] = ':'; @@ -113,14 +112,11 @@ bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_da size = 0; big_big_buffer[0]= '\0'; while(size + strlen(buffer) < 0x10000){ - strcat(big_buffer, buffer); + strcat(big_big_buffer, buffer); size += strlen(buffer); } log_to_usb(big_big_buffer); - - - f_close(&fp); printf("Fichier Poivron.txt cree avec succes\n"); return true; @@ -128,8 +124,9 @@ bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_da void log_to_usb(const char * message){ int nb_byte_written; - absolute_time_t current_time, start_time; - start_time = get_absolute_time(); + static int i=0; + absolute_time_t current_time_us, start_time_us; + start_time_us = get_absolute_time(); FRESULT error; if(file_accessible){ error = f_write(&fp, message, strlen(message), &nb_byte_written); @@ -138,8 +135,9 @@ void log_to_usb(const char * message){ return; } f_sync(&fp); - current_time = get_absolute_time(); - printf("Ecrit: %d octets en %llu us\n", nb_byte_written, current_time - start_time); + current_time_us = get_absolute_time(); + printf("Ecrit: %d octets en %llu us\n", nb_byte_written, current_time_us - start_time_us); + printf(">usb(Mo/s):%d:%f\n", (int) (current_time_us/1000), (float)(nb_byte_written) / (float)(current_time_us - start_time_us)); } } @@ -155,6 +153,7 @@ void tuh_msc_mount_cb(uint8_t dev_addr) void tuh_msc_umount_cb(uint8_t dev_addr) { file_accessible = false; + f_close(&fp); (void) dev_addr; printf("A MassStorage device is unmounted\r\n"); }