La razón principal, por supuesto, es el coste. Incluso las memorias RAM lentas y autónomas cuestan varios dólares por gigabyte, y vienen en un paquete bastante grande. Las limitaciones del proceso que Alex describe en su respuesta son muy reales y aumentarían enormemente el coste de la DRAM en chip para un microcontrolador. Incluso si el coste fuera el mismo, varios dólares es un gran aumento de precio para una MCU. Se necesitaría una razón convincente para ese tipo de actualización, y el control integrado rara vez la ofrece.
Pero permítame darle la vuelta a esta pregunta: ¿por qué un PC necesita miles de millones de bytes de almacenamiento? El ordenador guía del Apolo 11 tenía 4 kB de RAM y 72 kB de ROM. Hace veinte años se podían hacer la mayoría de las tareas con 4 MB de RAM. Hace quince años, un ordenador con 64 MB de RAM era suficiente para utilizarlo en la oficina, navegar por Internet, escuchar música, etc. Cantidades razonables de texto caben en decenas de kilobytes, las imágenes comprimidas de buena calidad están por debajo de un megabyte, y las imágenes fijas de 1920x1080 están por debajo de los diez megabytes, y seguimos tratando principalmente con ese mismo tipo de datos. ¿Qué ha cambiado para justificar el uso de un espacio de almacenamiento mil veces mayor?
Multimedia: pantallas de mayor resolución con más colores, vídeo de alta definición y sonido de alta calidad, todo ello basado en algoritmos de descodificación intensivos para adaptarse a los límites del ancho de banda. Las interfaces de usuario se han ido adaptando. Los sistemas operativos empezaron a hacer más y más trabajo. Los juegos utilizan todo el hardware posible. Y debajo de todo ello, capa sobre capa de marcos de software para hacer más fácil y fiable la programación de alto nivel. A pesar de todo ello, las ventas de PC se han estancado y los usuarios tienen cada vez menos motivos para actualizar su hardware.
Pero todo eso es opcional. Si se eliminan los gráficos, la interfaz y el sistema operativo, incluso una CPU de 16 MHz se convierte en una potente máquina de cálculo. Una MCU está principalmente monitorizando y respondiendo a eventos en tiempo real, así que no se necesita mucha memoria para definir el estado. Estás programando sobre bare metal (o quizás un RTOS mínimo), por lo que la sobrecarga de software es mínima. Hay un hardware específico para cada tarea que se encarga de la mayor parte del trabajo de alta velocidad, como la sincronización y las comunicaciones, lo que reduce aún más los requisitos de CPU y RAM. Ahora tienes un sistema en el que puedes hacer mucho trabajo en unos pocos kilobytes de espacio para programas y datos.
Si usted necesito más espacio de almacenamiento, puedes añadir RAM o flash fuera del chip, o incluso enviar los datos a un PC remoto. Pero para la mayoría de las aplicaciones de la MCU, la capacidad extra en el chip no se utilizaría. Así que, ¿por qué pagar por ella? A sus clientes finales no les impresionará la cantidad de RAM que tenga un controlador de motor o un módulo de alimentación.
Para ver un ejemplo de este tipo de diseño en un PC, mira MemTest86, que viene en una imagen de disco de sólo 10 megabytes, ¡y que incluye Linux!