No es ese blanco y negro. Entre la familia AVR, tienen más de un protocolo en serie, uno es más doloroso que el otro. Los AVR son agradables ya que tienes el chip en reinicio, así que si tu programa hace algo estúpido como reutilizar los pines de programación (sí, se ha hecho allí más de una vez) y el chip está diseñado para que no esté reiniciado, es posible que no estés capaz de reprogramarlo, pero a veces hay otras soluciones.
Se trata del proveedor de chips y de las funciones que desean colocar a qué costo. Una parte de 8 pines con múltiples pines dedicados a la programación sería una muy mala idea, incluso un doble propósito podría ser malo, ya que el usuario podría no ser capaz de diseñar su placa para usar esos pines y hacer que sea programable en el campo. Si tienes suficientes alfileres, podrías ir tan lejos como para dedicarlos si no quieres muxearlos. Depende del proveedor / diseñador del chip decidir qué protocolo o qué conjunto desean utilizar. Como ya se mencionó, algunas veces quieren hacerlo, así que tienes que comprar sus herramientas porque mantienen el protocolo en secreto y de propiedad. Pueden proporcionar múltiples soluciones para que sea más fácil para el usuario.
Algunos, muchos en estos días, permiten la autoprogramación, el mcu puede programar su propio flash desde el código que se ejecuta en el mcu. Así que eso abre la puerta a los bootloaders. Siempre puede hacer su propio protocolo en un caso como este para no tener que depender del proveedor. Pero algunos de ellos tienen una o dos capas de cargadores de arranque, uno que colocan y protegen de usar, supongo que el AVR uno es el hardware, el otro es el software, el cargador de arranque que la gente arduino coloca y usa con un uart. No es raro, especialmente con los basados en ARM, tener un serial, usb y tal vez spi u otro en el incorporado, colocado por el proveedor de chips, el cargador de arranque. Ata un pin de entrada al reinicio o conjunto de pines y el gestor de arranque asume el control y no inicia la aplicación, sino que espera a que el programa de campo. NXP, ST, Atmel, son proveedores que hacen esto.
Algunos, verdaderos, son solo jtag, ahora con el pin reducido SWD jtag, a menudo ofrecen eso como una solución junto con los demás, y algunos son solo jtag. Pero como ya no usamos partes flash paralelas que todos programaron con el mismo protocolo y solo necesitabas una abstracción para leer y escribir las direcciones, las herramientas jtag a menudo no se meten con el aprendizaje de los protocolos de todos los chips posibles que existen. use una herramienta especial de ellos o lo hace de otra manera (por ejemplo, mi preferencia, escriba un programa y descárguelo y haga que use la programación automática, algunas de las soluciones, (stlink, etc.) en realidad descargue un programa o diseño , y luego la herramienta habla de lo que se descarga para apoyar la tarea)
esto depende de usted como usuario, para agregar esto a las cosas que debe buscar al elegir el mcu para su proyecto. ¿Cómo lo programamos? ¿Va a programar en masa estas cosas, programa por tarjeta, deje que las TIC se encarguen de ello? Pero antes de llegar a la producción en masa, ¿cuál es su solución para los desarrolladores de software, terminan formando tableros bricking porque no hay una solución en los tableros prototipo para reprogramar? ¿O expones algo, etc.? Si el chip no da buenas soluciones, eso se suma al costo del desarrollo. Ciertamente, trabaje con sus desarrolladores de software antes de diseñar el tablero, por lo general, un par de pasadores de uart y una correa a menudo son suficientes para hacer un gestor de arranque si aún no hay uno. O una correa y un jtag, pueden hacer que su aplicación se detenga muy temprano, si la correa está ajustada, y luego tomar el jtag para depurar, descargar programas o reprogramar el chip.
En los viejos tiempos, acabas de quitar el baile de graduación y lo borraste, luego lo pegabas en un programador, o lo dejabas para borrar y tomaba el siguiente borrado y lo programaba, lo ponía de nuevo en el zócalo del tablero. Eso o sacó el mcu y lo puso en el borrador y / o el programador.
La mayoría ahora tiene una solución de programación de campo o puede crear su propia solución de programación de campo (en software) si hay suficientes pines. Si no es así, cree una placa con zócalo para los prototipos de desarrollador y un accesorio para reprogramar, o simplemente deseche las piezas hasta que los desarrolladores hagan lo correcto.