Test performance USB + SD
This commit is contained in:
parent
ea82637e99
commit
22fe6de668
@ -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) {
|
||||
|
24
main.c
24
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));
|
||||
}
|
17
msc_app.c
17
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");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user