Hi everyone,
I have a custom board based on RT1064, usigned MCUXpresso 11.5.0 and SDK 2.11.0. The device executes the main program from SDRAM (32 MB) and it uses FreeRTOS, with the heap located on SDRAM.
On USB1 the RT1064 acts as a dual CDC device. Reading other posts, to make it work, I needed to define DATA_SECTION_IS_CACHEABLE=1 and to allocate usb device data structures on internal DTC memory (not cacheable) using USB_DMA_NONINIT_DATA_ALIGN( USB_DATA_ALIGN_SIZE ). The usb device is working properly.
On USB2 the device acts as a host connected on the board to a usb modem. If I run a simple test program (executing from internal flash memory and using FreeRTOS, with the heap located on internal DTC ram), is working properly: the modem is correctly enumerated and I can communicate with it, so the hardware connections are ok.
But when the main program is executed I'm not able to enumerate the modem: I receive the kUSB_HostEventEnumerationFail error. I think the reason is related with the heap location: the same test program but with heap located on SDRAM can't even enumerate the modem.
Reading other posts I tried to define USB_HOST_CONFIG_BUFFER_PROPERTY_CACHEABLE=1: this way the modem is enumerated on USB2 host, but the dual CDC device on USB1 can't be enumerated on a PC.
How can I make both USB1 device and USB2 host work, using the heap located on SDRAM (and the USB data structures on internal DTC ram of course)?
Another question. When I compile with USB_HOST_CONFIG_BUFFER_PROPERTY_CACHEABLE=1, I receive the warning message "USB_HOST_CONFIG_BUFFER_PROPERTY_CACHEABLE is not supported.": why is there this message and the modem is enumerated and without USB_HOST_CONFIG_BUFFER_PROPERTY_CACHEABLE=1 the modem is not enumerated?
Many thanks
Biafra