First some background info:
My platform is a mcf52258 on a custom designed board. Note that this design is based off of M52259DEMO.
I am developing a custom bare metal interrupt driven usb driver. The project is based off of 52259EVB_IRQs and I am using Eclipse 10.2. I found the interrupt vector table located in exceptions.c and setup my handler (usb_driver_isr) there.
The usb_driver is a custom one that I developed baselined from freescale's bootloader for my device. This driver works on an MQX based project and a bare metal project developed with CW 7.2 using PE.
So my problem:
The usb_driver_isr is only called on reset and for no other transactions (ie - token done). I can see on the bus analyzer that my device is not responding to setup packets from the host. In the IDE I can see that my setup handler is never called when the isr is entered. As I stated before, it appears that the isr is only called for reset.
If I unplug and plug in the usb cable, the isr is entered again, but only for reset.
I verified that my BDT is addressed correctly by observing the BDT_PAGE_0X registers through the IDE. Not sure where to go from here. As I stated before, this usb_driver has work for other firmware on this same platform. Do I not have interrupts setup correctly?
-Vince
Original Attachment has been moved to: main_for_freescale.c.zip
Original Attachment has been moved to: usb_driver_for_freescale.cpp.zip
Solved! Go to Solution.
Setup a new C++ project with CW Eclipse and ported in my usb driver. USB now enumerates.
My driver was originally developed in a C++ environment. Although I removed all C++ objects, I suspect that I am using some variable declaration or other items that Eclipse doesn't recognize when configured as a C project.
Setup a new C++ project with CW Eclipse and ported in my usb driver. USB now enumerates.
My driver was originally developed in a C++ environment. Although I removed all C++ objects, I suspect that I am using some variable declaration or other items that Eclipse doesn't recognize when configured as a C project.