I am working on usb device controller for i.mx rt1064. I have successful implemented the same controller for i.mx 6ull which has the same operational model as i.mx rt1064 (based on the Reference Manual). However I am struggling with sending data from the device to the host on i.mx RT1064 platform.
If I use a DTCM memory to allocate endpoint queue head (dQH) and endpoint transfer descriptor(dTD), the controller is able to receive and save setup buffer to the allocated memory (ex. GET_DEVICE_DESCRIPTOR). The problem occurs when the response is transmitted to the host. The controller does not change the ENDCOMPLETE register and data is not transferred to the host. I have tracked packets using wireshark.
The same software works correctly on i.mx 6ull platform.
Moreover I have tried to allocate dQH and dTD in OCRAM2 memory instead of DTCM. The USB controller has not even received setup buffer then. Therefore I suppose that problem is related to the memory.
Can you give me an advise where is the best place to allocate dQH and dTD on i.mx rt1064 ?
Is the cache memory default switch on for OCRAM2?