¿Puedo escribir un cargador de arranque para Atmega usando el puerto serie?

Hay una gran diferencia de precio entre un chip Atmega328 vacío y el que tiene instalado el cargador de arranque Arduino. En mi país, esta diferencia es de 1:3. Esto significa que cargar el cargador de arranque manualmente me ahorraría mucho dinero, mientras que esta operación toma alrededor de 5 minutos en total.
Escuché (pero no leí) sobre la posibilidad de hacer que un Arduino cargue el gestor de arranque en otro Atmega. Esto tiene al menos 2 desventajas:

  1. Necesitas tener un Arduino primero.
  2. Debes convertir ese arduino en un dispositivo de programación, para que no puedas divertirte con él.
  3. El proceso será difícil de controlar hasta que se implementen algunas técnicas avanzadas (leds de control, botón de inicio)

Tengo algunas PC antiguas con puerto serie real estándar y también tengo un convertidor de USB a serie.

  • ¿Hay alguna posibilidad de crear un pequeño PCB que se conecte directamente a una PC y sirva para cargar el cargador de arranque en el chip?
  • ¿Es posible para mí crear una aplicación para esto en C++? (Soy principiante, pero no me rindo rápido) ¿O ya existe?
  • ¿Podría proporcionar enlaces a cualquier tutorial relacionado con este asunto?
¿Por qué necesitas "sacrificar" un Arduino? Una vez hecho esto, simplemente desenchufas todo y puedes empezar a trabajar. ¿Te refieres al desarrollo del software y las pruebas?

Respuestas (2)

La respuesta es que es muy fácil arrancar su Arduino directamente desde su computadora, simplemente usando una interfaz simple de USB a serie. Cuando arranqué mi propio Arduino para un Reprap, usé un USBTinyISP para conectarme al Arduino (requiere un poco de circuito, pero no es mucho) y luego usé AVRDUDE para cargar el gestor de arranque directamente al Arduino. Obviamente, no es la única forma, pero es una que me ha funcionado en el pasado y que es mucho más barata que usar otro Arduino.

Para obtener el cargador de arranque Arduino en un dispositivo AVR no programado, inicialmente necesita un programador especial.

Hay, sin embargo, una serie de programadores bastante fáciles de construir que utilizan un puerto serie o paralelo.

SI-Prog es un programador que trabaja fuera del puerto serie. Sin embargo, es posible que esto no funcione con algunos puertos serie (principalmente algunos adaptadores serie USB; depende del adaptador específico).

PonyProg es la utilidad de programación.


Realmente, probablemente sería más barato y más fácil comprar un ISP USBtiny . Este programador trabajará con AVRstudio y avrdude.

Solo para agregar una nota: recientemente no pude tener éxito con el programador USBasp . Realmente no es divertido quemar el gestor de arranque de ninguna manera.
Nunca he tenido problemas significativos con ninguno de los programadores fabricados por atmel (tengo un AVR One y un AvrISP MK2). Probablemente sea un buen ejemplo de "obtienes lo que pagas".