Page 1 of 1

Speed profiling using hal_serial_usb  Topic is solved

Posted: Wed Nov 07, 2018 7:54 pm
by sabdulqadir
Hi All,
I have been testing the speed on hal_serial_usb, testing with different size for SERIAL_USB_BUFFERS_SIZE, SERIAL_USB_BUFFERS_NUMBER and the size of buffer which goes in chnWrite(&SDU2, (const uint8_t *)&test_buff, TEST_BUFFER_SIZE).
I realized what matters most is SERIAL_USB_BUFFERS_SIZE. I was able to squeeze 19MB/s from running the driver alone on STM32F723.

But there was one more parameter which changed the speed substantially to 29MB/s. That was increasing the size check in obqWriteTimeout() [hal_buffers.c]

Code: Select all

    /* Smaller chunks in order to not make the critical zone too long,
       this impacts throughput however.*/
    if (size > 64U) {
      /* Giving the compiler a chance to optimize for a fixed size move.*/
      memcpy(obqp->ptr, bp, 64U);
      bp        += 64U;
      obqp->ptr += 64U;
      w         += 64U;
    }

Do you guys think this parameter should be exposed so that it can be fine-tuned?

Thanks,
AQ

Re: Speed profiling using hal_serial_usb

Posted: Wed Nov 07, 2018 8:27 pm
by Giovanni
Hi,

Thanks for testing, probably yes, it should be exposed, moving this topic in "change request".

Giovanni

Re: Speed profiling using hal_serial_usb

Posted: Sun Dec 02, 2018 4:08 pm
by Giovanni
Hi,

A new setting has been added: BUFFERS_CHUNKS_SIZE. It applies to both obqWriteTimeout() and ibqReadTimeout(). The default is still 64.

Giovanni

Re: Speed profiling using hal_serial_usb

Posted: Fri Dec 14, 2018 10:24 pm
by sabdulqadir
Thanks Giovanni,
I do have a concern though. Should this change be pulled out to the configuration files? That way, the application would be able to fine tune this parameter.

Thanks,
AQ

Re: Speed profiling using hal_serial_usb

Posted: Sat Dec 15, 2018 7:47 am
by Giovanni
Hi,

You can put that definition in halconf.h, uncommon settings are not usually present in configuration files in order to keep those not too complex. You may recommend different defaults after your testing.

Giovanni