¿Puedo grabar un gestor de arranque y programar con un ISP AVR?

2

He considerado comprar algunos chips ATMega para crear realizaciones simples de proyectos sin sacrificar un tablero de desarrollo (es decir, Arduino)

Ahora entiendo que se requiere que el gestor de arranque lea desde un dispositivo USB a serie. El ISP AVR (o equivalente) quema el gestor de arranque, luego la gente a menudo usa un usb-to-serial o el propio Arduino para programar el chip.

¿Qué demonios hace realmente el ISP de AVR? Si puede grabar un gestor de arranque (¿está almacenado dentro, uno genérico para todos los AVR que admite?), ¿Por qué no puede también programar el dispositivo (como parece que la gente nunca da instrucciones, incluso si eso lo hace simple)?

¿Por qué el ISP también le permite conectarse a una computadora a través de USB, para obtener energía? para cargadores de arranque personalizados? ¿Puede incluso "programar" un programa compilado para flashear a través de algo como avr-gcc (asumiendo que el IDE arduino hace cosas que requieren el cargador de arranque)?

Simplemente no puedo envolver cabezas o colas alrededor de lo que se requiere. Estoy apuntando a un "programa del nuevo chip, enchúfelo a un zócalo y vaya" como un enfoque sin múltiples quemaduras o programación.

    
pregunta Tommy

4 respuestas

1

Puede programar completamente una ATMega con el ISP de AVR.

Construyo un MIDIpal a principios de este año. El chip ATMega suministrado no había sido preprogramado. Entonces, después de soldar el tablero (mucho más fácil de lo que esperaba. SMT no tiene nada que temer), enchufé mi TinyISP y descargué El código binario para ello. Ahora mi MIDIpal funciona como se anuncia.

No estoy familiarizado con la parte del gestor de arranque, pero imagina que debe haber sido incluido en el firmware proporcionado por Mutable.

    
respondido por el ObscureRobot
4
  

¿Qué demonios hace realmente el ISP de AVR?

Permite leer / escribir en todas las áreas de memoria de los chips AVR (flash, eeprom y fusibles). El "IS" en ISP significa "En el sistema": no es necesario quitar el chip del circuito para programarlo (en los viejos tiempos había programadores "externos", tenía que extraer el chip de su circuito, insertar en el programador, luego insértelo nuevamente en su circuito ... ¡tedioso!)

  

¿por qué no puede también programar el dispositivo (como parece que la gente nunca da instrucciones, incluso si eso lo hace simple)?

¡Puede! Puede ir de forma absoluta y segura sin ningún cargador de arranque en el chip. Solo asegúrese de que el chip esté configurado para arrancar desde la dirección 0 en lugar de arrancar desde el área del cargador de arranque. En los AVR, esto se configura mediante fusibles.

avr-gcc es el compilador, que convierte el programa C / C ++ en un código de máquina (almacenado en última instancia como un archivo .hex).

avrdude es un "cargador de programas", responsable de leer / escribir datos en el chip a través de una interfaz de programación (como varios tipos de programadores ISP). Aquí está el comando avrdude para escribir FIRMWARE.hex en un chip atmega328P a través de un programador AVR ISP mkII conectado a la computadora por USB:

avrdude -V -p m328p -P usb -c avrispmkII -U flash: w: FIRMWARE.hex: i

  

¿Por qué el ISP también le permite conectarse a una computadora a través de USB, para obtener energía? para cargadores de arranque personalizados? ¿Puede incluso "programar" un programa compilado para flashear a través de algo como avr-gcc (asumiendo que el IDE arduino hace cosas que requieren el cargador de arranque)?

Si necesita actualizar un chip, necesita los datos para pasar de la computadora al chip, ¿verdad? No es sorprendente entonces que el programador de ISP esté conectado tanto al chip como a la computadora.

Le sugiero que lea algunos tutoriales no relacionados con Arduino sobre la programación de AVR. Vuelve a lo básico. Tenga en cuenta que la forma en que se hacen las cosas en Arduino land (enviar el programa a través de un chip serial USB > a un cargador de arranque personalizado que se ejecuta en el chip) no es la norma. Lo de Arduino es una solución a un problema específico (¿cómo puede hacer que las personas envíen programas a un chip sin programador?), Pero para su proyecto y su propia cordura, no tiene que replicarlo. Simplemente compre un programador de $ 25, ponga un socket ISP en su tarjeta y olvídese por un momento acerca de los chips USB, FTDI, los cargadores de arranque, etc. ...

En cuanto a los cargadores de arranque, solo serán necesarios cuando desee que su sistema pueda actualizarse en el campo a través de un medio distinto al programador de ISP. Hay cargadores de arranque en serie (como los de Arduino), cargadores de arranque de tarjeta SD, cargadores de arranque MIDI, cargadores de arranque de dispositivos de almacenamiento masivo USB, etc.

    
respondido por el olivier
1
  

¿Qué demonios hace realmente el ISP de AVR?

El documento AVR910: Programación en el sistema de Atmel es probablemente un buen comienzo para comenzar Una mejor comprensión. Describe el comportamiento requerido y esperado para los pines relacionados con el ISP y también documenta el protocolo de programación utilizado por el programador, dando ejemplos de comandos y respuestas para comandos como Habilitar programación y Leer código de dispositivo .

    
respondido por el hlovdal
1

La programación de campo es importante en este mercado. Tener múltiples opciones ayuda. Algunos productos, tanto de Atmel como de otros, tienen un gestor de arranque que no podemos reprogramar, ya que el uso de pines de correa le permite seleccionar usb, serial u otros. Algunos solo intentan detectar lo que quieres hacer y otros solo tienes una opción, jtag por ejemplo, o serial.

Me gusta la solución AVR porque el procesador se mantiene en modo de reinicio, así que si (yo) hago algo estúpido (sí, ya hice eso) y cuelga el procesador (digamos que habilita los relojes desde el pll sin configurar correctamente el pll), o reconfigura los pines gpio equivocados para encontrar esos fueron los pines que necesitaba para la interfaz de programación. Bueno, usted puede terminar con una tabla de ladrillo o chip. Mantener el procesador en reinicio al menos nos protege de nosotros mismos.

La interfaz de programación está bien documentada. Los xmegas o con los que jugué utilizan una interfaz completamente diferente a la de los pequeños y demás. Los más pequeños son solo SPI y usted puede tomarse su tiempo, restablecerlos, podría usar los conmutadores y darles la vuelta a mano si lo desea. El xmega el tiempo es crítico, esperas mucho y el chip sale del modo de programación. (no es spi) En cualquier caso está bien documentado.

Puede usar las soluciones disponibles en el mercado y usar avrdude o lo que sea, pero estas interfaces son simples, y puede usar cualquier cosa con la que pueda generar spi (otros microcontroladores, una frambuesa pi, cualquier parte / tablero ftdi con instrucciones mpsse y los pines expuestos, lo que sea). Y desarrollar el tuyo no es una tarea difícil. Educativo, y quizás en su línea de producción puede o no desear usar avrdude, o tal vez no pueda por alguna razón.

Sí, esta interfaz AVR ISP se puede utilizar para programar un cargador de arranque o cualquier aplicación que desee. No tiene que hacer una cosa con una interfaz y la otra con una interfaz diferente.

¿Por qué usar otro cargador de arranque entonces? Bueno, un cargador de arranque en serie podría usar tan solo uno o dos pines, o tres si desea una correa o, en el caso de arduino, usan un tercero para reiniciar el chip y luego enviar algo antes de que el cargador de arranque entregue la aplicación.

Por lo tanto, a veces usted quiere usar una serie en su diseño para la programación de campo, reducir los pines o eso es lo que prefiere. Es posible que desee jtag, que quiera usb o, en este caso, utilice el ISP de AVR todo el tiempo. Algunos chips le permiten borrar / escribir bloques flash mientras se ejecuta en un bloque flash, lo que significa que puede escribir su propio cargador de arranque utilizando el protocolo que desee. Que es lo que hizo la gente de Arduino, dicen que admiten algún protocolo, pero miran el código del cargador de arranque para ver la verdad.

Ya sea que use el hardware y el software de estante o lo haga por usted mismo, esta interfaz AVR ISP es probablemente la mejor manera de instalarlo en un dispositivo y programa, luego enchufar un zócalo y listo, una grabación y listo. Esp, si terminas con un error en el software puedes volver al programador y reprogramarlo. Los flashes borrados y no borrados son igualmente compatibles.

Así que la conclusión es sobre la libertad de elegir. Programe en un accesorio y luego mueva la pieza, el programa en su lugar, el RE-programa en su lugar, la velocidad de programación, los pines requeridos, los requisitos de software, la programación del hardware del hardware / software / los requisitos de costo. No hay una solución que haga felices a todos. Por lo tanto, el proveedor proporciona una o dos o tres soluciones, y algunas veces puede agregar las suyas por encima de eso.

PERO, debería haber leído la documentación del proveedor de chips para el producto en el que estaba interesado, todos brindan información de programación, sin esa documentación, ese producto es un error porque nadie podría usarlo en una línea de producción. No es nuestro trabajo leer los documentos por ti.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas