Digamos que está comenzando un proyecto incrustado con alguna funcionalidad conocida. Cuando selecciona un microcontrolador, ¿cómo selecciona cuánta RAM necesita?
¿Utiliza una placa de desarrollador y codifica su proyecto primero y luego ve cuánta memoria ha usado y luego selecciona un microcontrolador apropiado que se ajuste a esa memoria?
¿Simplemente elige un microcontrolador robusto para un prototipo y luego lo reduce después de tener un producto que funciona?
¿Simplemente elige algo que está seguro de que será suficiente y si se queda sin espacio, simplemente actualice a una mayor densidad de memoria, de lo contrario, simplemente conserva el microcontrolador existente?
¿Qué se considera una buena práctica?
microcontroller
embedded
design
memory
efox29
fuente
fuente
Respuestas:
Personalmente, para proyectos de pasatiempos, tiendo a usar el microcontrolador más potente de la familia con la huella adecuada. Luego desarrollo el PCB, escribo un código y produzco un prototipo.
Esto tiene la ventaja de que conozco bastante bien la pequeña cantidad de microcontroladores, por lo que puedo crear prototipos rápidamente sin tener que leer una hoja de datos completa. También tengo tableros de arranque y plantillas de código para ellos.
Si funciona y estoy haciendo más de un puñado, entonces compro el microcontrolador más barato que tiene los periféricos correctos y suficiente memoria para lo que sea que haya codificado anteriormente. Esto puede ser molesto si los registros internos cambian (sucede en el PIC) o si cualquiera de los microcontroladores tiene periféricos adicionales que deben desactivarse para que el código funcione.
Sin embargo, para fines de producción, esto le permitiría ahorrar una cantidad justa de cada unidad.
fuente
Por supuesto, para un solo prototipo casero, puede ser una buena recomendación comenzar con el más potente de todos los micros compatibles y reducirlo después.
Sin embargo, si desea ganar una cotización, debe decirle a su cliente un precio antes de tener el dinero para implementar algo.
Por lo tanto, una buena práctica es escribir algún tipo de especificación antes de comenzar a programar. Usted sabe lo que quiere hacer y debe escribir cómo lo va a hacer.
Este "cómo" también incluye pensar en un diseño de software, respondiendo preguntas como:
Resumir todos esos valores te da una estimación aproximada. Hasta qué punto puede confiar eso depende de cuán detallado sea su análisis, y depende de su experiencia :-)
Agregar una margen de al menos 30..50% de su estimación es seguramente una buena idea.
Una vez que su producto esté terminado y tenga alrededor del 80..90% de RAM en uso, puede estar seguro de que su selección fue correcta, al menos con respecto a la RAM.
fuente
Si solo fuera posible codificar su sistema embebido primero y luego construir el hardware. Eso facilitaría la vida de todos. Desafortunadamente, eso también significa que sus plazos están fuera de plazo. Por lo general, el hardware debe diseñarse mucho antes de que el software esté listo porque las partes del hardware con frecuencia tienen largos plazos de entrega.
Por lo tanto, los desarrolladores de sw integrados generalmente necesitarán estimar las necesidades de memoria y CPU de su programa. Su primer paso debería ser tratar de convencer a los técnicos de hardware para que le brinden el microcontrolador / CPU más potente con la mayor cantidad de RAM posible. Eso rara vez funciona porque tienen objetivos de requisitos propios, pero de vez en cuando tienes suerte.
Si eso no funciona, entonces lo siguiente que haría sería un diseño de software de alto nivel y dividir los módulos en funcionalidad. Luego, estimaría líneas de código para cada función para cada módulo en el sistema. Luego puede usar una fórmula para convertir líneas de código en una estimación aproximada de la memoria de código. También investigaría cualquier requisito de memoria inusual (como matrices grandes) y agregaría una estimación para acomodar eso. Luego agregue un porcentaje sobre ese total para cubrir todo lo que se perdió. Luego duplique eso para cumplir con el requisito típico de utilización del 50%.
Si, lleva tiempo. Sí, es necesario saltar a través de todos los aros porque cambiar el hardware es realmente difícil después de su construcción.
fuente
En general, los proveedores de microcontroladores colocan una gama de memoria en sus dispositivos que es adecuada para aplicaciones típicas. Por lo tanto, si solo necesita unos pines de E / S y un SPI en un dispositivo de tamaño reducido, es poco probable que encuentre algo que se envíe con 500 kBytes de Flash y 64 kBytes de RAM. Con dispositivos más grandes, que están más cerca de los paquetes de SoC, incluso el más pequeño es casi seguro que sea lo suficientemente grande, a menos que esté planeando hacer algunos cálculos serios como el procesamiento de imágenes.
En un entorno profesional, la clave para elegir el microcontrolador adecuado es utilizar datos históricos. Tendrá un registro de los otros proyectos que ha desarrollado y sabrá qué memoria y otros recursos de silicio se requieren para implementar cada característica. Sabrá lo que se espera que haga el producto y, por lo tanto, tendrá una buena lista de características y podrá calcular de forma rápida y precisa los recursos que el microcontrolador deberá proporcionar. Tratar de adivinar los requisitos de recursos a partir de una especificación de diseño inicial (desarrollada al comienzo del proyecto cuando la menor información sobre el sistema está disponible) no es confiable en el mejor de los casos y solo los ingenieros con mucha experiencia, que han desarrollado una solución integral La base de datos de datos históricos en sus propias cabezas, tendrá cualquier tipo de éxito en el uso de este método.
Muchas compañías han adoptado un enfoque 'ágil' tanto para el software como para el diseño electrónico, que implica la construcción de una 'biblioteca' de placas pequeñas y características (por ejemplo, placas RS-485, placas ADC, etc.) junto con placas de plataforma genéricas que alojan los microcontroladores , de forma similar al uso de un kit de desarrollo y complementos. Luego, se puede crear un prototipo de un producto rápidamente (en cuestión de horas) seleccionando y conectando el conjunto de paneles necesarios para las funciones. El software se ensambla de manera similar a partir de módulos de biblioteca y se puede portar y probar rápidamente. Una vez que se conoce el tamaño de la parte específica del hardware del código, generalmente es suficiente seleccionar la parte más pequeña que contendrá eso. La excepción es la mencionada anteriormente donde la funcionalidad del dispositivo involucra grandes datos o algoritmos muy complejos. Este método proporciona una precisa,
(Otra ventaja del enfoque ágil es que permite que el software y el desarrollo electrónico se realicen en paralelo, ya que el diseño electrónico es un ejercicio para integrar el conjunto de tableros de características y hacer la EMC relevante y otras cosas difíciles al mismo tiempo que el el software de aplicación se está desarrollando en los ensamblajes de prototipos. Todavía se necesita un poco de integración y portabilidad, pero se realiza cuando el software y la electrónica de trabajo están disponibles.)
fuente