flasheo de microcontroladores

0

He visto que algunos microcontroladores se pueden flashear solo con puerto USB con algún software de controlador. Pero para algunos microcontroladores tenemos un hardware de interfaz adicional para el flasheo entre el puerto USB de la PC y los pines del microcontrolador. ¿Por qué esta diferencia? Un ejemplo específico es el arduino que se puede flashear directamente desde la PC, mientras que los microcontroladores freescale necesitan hardware adicional para flashear y depurar. ¿Se pueden flashear todos los microcontroladores con un puerto USB solo con un software de controlador específico?

    
pregunta rajesh

4 respuestas

4

Un arduino no es un microcontrolador simple, por lo que está haciendo una comparación extraña aquí. Un arduino Uno tiene un cargador de arranque preinstalado en el microcontrolador Atmel ATmega328, más una interfaz USB a serie (chip separado, por ejemplo, un CH340). Con esos dos elementos agregados, CUALQUIER microcontrolador se puede flashear directamente desde una PC.

    
respondido por el Wouter van Ooijen
1

No todas las MCU tienen USB. Pero de todos modos, está hablando de un cargador de arranque, que es un software preprogramado, a veces en la ROM, y que está listo para recibir un archivo cuando se enciende. A veces desde USB, a veces desde otros puertos. Creo que hoy en día muchos tipos de MCU vienen con cargadores de arranque simples, pero todavía no todos.

    
respondido por el Gregory Kornblum
0

Realmente es casi si el fabricante decidió poner esta función. A veces se deja fuera en dispositivos más pequeños para ahorrar espacio o reducir el uso de energía, ya que en la mayoría de los casos, la comunicación USB se realiza con un coprocesador dedicado de algún tipo.

También quiero agregar que no todas las placas de escala libre necesitan hardware adicional. El K22F, K64F y KL25Z, junto con muchas otras placas de desarrollo que ofrecen, pueden intercambiarse por USB. Solo enumero los que son los que he usado recientemente. Lo único es que si está ejecutando un RTOS, es posible que necesite hardware adicional para ver cosas como el tiempo de CPU que utiliza cada subproceso. Sin embargo, aún puede realizar la depuración del estilo de punto de interrupción normal en cualquiera de ellos con o sin un RTOS.

    
respondido por el Dave851
0

Si un microcontrolador se puede flashear a través de USB o no, depende de su construcción y si el fabricante original lo permitió o no. Sin embargo, el usuario final puede modificarlo como se explica a continuación.

Arduino se basa en atmega IC de Atmel. En arduino UNO, utilizan Atmega328P. Estos circuitos integrados se han diseñado de forma tal que escuchen en sus puertos SPI durante el inicio de cualquier código / datos entrantes. Si reciben datos válidos, se volverán a programar. Los chicos de Arduino escribieron un pequeño trozo de gestor de arranque (considere un pequeño sistema operativo para la unidad de control). Este gestor de arranque añade algunas características extra. Le indica al microcontrolador que escuche en los pines UART (Serial Tx Rx) también para cualquier código válido una vez que el microcontrolador se reinicie. Y así es como se pueden programar las tarjetas arduino a través de la comunicación en serie.

Además, arduino no se está flasheando directamente a través de USB directamente. Se está programando en serie. Arduino tiene algún circuito extra - USB a convertidor de serie. Este es el responsable de convertir los datos USB (que van desde su PC) a datos en serie (que puede ser entendido por atmega 328).

Si comienza a escribir su gestor de arranque personalizado, también puede usar otras características. Por ejemplo, el código del cargador de arranque puede obligar a que el IC se inicie como esclavo i2c con una dirección predefinida y algunos maestros i2c pueden enviarle un código. O bien, puede implementar una serie de software en pines que no sean Tx Rx para grabar su código.

Sin embargo, incluso con todo esto en su lugar, lo que el fabricante ha hecho siempre se mantendrá a menos que el fabricante le permita anularlo. Por ejemplo: a pesar de que Arduino se muestra a través de Serial, puedes usar el SPI alineado para volcar el código usando ISP. Esto es lo que le permite grabar un cargador de arranque nuevo en caso de que algo malo le haya pasado al código del cargador de arranque.

    
respondido por el Whiskeyjack

Lea otras preguntas en las etiquetas