Hi,
I have some problems with USB host msd on imxrt1176.
I'am using the project 'evkmimxrt1170_host_msd_fatfs_freertos_cm7' of the SDK, but i have moved heap, stack, and global data to SDRAM.
As a know issue, when we put the heap on cached memory like OCRAM or SDRAM, much of the middleware does not function correctly. So i applied the corrections of the following link and it works:
https://community.nxp.com/t5/i-MX-RT-Knowledge-Base/Using-NonCached-Memory-on-i-MXRT/ta-p/1183369
But by activating cache with the macro “DATA_SECTION_IS_CACHEABLE=1”, the transfer becomes too slow, about 200Ko/S.
The original SDK project have a transfer speed of about 4Mo/S.
Is there any recommendations (solution) to maintain the speed and put the heap on the SDRAM at the same time?
Regards.
Hi
For this performance issue, it is caused by that the USB buffer was configured in a non-cache section in SDRAM, compared with TCM, the cpu and dma access the sdram will take more time, so the performance is substantially reduced. so we need to set the buffer to cacheable memory and configure the memory as shareable.
Hi @danielchen,
Thank you for the response, it will be great to have more details (sample project, tutorial...) for how to implement the solution.
I tried to implement it by this way but it doesn't work (enumeration failed):
The only solution that i have found to boost USB performances and keep heap on SDRAM was this patch (that was not validated from NXP team):
Here is a link of the patch:
https://community.nxp.com/t5/i-MX-RT/USB-Host-enumeration-fails/m-p/1436138
It will be great to have a confirmation for the patch.
Regards.