2011-09-26 20 views
11

Me gustaría sistematizar mi conocimiento de U-Boot/linux. ¿Es cierto que se necesitan 2 fases de gestor de arranque como mínimo en cada plataforma integrada? ¿O puede variar el siguiente proceso?Linux embebido - Fases de arranque

  1. El cargador de arranque de 1a etapa (puede ser un arranque en U) se almacena en la ROM interna del procesador y no se puede actualizar. Se ejecutará desde la memoria caché interna. Este U-Boot necesita (al menos): inicializar la RAM, inicializar el flash externo, inicializar la consola serie, leer y ejecutar el gestor de arranque de la segunda etapa.

  2. El cargador de arranque de segunda etapa (puede ser U-Boot) se almacena en la memoria flash RW. Controlará las funciones de ethernet, flash RW, etc. Este U-Boot se puede personalizar y sobrescribir. La tarea principal es cargar el kernel de Linux en la RAM y ejecutarlo.

  3. inicio del kernel de Linux.

¿Es el gestor de arranque de 1a etapa siempre de solo lectura?

Respuesta

11

Dónde, cómo ese primer gestor de arranque depende mucho del sistema. Es posible que tenga algún tipo de dispositivo de arranque usb que enumera y descarga el firmware para ram todo en hardware luego el procesador arranca desde ese RAM.

Normalmente, sí, el primer arranque es una especie de flash. Es una buena idea tener el primer gestor de arranque súper simple, esencialmente 100% libre de errores y duradero y confiable con tal vez una manera en serie o de otra manera para entrar para que pueda usarlo para reemplazar el segundo/cargador de arranque real.

Idealmente, el segundo gestor de arranque también quiere ser flash, el segundo gestor de arranque querría hacer la mayor parte del trabajo, inicializando ddr, configurando ethernet si quiere tener algún tipo de depuración o transferencia de archivos basada en ethernet, bootp, etc. Siendo significativamente más grande y más complicado, se espera que ambos tengan errores y necesiten ser actualizados con más frecuencia que el gestor de arranque principal. Se espera que el primario no se sobrescriba para que pueda reemplazar cómodamente el segundo gestor de arranque sin bloquear el sistema.

¿Todos los sistemas usan lo anterior? No, algunos/muchos solo pueden usar un solo gestor de arranque, y tal vez haya una pausa muy temprana, de modo que una pulsación de tecla en un puerto serie puede interrumpir el gestor de arranque y llevarlo a un lugar donde puede volver a cargar el gestor de arranque. Permitiendo el desarrollo de un gestor de arranque con menos posibilidades en la creación de bloques, pero aún existe la posibilidad de que desordese ese primer bit antes e incluya la pulsación de tecla y la carga del flash en serie. Una vez más, esa cosa del cargador en serie no siempre está presente, solo es una conveniencia para los desarrolladores de bootloader. A menudo la alternativa será jtag, o una fiesta de graduación removible u otra forma de sistema para entrar y reprogramar la fiesta de graduación cuando la enciendas (también, a veces, de la misma manera que la programas la primera vez en el sistema cuando se produce la placa, algunos diseños son fabricables para ahorrar costos y usar flashes preprogramados durante la fabricación, por lo que el primer arranque funciona).

Un cargador de arranque de Linux no requiere todo/nada de esto, un ram de configuración muy muy mínimo, prepara la línea de comando o atags o lo que sea y se ramifica a Linux.

Es una pregunta cargada, ya que la respuesta depende en gran medida de su sistema, procesador, ingenieros de diseño (incluyéndolo a usted). Tradicionalmente, los procesadores arrancan desde el flash y el gestor de arranque obtiene la memoria y algunas otras cosas para que el próximo bit de código pueda ejecutarse.El próximo bit de código puede provenir de muchos lugares, usb, disco, flash/rom, ethernet/bootp/tftp, pcie, mdio, spi, i2c, etc. Y puede haber tantas capas entre el inicio de reinicio y el inicio de linux como el diseño desea o requiere.

6

El gestor de arranque de primera etapa no tiene que ser de solo lectura, pero poner un gestor de arranque de solo lectura en la ROM con algún modo de recuperación es útil en caso de que corrompa las partes de lectura y escritura de flash; de lo contrario, deberá conectar físicamente un programador al chip flash para poder recuperarlo.

4

Si está utilizando U-Boot, el gestor de arranque de 2da etapa se puede omitir para acelerar el tiempo de arranque. En otras palabras, el gestor de arranque de primera etapa (SPL) cargará el kernel de Linux directamente, salteando el gestor de arranque de la segunda etapa (u-boot). En U-Boot, esto se llama Falcon Mode.

Cuestiones relacionadas