31 votos

¿Por qué necesitamos un gestor de arranque separado de nuestro programa de aplicación en microcontroladores?

¿Por qué necesitamos un programa separado en el mismo flash de la memoria de programa de un microcontrolador, específicamente STM32F103, lo que se llama un gestor de arranque?

Qué tiene de especial para mantenerlo separado de la principal de la aplicación del programa?

Generalmente hablando, ¿es un gestor de arranque de un microprocesador basado en el sistema (es decir PowerPC MPC8270) hacer el mismo trabajo que el de un microcontrolador (dicen BRAZO STM32F103) o están haciendo fundamentalmente diferentes puestos de trabajo de cada uno de los otros y sin embargo, ambos se llama un 'bootloader'?

55voto

Venza Puntos 198

Un gestor de arranque en un microcontrolador es responsable de la actualización del firmware principal más de un canal de comunicación distinto de la programación de la cabecera. Esto es útil para actualizar el firmware en el campo, en BLE, UART, I2C, tarjetas SD, USB, etc. Sería muy incómodo para exigir a los clientes para la compra de los programadores sólo para actualizar el firmware de sus dispositivos.

La razón por la que el gestor de arranque se mantiene separada es la fiabilidad. El gestor de arranque y el código de la aplicación se coloca en secciones separadas de flash, por lo que el código de la aplicación puede ser borrado y re-escrito por el gestor de arranque sin necesidad de cambiar cualquier cosa relacionada con el código del gestor de arranque.

Si el gestor de arranque de la aplicación y se mantuvieron juntos, entonces el código del gestor de arranque sería necesario copiar a la memoria RAM antes de que pudiera ejecutarse, ya que cualquier actualización de firmware borrar el código del gestor de arranque en flash. Si la energía se corta con el código del gestor de arranque en la memoria RAM y la flash borrado, el dispositivo sería de ladrillo.

26voto

Ozzyprv Puntos 1
  1. De modo que el proceso de carga puede recuperarse de los errores. Supongamos que hay un error de comunicación o de alimentación se desconecta durante una actualización. Si el gestor de arranque se parte de la aplicación que se estaba actualizando, a continuación, el usuario no podrá volver a intentarlo sin el uso de hardware especial para flashear a gestor de arranque.

  2. Algunos microcontroladores no se puede ejecutar código de RAM. Si el gestor de arranque se mezcló con el resto del software, a continuación, usted realidad no iba a ser capaz de actualizar su software, ya que usted no puede borrar las páginas de flash que se están ejecutando actualmente fuera de. El trabajo de todo es que grabar primero el nuevo código para la segunda mitad de flash, a continuación, saltar a él. El nuevo código, a continuación, copia a sí mismo en la primera mitad de flash. Por supuesto, la desventaja es que la quema de flash es generalmente lenta y ahora que tienes que hacerlo dos veces el proceso de carga puede tardar hasta dos veces como mucho. También este trabajo-en torno a los límites de su aplicación, el tamaño no más grande que la mitad de su total flash.

  3. Bien escrito gestores de arranque para intentar comprobar que el código válido existe en el dispositivo antes de intentar ejecutarlo. Si el gestor de arranque y el resto del código se mezclan entonces, ¿cómo puede usted estar seguro de que su rutina de validación iba a funcionar si todo el código no carga?

  4. La autenticación. Seguro gestores de arranque para intentar comprobar que la carga de la aplicación coincide con el de una firma digital antes de la ejecución. Pero si el gestor de arranque y el resto del código se mezclaron juntos, entonces usted no puede controlar lo que se ejecuta en el dispositivo, porque una vez que el usuario carga el nuevo código no se puede controlar lo que sucede en el inicio.

11voto

shanyu Puntos 4775

Generalmente están allí para permitirle actualizar su programa de aplicación principal.

Necesita algún código que sepa cómo borrar y reprogramar parte del flash interno, que no puede ser el programa principal, ya que cuando se borra, no podría reprogramarse.

9voto

e-r Puntos 11

El gestor de arranque le permite al MCU comunicarse con otra cosa para aceptar un nuevo programa, almacenarlo y ejecutarlo después de un reinicio. Si no tenía un gestor de arranque, entonces se necesita un programador para acceder a la memoria y poner el programa en su lugar.

7voto

Jacco van Dorp Puntos 521

Además de las otras respuestas correctas sobre lo que permite la reprogramación del firmware principal del gestor de arranque, otra ventaja de tener el bootloader ser independiente es que se puede, lógicamente, separar la parte de "hacer una vez en el arranque" tareas desde el código que usted necesita durante el tiempo de ejecución. Entonces, después de que el gestor de arranque termina sus tareas de configuración inicial, la principal firmware puede desalojar el gestor de arranque con todos sus que ya no se necesita código de la memoria, ahorrando espacio en RAM. Es posible lograr esto en otras formas, pero el bootloader y el firmware división hace que sea mucho más fácil que en muchas arquitecturas.

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