Respecto a los ARM desconozco bastante para ser sincero, pero en vista en como compartes del tema se ven bastante potentes. Me puedes comentar mas al respecto? me gustaría saber que modelos de ARM (aparte del cortex M0 que me comentaste) son los que se suelen usar, a manera de analogía como ocurre con el PIC16F877A que dentro de la inmensa gama del PIC16 es uno de los mas comerciales. Y por supuesto que entornos de programación existen para ello.
De los más populares, son los STM32F4 de ST, Cortex M4 168/180Mhz. Tienes placas de evaluación Discovery o las nuevas Nucleo a precios de risa, desde 14 Euros. También anuncian desde hace tiempo sus Cortex M7, STM32H7.
Yo uso también bastante los Kinetis, Serie K de NXP, aunque estos son algo más caros que los STM32, pero también tienes placas de evaluación muy baratas, las FRDM. Aqui puedes echar mano de las series MK20, MK64 y MK66. Este mes, NXP saca su nuevo micro RT1020 Cortex M7 a 500 Mhz, que por fortuna será en formato TQFP de 100 y 144 pines, yo estoy esperando para conseguir unos samples y montar una placa propia. Ya compré su placa de evaluación para los RT1050 a 600Mhz, pero estos son BGA. NXP también fabrica los LPC, pero estos no los he usado.
De NXP tienes también los LPC, pero estos no los he probado, el entorno de desarrollo es el mismo, MCUExpresso.
El compilador de C/C++ para todos los ARM, incluido ahí también los Raspberry y similares, es el GCC, totalmente gratuito sin limitaciones. Cuando instalas el entorno de desarrollo de cada fabricante, ya viene con el compilador de C++.
En cuanto al entorno de desarrollo, muchos de ellos están basados en Eclipse con un plugin y una utilidad integrada para configurar gráficamente toda la periferia sin tener que escribir ni una sola linea de código (reloj, GPIO, puertos, interrupciones, timers, librerías de terceros, etc...). NXP ofrece MCUExpresso que desde la última versión integra las Config Tools para configurarlo todo sin esfuerzo, y ST ofrece el System Workbench (basado en Eclipse) + Cubemx como asistente en la configuración.
Tienes también una opción muy interesante para entrar en el mundo ARM. Las placas Teensy que montan micros NXP Kinetis MK20, MK64 y MK66, y se basan en el entorno de Arduino como plataforma de desarrollo. Yo lo uso mucho para desarrollo y pruebas, luego cuando ya tengo el producto funcionando, diseño mi propia placa con un MK66, un bootloader encriptado y lo grabo con un programador Jlink de Segger. Las ventajas del entorno Arduino, las que indiqué, ofrecen una gran cantidad de librerías y código fuente de ejemplo del que partir para hacer de todo, esto es lo que yo echo en falta en otros fabricantes.
Se me olvidaba, tienes los Atmel SAM S70, S71, V70, V71, Cortex M7 a 300Mhz. Su entorno de desarrollo es el Atmel Studio, creo que también basado en Eclipse, y el compilador de C/C++ GCC. Su placa de evaluación, la Xplained, también es muy barata.
Como programador puedes usar el de cada fabricante o uno genérico que los cubra todos. Para los STM32 tiene el STLINK V2, muy baratito, sobre los 20 euros. Para los Kinetis recomendable un Jlink V9 de los chinos que también sirve para los STM32, o la versión EDU original del Jlink, pero esta tiene limitaciones, mejor echar mano de nuestros amigos los chinos, un Jlink V9 va de fábula y cuesta unos 30 dólares. Y para los Atmel SAM tengo el ICE del fabricante que es muy barato, y puede que el Jlink también los programe, pero eso no lo he probado (acabo de abrir el software Jflash de Jlink y si soporta los Amtel SAM S7x, V7x).