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 */
|
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);
|
sd_card_t *sd_card_p = sd_get_by_num(pdrv);
|
||||||
if (!sd_card_p) return RES_PARERR;
|
if (!sd_card_p) return RES_PARERR;
|
||||||
sd_card_detect(sd_card_p); // Fast: just a GPIO read
|
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(
|
DSTATUS SDIO_disk_initialize(
|
||||||
BYTE pdrv /* Physical drive number to identify the drive */
|
BYTE pdrv /* Physical drive number to identify the drive */
|
||||||
) {
|
) {
|
||||||
TRACE_PRINTF(">>> %s\n", __FUNCTION__);
|
// TRACE_PRINTF(">>> %s\n", __FUNCTION__);
|
||||||
|
|
||||||
bool ok = sd_init_driver();
|
bool ok = sd_init_driver();
|
||||||
if (!ok) return RES_NOTRDY;
|
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 */
|
LBA_t sector, /* Start sector in LBA */
|
||||||
UINT count /* Number of sectors to read */
|
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);
|
sd_card_t *sd_card_p = sd_get_by_num(pdrv);
|
||||||
if (!sd_card_p) {
|
if (!sd_card_p) {
|
||||||
TRACE_PRINTF("Error: !sd_card_p, pdrv: %d\n", pdrv);
|
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 */
|
LBA_t sector, /* Start sector in LBA */
|
||||||
UINT count /* Number of sectors to write */
|
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);
|
sd_card_t *sd_card_p = sd_get_by_num(pdrv);
|
||||||
if (!sd_card_p) return RES_PARERR;
|
if (!sd_card_p) return RES_PARERR;
|
||||||
int rc = sd_card_p->write_blocks(sd_card_p, buff, sector, count);
|
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 */
|
BYTE cmd, /* Control code */
|
||||||
void *buff /* Buffer to send/receive control data */
|
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);
|
sd_card_t *sd_card_p = sd_get_by_num(pdrv);
|
||||||
if (!sd_card_p) return RES_PARERR;
|
if (!sd_card_p) return RES_PARERR;
|
||||||
switch (cmd) {
|
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);
|
extern bool tuh_max3421_reg_write(uint8_t rhport, uint8_t reg, uint8_t data, bool in_isr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// USB Log
|
||||||
|
void log_to_usb(const char * message);
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// SD CARD
|
// SD CARD
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
@ -103,7 +106,7 @@ sd_card_t* sd_get_by_num(size_t num) {
|
|||||||
int main(void) {
|
int main(void) {
|
||||||
board_init();
|
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
|
// init host stack on configured roothub port
|
||||||
tuh_init(BOARD_TUH_RHPORT);
|
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) {
|
while (1) {
|
||||||
// tinyusb host task
|
// tinyusb host task
|
||||||
tuh_task();
|
tuh_task();
|
||||||
@ -146,6 +161,9 @@ int main(void) {
|
|||||||
led_blinking_task();
|
led_blinking_task();
|
||||||
cdc_app_task();
|
cdc_app_task();
|
||||||
hid_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
|
// Blinking Task
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
void led_blinking_task(void) {
|
void led_blinking_task(void) {
|
||||||
const uint32_t interval_ms = 1000;
|
const uint32_t interval_ms = 500;
|
||||||
static uint32_t start_ms = 0;
|
static uint32_t start_ms = 0;
|
||||||
|
|
||||||
static bool led_state = false;
|
static bool led_state = false;
|
||||||
@ -202,5 +220,5 @@ void log_to_sd(const char * chaine){
|
|||||||
f_sync(&fil_sdcard);
|
f_sync(&fil_sdcard);
|
||||||
current_time = get_absolute_time();
|
current_time = get_absolute_time();
|
||||||
printf("Ecrit: %d octets en %llu us\n", nb_char_written, current_time - start_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_buffer[0x1000]; // 4 ko
|
||||||
char big_big_buffer[0x10000]; // 16 ko
|
char big_big_buffer[0x10000]; // 16 ko
|
||||||
int nb_byte_written;
|
int nb_byte_written;
|
||||||
absolute_time_t current_time, start_time;
|
|
||||||
char filepath[50];
|
char filepath[50];
|
||||||
filepath[0] = drive_path[0];
|
filepath[0] = drive_path[0];
|
||||||
filepath[1] = ':';
|
filepath[1] = ':';
|
||||||
@ -113,14 +112,11 @@ bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_da
|
|||||||
size = 0;
|
size = 0;
|
||||||
big_big_buffer[0]= '\0';
|
big_big_buffer[0]= '\0';
|
||||||
while(size + strlen(buffer) < 0x10000){
|
while(size + strlen(buffer) < 0x10000){
|
||||||
strcat(big_buffer, buffer);
|
strcat(big_big_buffer, buffer);
|
||||||
size += strlen(buffer);
|
size += strlen(buffer);
|
||||||
}
|
}
|
||||||
log_to_usb(big_big_buffer);
|
log_to_usb(big_big_buffer);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
f_close(&fp);
|
|
||||||
printf("Fichier Poivron.txt cree avec succes\n");
|
printf("Fichier Poivron.txt cree avec succes\n");
|
||||||
|
|
||||||
return true;
|
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){
|
void log_to_usb(const char * message){
|
||||||
int nb_byte_written;
|
int nb_byte_written;
|
||||||
absolute_time_t current_time, start_time;
|
static int i=0;
|
||||||
start_time = get_absolute_time();
|
absolute_time_t current_time_us, start_time_us;
|
||||||
|
start_time_us = get_absolute_time();
|
||||||
FRESULT error;
|
FRESULT error;
|
||||||
if(file_accessible){
|
if(file_accessible){
|
||||||
error = f_write(&fp, message, strlen(message), &nb_byte_written);
|
error = f_write(&fp, message, strlen(message), &nb_byte_written);
|
||||||
@ -138,8 +135,9 @@ void log_to_usb(const char * message){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
f_sync(&fp);
|
f_sync(&fp);
|
||||||
current_time = get_absolute_time();
|
current_time_us = get_absolute_time();
|
||||||
printf("Ecrit: %d octets en %llu us\n", nb_byte_written, current_time - start_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)
|
void tuh_msc_umount_cb(uint8_t dev_addr)
|
||||||
{
|
{
|
||||||
file_accessible = false;
|
file_accessible = false;
|
||||||
|
f_close(&fp);
|
||||||
(void) dev_addr;
|
(void) dev_addr;
|
||||||
printf("A MassStorage device is unmounted\r\n");
|
printf("A MassStorage device is unmounted\r\n");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user