Updated April, 2018.
This is a tutorial on setting up a complete developing environment on Linux OS by using a free and open tools. The official ARM (GNU Tools for ARM Embedded Processors) GCC toolchain, OpenOCD and Texane's ST-Link debugger/programmer utilities will be used.
The ARM Cortex-M0 is a 32-bit core that strikes an excellent balance between performance, power usage and price. It may not be as sophisticated and powerful as its older siblings the ARM Cortex-M3 and M4, but its simplicity, ease of use, lower cost and reduced power consumption easily makes up for that. The ARM Cortex-M0 core was designed to compete with other 8-bit/16-bit microcontroller cores like ARM and PIC and it succeeds in this goal on all major fronts; performance, low power, low price and short time to market.