USB HOST task causing display slowness issue

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

USB HOST task causing display slowness issue

1,774 次查看
Gangapavan
Contributor II

 

I am using the iMXRT1060 board for my project. We faced an issue with display slowness when the USB Host task is enabled. The USB Host supports a keyboard, MSD, CDC, and USB hub. Even though we haven't connected any USB devices, the display slows down when the USB Host task is uncommented. However, when the USB Host task is disabled, the system runs fast.

Any suggestions for trouble shooting this issue?

标签 (1)
0 项奖励
回复
2 回复数

1,748 次查看
Gavin_Jia
NXP TechSupport
NXP TechSupport

Hi @Gangapavan ,

Thanks for your interest in NXP MIMXRT series!

On your system, even if there is no USB device connected, Host may be performing some polling and such tasks, potentially affecting your display tasks. If it's okay to check the respective priorities, consider putting the display in the RAM and executing the USB buffers and functions in SDRAM, which should effectively avoid resource competition between the two.

Best regards,
Gavin

 

0 项奖励
回复

1,733 次查看
Gangapavan
Contributor II

Hi @Gavin_Jia ,

Thanks for the reply.

The task is blocking at the following point and remains inactive when no devices are connected. Why is it still occupying resources? Additionally, the display size is 1024x600, using 16 bits per pixel (bpp) and double buffering. As a result, we cannot place it in RAM.

I'm here by attaching linker file for your reference.

void USB_HostEhciTaskFunction(void *hostHandle)
{
    usb_host_ehci_instance_t *ehciInstance;
    uint32_t bitSet;
    usb_device_handle deviceHandle;

 

    if (hostHandle == NULL)
    {
        return;
    }
    ehciInstance = (usb_host_ehci_instance_t *)((usb_host_instance_t *)hostHandle)->controllerHandle;

 

    if (OSA_EventWait(ehciInstance->taskEventHandle, 0xFF, 0, USB_OSA_WAIT_TIMEOUT, &bitSet) ==
        KOSA_StatusSuccess) /* wait all event */
    {
        if (0U != (bitSet & EHCI_TASK_EVENT_PORT_CHANGE)) /* port change */
        {
            USB_HostEhciPortChange(ehciInstance);
        }

 

        if (0U != (bitSet & EHCI_TASK_EVENT_TIMER0)) /* timer0 */
        {
            USB_HostEhciTimer0(ehciInstance);
        }

 

Thanks,

Gangapavan.

0 项奖励
回复