Cuando hablamos de hardware para operar un dispositivo electrónico complejo, nos solemos encontrar con la tesitura de utilizar microcontroladores para una MCU (unidad de microcontrolador), o microprocesadores para una MPU (unidad de microprocesador). Cada uno de ellos tiene sus ventajas e inconvenientes. La mayor ventaja de un microcontrolador es que todo el sistema está embebido dentro del hardware, todas las instrucciones se encuentran incorporadas en su misma estructura, y allí está la memoria, las instrucciones de entrada y salida, y la misma CPU (unidad central de procesamiento) incorporada en el mismo chip. Así, una vez ensamblado, conseguimos una unidad muy robusta a fallos, muy eficiente en cuanto a consumo energético, y de elevadas prestaciones en el entorno en el que tiene que operar, ya que ha sido específicamente destinada y diseñada para él.
Pero todas estas ventajas también tienen sus contras. La primera, el compromiso de flexibilidad al que obliga. Al contrario que una MPU, una MCU no puede actualizarse, no podemos descargar nuevas funcionalidades ni reformar su modo de funcionamiento. El sistema es, en cierta forma y para que nos entendamos, cerrado. Una vez construido el dispositivo, así se queda. De hecho, una MCU es en ocasiones tan específica, que solo puede trabajar con unos determinados componentes.