¿Se necesita un cargador de arranque para volcar la memoria flash a la RAM? ¿Por qué?

0

Cuando se inicia un microcontrolador, ¿se obtienen las instrucciones directamente de la memoria flash? Pero a veces se usa un cargador de arranque.

Si es así, ¿por qué usamos un cargador de arranque para volcar los datos de la memoria flash en la RAM?

¿Cómo puedo saber si el microcontrolador obtiene las primeras instrucciones de inicio directamente desde la memoria flash o mediante RAM?

Edit: ¡Mi pregunta es sobre el cargador de arranque! Esto no es duplicado en absoluto.

    
pregunta user16307

2 respuestas

5

"Cargador de arranque" tiene muchos significados diferentes.

  • En algunos microcontroladores (generalmente más lentos) los datos de instrucciones se almacenan en la memoria flash del chip y se ejecutan directamente desde allí. Esto obviamente requiere que el flash se pueda leer tan rápido como la MCU ejecuta las instrucciones. Un cargador de arranque en estos chips es una porción de código en un rango de direcciones reservado que se ejecuta antes del programa principal y cuyo propósito es reescribir el resto del programa cuando sea necesario. Por ejemplo, los arduinos basados en AVR contienen un gestor de arranque que permite que los chips se reprogramen a sí mismos sobre el UART al cargar un "boceto".

  • En otros microcontroladores (generalmente más rápidos) los datos de instrucciones aún se almacenan dentro del flash en chip, pero se transfieren a la memoria RAM en chip antes de la ejecución. Esto se debe a que diseñar flash lo suficientemente rápido como para ejecutarse directamente no sería práctico. En estos casos, el gestor de arranque aún se refiere a un fragmento de código para reescribir el flash, ya que la transferencia de datos se realiza en hardware.

  • En otros, todavía hay suficiente flash (o ROM / EEPROM) para almacenar el cargador de arranque, cuyo único propósito es copiar las instrucciones de la memoria externa (generalmente SPI / I2C flash) en la RAM antes de la ejecución.

respondido por el jms
2

La página de wikipedia para el gestor de arranque hace un buen trabajo, se centra más en las cosas de la PC, pero aún así está bien.

La parte del cargador de la palabra (o palabra independiente si escribe bootloader vs bootloader, no sé si una es correcta o incorrecta) implica que no solo arranca el sistema, sino que también permite la carga como en un herramienta para que el cargador de arranque u otros desarrolladores puedan entrar y cambiar cosas o hacer experimentos antes de que se inicie la aplicación o el sistema operativo, básicamente interfieren con el proceso de arranque si se desea. De lo contrario, simplemente arranca el sistema.

Comprende que el gestor de arranque en sí es solo un programa. El procesador no conoce un cargador de arranque de un agujero en la pared, es solo un código de máquina para ejecutarse en el lugar correcto cuando se enciende o se desactiva el reinicio.

Pueden servir para muchos propósitos y los como uboot que te preparan para Linux son casi, o en algunos casos, son sistemas operativos con el tamaño masivo de la fuente. pesado en ese lado del cargador, permitiendo que las pilas tcp / ip completas lleguen a través de las redes para bajar los binarios experimentales. soporte para varios sistemas de archivos, etc.

el caso de uso típico de un microcontrolador es no usar un cargador de arranque, usted inicia directamente en la aplicación y lo ejecuta desde flash. Es por eso que la relación entre el tamaño del flash y el tamaño del ram es tan alta, su programa está destinado a vivir y ejecutarse desde el flash. Los problemas de lectura y otros problemas de flash no pueden estar presentes en esos chips para que sean productos exitosos. aunque en la programación de circuitos, la tendencia es tener un método de arranque alternativo ya sea del propio proveedor de chips o siempre algo que pueda agregarse usando un pin de gpio. ata los pasadores de una determinada manera y algunos otros códigos de arranque, un cargador de arranque que le permite, idealmente, reprogramar la aplicación principal en flash, en circuito. los viejos tiempos retiró el microcontrolador de su zócalo DIP, lo pegó en un programador o borrador y finalmente lo reprogramó, o escribió su propio cargador de arranque y usó un gpio pin o presionó esc o algo después de unos segundos de arranque (en un uart), que tipo de cosas.

el cargador de arranque es como se menciona en la página de wikipedia. También se puede usar y, a veces, se usa para poner el sistema en un estado conocido para las aplicaciones que siguen. no es realmente tan interesante para un microcontrolador, pero definitivamente para algo más grande, inicie dram y la interfaz de red tal vez enumere el bus pci o el usb, etc. Cosas que serían comunes a cualquier sistema operativo que sigue para que el sistema operativo solo pueda ejecutarse y No tengo que hacer esas cosas.

Algunos microcontroladores, el gestor de arranque programado de fábrica (a menudo en un instante, no puede cambiar o requiere diferentes pasos para cambiar la aplicación) solo funciona con pasadores atados de una determinada manera. Otras soluciones, el flash del gestor de arranque siempre se ejecuta, escanea la aplicación y decide si hay una aplicación allí y salta a ella y / o se vuelve a asignar y hace un restablecimiento completo o no. Por qué en el NXP creo que es la primera vez que muchas palabras tienen que tener una suma de comprobación válida. Otros, cualquier cosa que no sea 0xFF, intentará arrancar.

para el arranque de Linux, por ejemplo, el cargador de arranque sería el que copia el sistema de archivos raíz y el kernel a ram se ramifica al kernel. Sin embargo, para un microcontrolador, el gestor de arranque no debería hacer lo que debería hacer su aplicación si cualquier dato tiene que moverse. el código de arranque antes de que ramifique a main () copiaría la sección .data a ram si tiene .data y pone a cero la sección .bss, establezca el puntero de la pila y la rama a main.

en resumen, en un microcontrolador no necesita un gestor de arranque, si es que suele haberlo en la programación / actualizaciones del sistema. su aplicación se ejecuta desde flash y solo las variables y otros elementos de lectura / escritura viven en RAM.

    
respondido por el old_timer

Lea otras preguntas en las etiquetas