¿Cuál es el propósito de un cargador de arranque con microcontrolador? [duplicar]

10

En mi opinión, para un microcontrolador común (por ejemplo, AVR, PIC), generalmente hay dos métodos de programación de su memoria flash.

  1. Utilizando un programador: Programación en serie en circuito (¿o alguna variante?)
  2. Alguna forma de un gestor de arranque, con el que se comunica un dispositivo externo, permitiendo en última instancia que el microcontrolador emita su propia memoria.

Ciertamente, debe haber una muy buena razón para usar un gestor de arranque, de lo contrario, su uso generalizado actual sería muy extraño. Parece que aún no lo he comprendido completamente.

¿Es que un programador es caro? Pero luego, hay arduinos (microcontrolador ATmega) que pueden funcionar como programadores . ¿El costo de un IC adicional es suficiente para garantizar el uso de un cargador de arranque? Si no me equivoco, los Arduinos más recientes se deshacen completamente del chip FTDI y lo reemplazan con un procesador ATmega que hace que el USB se conecte en serie. ¿Seguramente sería posible integrar la función del programador en este IC, por ejemplo?

O tomemos por ejemplo, el microcontrolador PIC. Hay algo que he visto llamado programador JDM . Si algo como esto, prácticamente sin componentes activos, puede programar un PIC entonces,

  1. ¿Por qué usar un gestor de arranque?
  2. ¿Cuál es el propósito del PICkit relativamente mucho más complejo (aparte de la robustez)? ¿Capacidad de depuración?
pregunta midnightBlue

6 respuestas

16

El propósito principal de un gestor de arranque es permitir actualizar el firmware a través de interfaces que no sean la interfaz de hardware predeterminada. Por ejemplo, esto permite 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 en el sistema sin requerir intervención física en el sitio remoto.

Una vez que tenga esta capacidad, necesita cero hardware adicional, lo que lo convierte en el método con el costo recurrente más bajo, y es por eso que los sistemas de aficionados como Arduino lo usan. También proporciona una pequeña cantidad de bloqueo de marketing, porque ahora necesita comprar sus chips AVR con el cargador de arranque ya programado en ellos.

    
respondido por el Dave Tweed
9

Hay algunos escenarios en los que un cargador de arranque no agrega mucho valor. Tienes razón si tienes un par de tableros, sin duda puedes adjuntar el programador y actualizar el código nuevamente. Si eres un aficionado con un par de tablas o tienes una producción pequeña, puedes hacerlo de esta manera.

Los cargadores de arranque tienen más sentido en los escenarios donde la conexión física de un programador sería menos práctica. Los productos terminados que ya están implementados, por ejemplo, son uno de esos escenarios

Generalmente, cuando tiene un producto electrónico, no deja expuesto un puerto de "depuración" o "programación". Solo tiene como Ethernet, o serie, o RS485, o CAN o inalámbrica en su producto.

También, ¿qué sucede si tiene varias decenas o quizás cientos de ellas ya vendidas / implementadas y tiene una actualización de firmware?

En lugar de ir uno por uno abriendo los gabinetes, adjuntando el programador, programando, cerrando el caso del producto, etc., puede usar una de las interfaces existentes de su producto actual para programarlo.

Es incluso mejor cuando tiene dispositivos "conectados" con, por ejemplo, Ethernet o cualquier tipo de conexión inalámbrica. Si coloca un módulo inalámbrico en cualquiera de sus productos, puede usar las comunicaciones inalámbricas con un cargador de arranque para actualizar el código, de esta manera puede 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, puede actualizar el firmware de todo con un solo clic, a medida que su teléfono recibe sus actualizaciones.

Para un aficionado, tal vez no tenga mucho sentido usar un gestor de arranque, pero desde una perspectiva comercial en la que en realidad está vendiendo dispositivos, tiene mucho sentido ya que ahorra tiempo, agrega mucha conveniencia al proceso y si sus usuarios tienen Póngase en contacto con su dispositivo, no tiene que venderles a los programadores solo para actualizaciones de firmware (o hacer que compren a los programadores de otra manera). ¿Y qué pasa si sus dispositivos son iguales funcionalmente pero con microcontroladores diferentes? ¡Tendría que determinar quién tiene qué para enviar o vender el programador correcto, se convierte en una pesadilla!

En lugar de esto, solo le pones un puerto USB y todo se oculta al usuario, todos saben cómo conectar un USB a la PC, copiar un archivo y adjuntarlo a otro dispositivo, pero ningún usuario normal lo 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 sea un desastre, pero espero que sepas la idea.

¡Saludos!

    
respondido por el m4l490n
1

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

  • recupere el programa del almacenamiento / red y cárguelo.

Puede haber una cantidad muy limitada de almacenamiento rápido cerca de la unidad de procesamiento, y el programa que desea ejecutar puede ser diferente de una tabla a otra o es posible que desee cambiar el programa en su tarjeta. El gestor de arranque es un programa de denominador común que sabe cómo cargar su software personalizado desde donde está almacenado y enviarlo a la unidad de procesamiento.

Los cargadores de arranque avanzados pueden hacer:

  • autopruebas
  • arranque de red
  • cargar firmware adicional
  • ...
respondido por el dnozay
1

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

Según la MCU, esta opción de protección de lectura puede deshabilitar la conexión del programador de hardware (como SWD o JTAG). Si no tiene el gestor de arranque, no puede reprogramar el dispositivo.

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

    
respondido por el Jan Dorniak
0

No es el costo del programador. Las ventas no provienen de aficionados; es un factor, pero no el factor, las personas que compran en volumen pueden ciertamente permitirse a los programadores. Tienes algunas opciones:

  1. Haga que las piezas estén preprogramadas, ya sea por el proveedor de piezas o por un intermediario o por su empresa de fabricación, y luego las coloque en la pizarra

  2. Algún tipo de programación en circuito después de colocarlo en la pizarra

Dentro de la segunda categoría tiene las soluciones lógicas duras ( SPI o SPI-ish en chips AVR) y las soluciones blandas (un gestor de arranque, un programa que se ejecuta en la parte que usa la parte). Algunos tienen ambos.

La solución difícil que tienes que hacer bien, si te gusta el diseño, debes captarlo con anticipación o tu producto es un montón de piezas inútiles que tienes que desechar. Puede cambiar las soluciones de software incluso en la medida en que publique silicio; Incluso puede hacer un inventario, ejecutarlo y reprogramarlo. Por lo tanto, existe el lujo de que un error en su producto sea más fácil de corregir y / o crear. La solución suave también puede permitir una variedad más amplia de opciones para el usuario. SPI Y I²C Y USB Y serial Y cualquier solución de hardware si la hay. Una solución suave en algunos casos, el usuario puede reemplazar el gestor de arranque por sus propios motivos.

No todos los microcontroladores pueden tener software que pueda programar su propio flash, pero para cualquiera que lo haga, el usuario puede hacer que su propio cargador de arranque sea independiente del suministrado por el proveedor de chips si existe uno suministrado por el chip.

Con ARM Cortex-M y SWD Estoy viendo que las cosas cambian; algunos chips son SWD solamente, y ningún otro de la opción de fábrica. Acabo de recibir un Atmel SAM D21 ; ya no tienen el SAM-BA y proporcionan una fuente para que puedas agregar la tuya en el inicio de la memoria flash del usuario, y algunos registros para protegerlo, pero es trivial de borrar. Demasiado para eso; también puede hacer su propio SWD o utilizarlo.

Mira el mundo Arduino / AVR, los aficionados. Ellos tienen su propio gestor de arranque y esa es la interfaz principal, ya que viene gratis. Puede obtener un programador de ISP por unos pocos (o unas pocas docenas) de dinero. Pero observe cómo hay una serie de otras tarjetas AVR que funcionan con protocolos basados en USB en lugar de los cargadores de arranque populares hasta ese momento. Algunos de estos protocolos USB se están utilizando de forma cruzada.

Al final del día, si sus clientes lo desean y / o su departamento de marketing puede usarlo para distinguir nuestro producto de los suyos y no reducir el costo del producto o la ganancia. Por qué no? Ganar-ganar.

No hay una respuesta correcta para esta pregunta; Todo está basado en la opinión. Puede ponerse en contacto con cada uno de los proveedores de chips y preguntarles, pero las personas que respondan van a dar su opinión, es probable que ni siquiera sepan o hayan hablado con las personas que agregaron esa característica o la mantuvieron. No hay respuesta a esta pregunta.

    
respondido por el old_timer
0

Solo 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 utilicé fue el fotón de partículas (sin afiliación) que puede aparecer en la nube. Las únicas cosas necesarias para flashear este chip son:

  • fuente de alimentación
  • WLAN
  • conexión a Internet
  • Otra computadora para escribir el software

Hace que el proceso sea bastante económico y en realidad es bastante simple desde una perspectiva no pro.

    
respondido por el magu_

Lea otras preguntas en las etiquetas