11 votos

¿Cuál es el propósito de un cargador de arranque de microcontrolador?

A mi entender, para un microcontrolador común (p.ej. AVR, PIC), hay generalmente dos métodos de programar su memoria flash.

  1. Usando un programador: Programación en serie en circuito (o alguna variante?)
  2. Alguna forma de cargador de arranque, al que se comunica un dispositivo externo, que en última instancia permite que el microcontrolador destelle su propia memoria.

Ciertamente debe haber una muy buena razón para usar un cargador de arranque, de lo contrario su uso generalizado actual sería muy impar. Parece que aún no lo he entendido del todo.

¿Es que un programador es caro? Pero entonces, hay Arduinos (microcontrolador ATmega) que pueden funcionar como programadores . ¿El costo de un IC extra es suficiente para justificar el uso de un cargador de arranque? Si no me equivoco, el último Arduinos se deshizo por completo del chip FTDI, reemplazándolo por un procesador ATmega que hace la interfaz USB a serie. Seguramente sería posible integrar la función del programador en este IC por ejemplo?

O tomar por ejemplo, el microcontrolador PIC. Hay algo que he visto llamado Programador JDM . Si algo así, sin prácticamente ningún componente activo, puede programar un PIC entonces,

  1. ¿Por qué usar un cargador de botas?
  2. ¿Cuál es el propósito de la relativamente mucho más compleja PICkit (aparte de la robustez)? ¿Capacidad de depuración?

17voto

GSerg Puntos 33571

El propósito principal de un cargador de arranque es permitir la actualización del firmware a través de interfaces distintas de la interfaz de hardware predeterminada. Por ejemplo, esto permite realizar actualizaciones a través de canales de comunicación que la aplicación utiliza de otra manera para sus propios fines, lo que significa que puede hacer actualizaciones remotas dentro del sistema sin necesidad de intervención física en el sitio remoto.

Una vez que se tiene esta capacidad, no se necesita ningún hardware adicional, lo que lo convierte en el método de menor coste recurrente, y por eso los sistemas de aficionados como Arduino lo utilizan. También proporciona una pequeña cantidad de bloqueo de marketing, porque ahora necesitas comprar tus chips AVR con el cargador de arranque ya programado en ellos.

10voto

Dakota Puntos 121

Hay algunos escenarios en los que un cargador de arranque no añade mucho valor. Tienes razón, si tienes un par de placas, ciertamente puedes conectar el programador y flashear el código de nuevo. Si eres un aficionado con un par de placas o incluso tienes una pequeña producción puedes hacerlo de esta manera.

Los cargadores de arranque tienen más sentido en escenarios donde conectar físicamente un programador sería menos práctico. Los productos terminados que ya están desplegados, por ejemplo, es uno de esos escenarios

Generalmente cuando tienes un producto electrónico no dejas expuesto un puerto de "depuración" o "programación". Sólo tienes como una Ethernet, o serial, o RS485, o CAN o inalámbrico en tu producto.

¿Y qué pasa si tienes varias decenas o quizás cientos de ellos ya vendidos/desplegados y tienes una actualización de firmware?

En lugar de ir uno por uno abriendo las cajas, conectando el programador, programando, cerrando la caja del producto y así sucesivamente, puedes usar una de las interfaces existentes de tu producto actual para programarlo.

Es incluso mejor cuando tienes "conectados" dispositivos con por ejemplo ethernet o cualquier tipo de inalámbrico. Si pones un módulo inalámbrico en cualquiera de tus productos puedes usar esa comunicación inalámbrica con un cargador de arranque para actualizar el código, de esta manera puedes actualizar varios dispositivos al mismo tiempo y sin tocarlos.

Y se convierte en una característica de ensueño si sus dispositivos están conectados a Internet. De esa manera, puedes actualizar el firmware de todo con un solo clic, mientras tu teléfono recibe sus actualizaciones.

Para un aficionado tal vez no tenga mucho sentido usar un cargador de arranque, pero desde una perspectiva empresarial en la que realmente se venden dispositivos tiene mucho sentido ya que ahorra tiempo, añade mucha comodidad al proceso y si sus usuarios tienen contacto con su dispositivo no tiene que venderles programadores sólo para actualizaciones de firmware (o hacer que compren los programadores de otra manera). ¿Y si sus dispositivos son los mismos funcionalmente pero con diferentes microcontroladores? Tendría que determinar quién tiene qué para enviar o vender el programador correcto, ¡¡¡se convierte en una pesadilla!!

En lugar de esto sólo le pones un puerto USB y todo se oculta al usuario, todo el mundo sabe cómo conectar un USB al PC, copiar un archivo en él y adjuntarlo a otro dispositivo, pero ningún usuario normal sabe qué diablos es un depurador P&E, un PICKit o un Segger J-Link.

Lo siento si esto es un poco confuso, el inglés no es mi idioma y tal vez la redacción es un desastre, pero espero que capte la idea.

¡Salud!

1voto

Ratn Deo--Dev Puntos 473

El propósito principal de un cargador de arranque es:

  • recuperar el programa del almacenamiento / red y cargarlo.

Puede haber una cantidad muy limitada de almacenamiento rápido cerca de la unidad de procesamiento, y el programa que se quiere ejecutar puede ser diferente de una tabla a otra o puede querer cambiar el programa de su tabla. El cargador de arranque es un programa de denominación común que sabe cómo cargar su software personalizado desde donde está almacenado y alimentarlo a la unidad de procesamiento.

Los cargadores avanzados pueden hacerlo:

  • autocomprobación
  • arranque de la red
  • cargar un firmware adicional
  • ...

1voto

dhruvajazz Puntos 1

Aparte de todas las otras grandes respuestas hay una razón más, al menos para los productos comerciales: después de la programación de producción la mayoría de los chips tienen una opción establecida para protegerlos de la lectura de los datos.

Dependiendo del MCU, esta opción de protección de lectura puede desactivar la conexión del programador de hardware (como SWD o JTAG). Si no tiene el cargador de arranque hecho, no puede reprogramar el dispositivo.

Y luego terminas con 10k unidades con software de buggy en el mercado, incurre en una gran pérdida por algo que es esencialmente unos pocos meses de codificación.

0voto

killed slowly Puntos 11

Sólo para dar también la perspectiva de un aficionado:

Hace la vida mucho más fácil al no requerir ningún hardware adicional o mucho conocimiento de bajo nivel. Un ejemplo extremo que usé fue el fotón de partículas (sin afiliación) que pueden ser iluminadas sobre la nube. Las únicas cosas que se requieren para flashear este chip son:

  • Fuente de alimentación
  • WLAN
  • Conexión a Internet
  • Otro ordenador para escribir el software

Hace que el proceso sea bastante barato y en realidad es bastante simple desde una perspectiva de no

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X