STM32F042K6T6 seems to fit the bill. The Nucleo board for this can be used as an external SWD debugger/flasher if needed.
PIC24FJ64GB002 has crystalless USB support, 28-pin DIP, SOIC or SSOP (GB004 is 44-pin TQFP 0.8mm). 64KB FLASH, 8KB of RAM
XC16 is based on GCC, however they do not give the -O2, -O3 and -Os away for free.
I don't think there is any PIC32 that has accurate enough crystal, so if you want a 32-bitter you need to go elsewhere (ARM?)
I would rather go for the STM32F103 series or even the STM32F3/F4 series. Not much more expensive, but you get a faster MCU but mainly much more flash and RAM available.
The F0 chips can, in theory, run USB, but you are going to be hard pressed to fit a USB stack and some significant user code in the small amount of memory available. 32kB of flash on a PIC or AVR is a ton but it is very little on an ARM. Simple blink a LED code can take 2kB or more, with the vector tables and startup code alone.
Moreover the STM32F042K6T6 is fairly new, the Nucleo board you are mentioning is not all that well supported yet (doesn't work even in mBed, despite the "mBed enabled" logo).
Silabs universal bee
http://www.silabs.com/products/mcu/8-bit/efm8-universal-bee/Pages/efm8-universal-bee.aspx
they even have 100mA 3.3 Vreg which can power external devices.
Yes, but at least the F103 is not crystal-less, and none of the parts have a package options with pitch > 0.5mm (the small QFP32 F303 doesn't seem to have USB?).
Depends, I have a simple USB stack which emulates a CP2102 serial port running in 3k, including vector tables and startup code. This is on a F103, and no, it's not coded in assember
Right, if you need mbed, which is nice for for fast prototyping. But it seems STM32CubeMX is fully supported, and I would not expect too many differences to other STM32 parts. The USB block for example looks very similar to the one on the F103.
Yep, it doesn't have one. However, if one can solder a 32 pin 0.65mm pin pitch QFP, they can for sure solder even 0.5mm 48 pin QFP no problem, even on a home-made board without soldermask in a pinch. The technique is exactly the same. And that will give access to many more parts. There just aren't that many parts made in 0.65mm pitches.
The latest Cube has the drivers and everything for these boards, however, I am still battling with getting even a stupid blinky LED to work with it - even their example project isn't working. I am using a "naked" GCC toolchain that they don't provide settings for, only the stupid project files for the IDEs. (Hey, ST, why can't you ship a silly makefile with all the necessary settings instead of all that project crap? We know how to set up a project in an IDE ...), so I had to reverse engineer the settings from that. And apparently something isn't right, because my startup code causes the chip to throw an exception and end up in a loop. I have traced it to a linking issue but I don't have a solution yet.
I have never had such issues with the STM32F303 Discovery board, the F030x chips or F103 series - but there I was able to use the standard peripheral libs and not this HAL nonsense.
I try to avoid either lib, and use them only as reference. The HAL seems to cover more (polled, IRQ and DMA mode for most peripherals), but it tends to have bigger code size. The smaller and less complex STM32 parts (F0, F1) are actually quite well suitable for bare metal. And then you can skip the startup code altogether
I've been very pleasantly surprised by the EFM32 emlib though. It works as expected, does what it needs to do, and doesn't bring a whole crapload of complexity layers with it (KSDK, I'm looking at you!).
STM32F042K6T6 seems to fit the bill. The Nucleo board for this can be used as an external SWD debugger/flasher if needed.