Cuándo usar un cargador de arranque Arduino

Necesito hacer un robot dentro de un mes para una competencia. Solía ​​​​usar Arduinos para mis proyectos, pero me gradué de código intermitente con avrdude a microcontroladores AVR independientes.

Estaba pensando, solo porque ya no uso el hardware Arduino, ¿hay alguna razón para no grabar un cargador de arranque Arduino en mis microcontroladores para algunos proyectos? ¿Hay escenarios (como mi tarea actual) en los que hacerlo sería realmente ventajoso?

Es un poco más fácil escribir código para un Arduino y hay varias bibliotecas de código abierto. Estoy seguro de que hay otras ventajas (y desventajas) clave que no conozco, pero que me gustaría conocer.

Esencialmente, bajo qué escenario(s) sería una buena idea grabar un cargador de arranque Arduino en mi microcontrolador.

Parece estar confundiendo el cargador de arranque Arduino y las bibliotecas de tiempo de ejecución de Arduino, o bien haciendo dos preguntas distintas que se ejecutan juntas. Son dos piezas de software completamente separadas y puede usar una sin la otra. En cuanto al cargador de arranque, podría ser muy útil a menos que no encaje, no pueda tolerar el retraso en el inicio o necesite bloquear las cosas.
@ChrisStratton Ya veo. Puedo estar confundiendo esos dos, pero esa no es la esencia de mi pregunta. Básicamente, quiero saber cuándo/por qué debería considerar usar el cargador de arranque Arduino en lugar de cómo uso actualmente mis microcontroladores. En otras palabras, excepto por las tres razones que diste, ¿por qué alguien no querría usar el cargador de arranque Arduino? Veo tantos proyectos de AVR en los que la gente no lo usa y no está sujeto a esas tres restricciones (tamaño, demora, permanencia). Gracias.

Respuestas (2)

La respuesta básica es que algunas personas no quieren comprar o hacer un programador. Solo necesitan un puerto serie para programar el IC usando un gestor de arranque. Es más barato.

O en algún momento desea poder actualizar su código en el campo sin usar su costoso programador. Entonces un gestor de arranque está bien.

Pero si piensa en el uso de su sistema y no encuentra la necesidad de un cargador de arranque, entonces no hay razón para conservarlo. Se necesita espacio flash para nada.

El cargador de arranque Arduino es solo un cargador de arranque: algo que permite que el chip se programe con nuevos datos en el arranque. Nada más. Por lo tanto, tenerlo o no no afecta el rendimiento de su código (excepto por el espacio flash disponible o el retraso en el inicio).

Respondiendo así a tu pregunta:

  • Si no tienes un programador -> mantén el bootlaoder
  • Si tiene un programador -> depende de usted, depende si desea poder actualizar sin el programador o no.
Ya veo. Supongo que realmente no entendí qué es un gestor de arranque en el contexto de mi pregunta. Aunque todavía no entiendo cómo puede programar la MCU en serie. ¿Es esa solo la función principal del cargador de arranque Arduino? ¿Recibe los datos a través de un enlace serial y los muestra internamente? Puedo estar completamente fuera de aquí. Además, tengo un programador. Uso el USBasp, así que no es nada lujoso, pero sigue siendo perfectamente funcional.
El cargador de arranque se coloca en el punto de entrada de ejecución de su MCU. Se ejecuta desde el principio. Su finalidad es detectar si alguien quiere comunicarse con él por el puerto serie. Si no, llama a su software. En caso afirmativo, utiliza la función de programación de flash automático de la MCU para reprogramar su flash (¡excepto él mismo!) con los datos que le proporciona a través del puerto serie.
@capcom: esa no es solo la función principal de un cargador de arranque, ¡es la ÚNICA función! Entonces, como dice Blup1980, si no necesita el gestor de arranque para esa función, no hay ninguna razón para seguir usándolo.
Genial gracias. Y solo para aclarar mi comprensión, ¿puedo usar las bibliotecas que la gente escribe para Arduinos directamente en mi MCU?
@WoutervanOoijen Gracias por la respuesta tan clara.
Sí. La única diferencia es que mientras construyes la aplicación debes decirle al IDE que no usas un gestor de arranque. (A menos que el cargador de arranque sea muy inteligente, que IIRC no lo es).

Esto puede parecer un poco simplista, pero si no necesita el cargador de arranque Arduino (porque no necesita volver a actualizar su AtmegaXXX a través de un enlace en serie en el circuito), entonces no necesita un cargador de arranque. Eso es todo lo que un gestor de arranque hace por ti.

En general, descubrí que mantener el cargador de arranque Arduino en mis microcontroladores Atmega los hace más flexibles en el campo. Pero los míos no se usan para robots separados; se utilizan en controladores de equipos e instalaciones, generalmente al final de enlaces largos RS-232. Puedo sentarme en mi computadora principal y cargarles nuevo firmware a mi antojo, y se siente un poco como si estuviera cargando firmware a una sonda marciana. No lo querría de otra manera.