Uboot papel y el proceso de iniciar el kernel

1. Introducción del cargador de arranque

Después de que el sistema de energía, que necesita un programa para inicializar: organismo de control apagado, cambiar el reloj del sistema, inicializa el controlador de memoria para copiar el código en la memoria más moderado. Es el gestor de arranque.

gestor de arranque muy dependiente de la implementación de hardware específica, en sistemas embebidos, configuraciones de hardware varían ampliamente, incluso para la misma CPU, los sus periféricos (tales como flash) pueden ser diferentes, es imposible apoyar todo el cargador de arranque tiene una CPU, y cualquier circuito bordo. Aún más el apoyo de la CPU arquitectura UBoot, ni se trajo una puede ser utilizado (a no ser configurado dentro de la tabla y de la misma manera). Se requiere cierta configuración.

Tras el encendido de la CPU, comienzan a partir de una determinada dirección, tales como la arquitectura MIPS CPU tomará de primera instrucción 0xBFC00000, la estructura de la CPU ARM comenzará a partir de 0x00000000, placa de desarrollo integrado, el dispositivo de memoria ROM requiere como flash o asignada a esta dirección, el cargador de arranque en depósito al comienzo de esta dirección, y un encendido comenzó. (RAM y la ROM del teléfono respectivamente memoria del ordenador y disco duro)

2. Iniciar el proceso.

u-boot inicio del sistema procesa la mayoría stage1 y stage2 gestor de arranque se divide en dos partes, u-boot no es una excepción.

El código que se basa en la arquitectura de la CPU (por ejemplo, código de dispositivo de inicialización, etc.) normalmente se coloca stage1 y puede implementarse en lenguaje ensamblador, y stage2 lenguaje C se implementa normalmente, que puede implementar funciones complicadas, pero puede ser mejor leer y portabilidad.

1.Stage1 start.S u-boot estructura de código del código se coloca generalmente archivo start.S el Stage 1, que escrito en lenguaje ensamblador, parte de código sigue el principal

(1) que define la entrada. El trabajo se realiza modificando la secuencia de comandos de enlace.

(2) establecer la excepción vector (Vector excepción).

(3) Establecer la velocidad de la CPU, la frecuencia de reloj y el registro de control de terminal.

(4) inicializar el controlador de memoria.

(5) La ROM se copia en la memoria RAM.

(6) las interrupciones deshabilitar, fuera watchdog

(7) inicializar la pila, el segmento bss claro para la segunda fase de preparación.

(8) a la RAM para su ejecución, el trabajo puede ser utilizado para completar el pc LDR instrucción.

2, Etapa 2

comienzan brazo porciones de código de arranque lenguaje C lib_arm / board.c es una función del lenguaje C es la función principal de iniciar todo el lenguaje de código de arranque C, también la totalidad de u-boot (armboot) una función principal, que simplemente completar las operaciones siguientes :

(1) llamar a una serie de función de inicialización.

(2) inicializar un dispositivo de almacenamiento

(3) El hardware inicial simple tal como de serie, lcd etc.

(4) inicializar el dispositivo de red asociado, llenar IP, la dirección MAC.

(5) en el comando de bucle (es decir, ciclo de trabajo de todo el arranque), la recepción de un comando de usuario introducida desde el puerto serie, entonces el trabajo correspondiente.

Aquí Insertar imagen Descripción

Publicados 137 artículos originales · ganado elogios 44 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_38769551/article/details/105143583
Recomendado
Clasificación