2011-12-01 05:32 AM
OK so I got the USB library with custom HID example (from ST) and uCOSII in IAR v6 compiling/linking/downloading, however the USB does not enumerate properly.
I assume that I have got the setup/architecture wrong. How should I successfully integrate the driver with uCOS? What approach should I take? At the moment the USB driver does not link to any tasks, just to interrupts. Thanks for any advice!2011-12-05 06:37 AM
Replying to my own post in case anyone else is interested...
After removing all of the ST dev board specific stuff from the code I then did the following things to get it running: *Edit the Board Support Package (BSP) code to initialize the USB port on the dev board I am using (ST32F103ZE from IAR) during boot. *Create a new ISR function within the uCOS BSP that is called when the USB interrupt fires. This function just calls the USB_Istr() function from the ST USB library. *Initialize the Interrupt vector table using the uCOS BSP function BSP_IntInit and adding a line so that the USB interrupt points at the function I created (see above). *Initialize the USB LP interrupt. *Call the USB_Init() function from the ST USB driver library to prepare the device for enumeration. *The board now waits to be plugged in... This may (probably?!?) not be the best architecture/approach for this type of thing so I would still be interested in opinions from others out there. I feel like the USB_Istr() function should be moved to a task within uCOS and just respond to a semaphore so that it is subject to all the same priority stuff as the other tasks.