Using the USB Stack v4.1.1 (for HID device) on an MK20DX128VLH5, I noticed that the enumeration structures were in RAM due to the following macro definitions at the top of usb_descriptor.c:
#if (defined __MCF52xxx_H__) || (defined __MK_xxx_H__)
/* Put descriptors in RAM */
#define USB_DESC_CONST const
where __MK_xxx_H__ is defined in the project.
If I change the macro above to only "#if (defined __MCF52xxx_H__)" in order to put the structures into FLASH the code will compile fine (IAR EWARM) but the device will not enumerate.
Is there a fundamental reason that the enumeration strings can not be in FLASH?