In the past I have written on the advantages of minimal development environments (read: Makefiles and GCC, no IDE, minimal abstraction layers) for ARM processors. One of the advantages of working this way is easy integration with existing processes such as build systems, production line, testing, etc. Using this in a virtualized environment also allows one to make sure every developer uses the same tools, and that the tools are tested and qualified for the intended project with a ready made virtual image available for each developer. They can then add their favorite editor and user interface, but the underlying build environment is fixed for everyone and archived as such on a per-project basis. This means that if a customer comes back a year or two later and wants to make a change, all the tools are there as we left them ready to make the change. In this blog post I'll write down a possible scenario for a typical STM32 project, in this case using a NUCLEO-L152RE board as a target. It should be easy to adapt to other STM32 boards/chips, and in general other ARM microcontrollers as well.