FX2LP does not enumerate when firmware (code+xdata) of size greater than 16 KB is downloaded. Why is this happening?
One of the places to check is in the .m51 file where the compiler is placing the descriptor files. The issue might be that the compiler is putting the descriptor table into external memory. When this happens fw.c relocates the descriptor table to memory location 0x0080 where it overwrites some portion of the code. This might cause error in enumeration or incorrect functioning of some part of code. You can specify the starting location of your code memory after leaving space for the interrupt vector tables and the descriptor table.
For example, in the BL51 locate tab, you can specify your code to begin at a location greater than (0x0080 + length of your descriptor table). Here, 0x0000 - 0x0080 will contain the interrupt vector table. For example if the length of your descriptor table is 80h, you can safely start your code from 0x120h.