EDIT: Published in 2013.
Up until recent months, Open Source oriented developers developing for ST's' Cortex-M SoCs were faced with a tough choice: should they choose the development tools that exist today, but are Windows-centric? Let's be fair and admit that using Windows for any FLOSS development is like developing without arms and legs.
Fortunately, native open source OS solutions have started popping up lately, though they narrow down to GNU/Linux (mainly Ubuntu 12.04 or later), gcc toolchain, openocd, and a handful of scripts for make and linker. Another addition to the list is Eclipse IDE.
With these findings, I'm on the “me too” side of STM32 bandwagon.
The first thing to go after, in my point of view, seem to be Vedder's Get Started With STM32F4 on Ubuntu Linux about building modified summon ARM GCC toolchain. With minor modifications to the script, this works well with Ubuntu 12.04 LTS.
When you are ready to launch, USB CDC as software serial on STM32F4 is the way to go.
An issue with copying and pasting the code blindly is that it only scratches the surface, instead of understanding the core's internals. If you want to learn about ARM Cortex-M platform, my recommendations go after Joseph Yiu's The Definitive Guide to ARM Cortex-M3 and CortexM4 Processors, 3rd Edition and Cortex-M0/M0+ version here. These 800+ pages are worth the money invested. Both books are oriented at general Cortex-M programming.
If you are STM32 positive like me, then you may find even better reading with ST-specific internals: Mastering STM32. Carmine Noviello did a great job at explaining many implementation details and caveats. Although the book is HAL library oriented, STM32 users with SPL affinity like me should also read this book. In short, this is the best book about STM32 Cortex-M systems on chip so far.