AnsweredAssumed Answered

Interrupt pipe queue header is getting NULL

Question asked by JINS PAUL on Nov 21, 2017
Latest reply on Nov 28, 2017 by Daniel Chen

Hello All,

 

Please find my work environment details below.

RTOS : MQX ver4.1
MCU: MK70FN1M0VMJ15
Hub controller : USB2512 high speed 2-port hub controller and USB3300.
MCU clock : 140Mhz.

About issue :

I'm using 3 CDC devices with usb hub.

To hub,
1. When I connected "device A"(cdc device), creating interrupt pipes ( " _usb_ehci_add_interrupt_xfer_to_periodic_list" function in ehci_main.c) called two times and obtaining Queue Header (QH) successfully.
2. When I connected " device B" (cdc device) , creating interrupt pipes ( " _usb_ehci_add_interrupt_xfer_to_periodic_list" function in ehci_main.c) called three times and obtaining Queue Header (QH) successfully.
3. When I connected " device C" (cdc device) , creating interrupt pipes ( " _usb_ehci_add_interrupt_xfer_to_periodic_list" function in ehci_main.c) called five times and 4 times I'm getting QH handler successfully. The fifth time it called for adding interrupt pipes I'm getting a NULL handler in QH and due to NULL pointer while writing to it MQX throwing an hard fault exception.

I've attached screen shots for your better understanding.
Note:
1. To avoid hard fault, I have modified code which checks QH is Null or not? before writing to it.
2. "device C" is a WIFI + BLE dongle.
3. device A and B are testing usb devices.

Please guide me for solving below points.
Q1. Why I'm getting null QH handler  when adding interrupt 5th time?
Q2. How many interrupt pipes MQX usb hub support?
Q3. If QH is nulll, will it make any data lose in USB communication?

 

I'm looking forward to hearing from you soon.

Thanks in advance.

Attachments

Outcomes