Por lo general, los fabricantes de microcontroladores incluyen en sus dispositivos una gama de memoria adecuada para las aplicaciones típicas. Así, si sólo necesitas unos pocos pines de E/S y un SPI en un dispositivo de tamaño reducido, es poco probable que encuentres algo que venga con 500 kBytes de Flash y 64 kBytes de RAM. En el caso de los dispositivos más grandes, que se acercan más a los paquetes SoC, incluso el más pequeño es casi seguro lo suficientemente grande, a menos que esté planeando hacer algún cálculo numérico serio, como el procesamiento de imágenes.
En un entorno profesional, la clave para elegir el microcontrolador adecuado es utilizar datos históricos. Tendrás un registro de los otros proyectos que has desarrollado y sabrás qué memoria y otros recursos de silicio son necesarios para implementar cada función. Sabrá lo que se espera que haga el producto y, por tanto, tendrá una buena lista de características y podrá calcular con rapidez y precisión los recursos que necesitará el microcontrolador. Intentar adivinar las necesidades de recursos a partir de una especificación de diseño inicial (desarrollada al principio del proyecto, cuando se dispone de menos información sobre el sistema) no es fiable en el mejor de los casos y sólo los ingenieros muy experimentados, que han creado una amplia base de datos históricos en sus propias cabezas, tendrán algún tipo de éxito al utilizar este método.
Muchas empresas han adoptado un enfoque "ágil" para el diseño electrónico y de software, que implica la creación de una "biblioteca" de pequeñas placas con características (por ejemplo, placas RS-485, placas ADC, etc.) junto con placas de plataforma genéricas que alojan los microcontroladores, de forma similar a la utilización de un dev-kit y plug-ins. De este modo, es posible crear rápidamente un prototipo del producto (en cuestión de horas) seleccionando y conectando el conjunto de placas necesarias para las funciones. El software se ensambla de forma similar a partir de módulos de biblioteca y puede portarse y probarse rápidamente. Una vez que se conoce el tamaño de la parte del código específica del hardware, suele bastar con seleccionar la parte más pequeña que lo contenga. La excepción es la mencionada anteriormente, cuando la funcionalidad del dispositivo implica grandes datos o algoritmos muy complejos. Este método proporciona una metodología precisa, fiable y rastreable, utilizando datos reales de productos que funcionan de verdad, en lugar de conjeturas basadas en especificaciones esperanzadoras.
(Otra ventaja del enfoque ágil es que permite que el desarrollo del software y el de la electrónica se realicen en paralelo, siendo el diseño de la electrónica un ejercicio de integración del conjunto de placas de características y de realización de la CEM pertinente y otras cosas difíciles al mismo tiempo que se desarrolla el software de aplicación en los conjuntos de prototipos. Todavía es necesario realizar alguna portación e integración, pero se hace cuando el software y la electrónica están disponibles).
0 votos
Me parece que debería ser posible, desde el punto de vista de la teoría de la información, estimar las necesidades de RAM en un orden de magnitud (estilo de razonamiento dimensional) a partir de la especificación de la tarea. Hmmm...
0 votos
Si utilizas bibliotecas, puedes investigar su huella de memoria. Con tu propio código tienes que guiarte por la experiencia. Compara el nuevo proyecto con los antiguos y determina si esperas que sea mayor o menor.