I now have a flat-spot on my head from beating it against the wall that is the ARM/Keil Microcontroller Development Kit (MDK), so I am taking the hint and I’m abandoning it. The MDK has a pretty nice IDE, an extensive library, and lots of samples, but the samples are all pretty much identical, just ported to different boards and CPUs. The library while powerful (supporting HID, Mass Storage, Audio (out), CDC (serial), and supposedly
vendor-specific classes), is woefully incomplete in that it does not support USB
isochronous IN transactions (data going from the device to the host), and the support in the framework is almost completely absent for vendor-specific – beyond allowing you to specify that your device implements vendor-specific commands and then requiring you to supply a vendor.h file. Nowhere in the documentation is there information on what you need to provide if you select the vendor-specific class, nor are there any examples.
I sent questions to ARM technical support, but thus far, I have not heard back from them. I also submitted questions to NXP’s technical support, and did receive some responses, but one didn’t provide any more detail than what is provided in the marketing documentation, and the other (regarding vendor-class) claimed to have a .C file attached showing the usage, but there was no attachment. I requested the attachment and they responded very quickly; however the attachment was just a new version of usbcore.c (for use with IAR) with support for the vendor –specific device class, but again, nothing on how to use it. Sigh.
I have gone back to the IAR IDE even though it is less sophisticated than the MDK, and what do you know? There is a sample that does isochronous IN transactions. Somehow I had missed or forgotten this example. IAR provides a framework that is similar to that of the MDK, but it is a bit easier to follow. My next post will cover getting my firmware more-or-less running using the IAR tools.