La comprensión en profundidad de uboot (análisis de proceso de inicio procesador)

El trabajo relacionado con el trasplante uboot más recientemente ha estado haciendo, tenemos que uboot-2016-7 portado a ARMv7 diseño de la unidad de procesador. feriado por el Día de Año Nuevo durante tres días sólo nada más que hacer, no se había completado en el momento los resultados más recientes de la obra para organizar. Antes de aprender uboot, leído muchos artículos en Internet, muchos de los cuales se basan en la versión antigua del uboot, y muchos están empezando análisis directamente desde el código, uboot no se combina con la arquitectura del procesador ARM. Después de todo, una gran cantidad de tiempo para hacer una cosa, usted sabe cómo hacerlo y lo sabes ¿por qué hacer dos conceptos diferentes. A saber Inglés a menudo dicen: ¿cómo? Y ¿por qué?  

       La nueva versión de el año 2016 el número de julio la liberación de uboot trasplantado a las unidades de mesa y depuración, esto también va a compartir mis resultados de aprendizaje para todos. Papel, hay muchos lugares para unirse a mi propia comprensión, puede no ser exacta, espero que proponemos modificaciones.

       Antes de empezar a entender el procesador inicia el proceso, por favor tener dos herramientas:

Fuente Paquete 1.uboot-2016-7 

(El código abierto sólo tiene que descargar la descarga oficial: ftp: descarga //ftp.denx.de/pub/u-boot/ u-boot-2016.07.tar.bz2)

2. Código fuente de software de lectura de comprensión

(Recomendado paquete fuente! Uboot puede imaginar que hay más de 10.000 archivos, cada archivo tiene cientos o incluso miles de líneas de código línea. Como ningún lector de código profesional para encontrar los prototipos de las funciones. Por supuesto, no todo tiene que mirar a! Acuerdo con sus necesidades ir a la vista)

Bien descarga simultánea estos documentación técnica

 (He leído en el aprendizaje uboot varios documentos se pueden leer en la demanda de encontrar absolutamente ninguna necesidad de cola de la cabeza releer)

ARMv7-Una empresa de arquitectura 1.arm oferta oficial estructura del documento 

"ARM Arquitectura Manual de referencia ARM®v7-A y ARM®v7-R"

(Garantía de calidad oficiales! Si piensa que el Inglés puede mirar difícil ver Du Chunlei "arquitectura ARM y programación")
2. "Uboot en start.S fuente de _v1.6.pdf analítico detallado a nivel de instrucción" (Bueno china la gota)

(Extremadamente útil para comprender la compilación brazo GNU)

3. "Manual de instrucciones ARM Conjunto de consulta rápida .pdf" (gotas para los chinos)

(Manuales de herramientas, instrucciones de encontrar rápidamente todo tipo de uso del brazo)

4. "Explicación de instrucciones ARM [Standard ARM] .pdf" (chino o gotas)

(Brazo algunas de las normas y forma común de recopilación de muchos ejemplos útiles: llamadas a subrutinas, la transferencia a granel, la replicación bloque del programa es útil para escribir el metal desnudo, también es de gran ayuda en el kernel uboot comprensión y código de inicio.)

5. "auto-cultivo de programador - enlace se carga con la biblioteca .pdf" (todo en chino gotas)

(La parte más importante del programa que introducirá enlaces de archivos ELF curso es ayudar a entender la reubicación del núcleo uboot! Esto es muy importante !!)

       Pues bien, ahora a los negocios.

     ¿Cuál es uboot?

        En el sistema operativo embebido, cargador de arranque se ejecuta antes de que el núcleo del sistema operativo para funcionar. Se puede inicializar los dispositivos de hardware, el establecimiento de un mapa espacio en la memoria, el hardware del sistema y el entorno de software que traerá un estado apropiado, con el fin hasta el último momento al núcleo del sistema operativo listo para el entorno adecuado. En sistemas embebidos, por lo general no le gusta ese tipo de firmware del BIOS (nota, algunos CPU embebido será construido para un programa de puesta en marcha corta), por lo que todo el sistema está completamente cargado para iniciar la tarea realizada por el cargador de arranque. cargador de arranque uboot es una especie de, el nombre completo del universal del cargador de arranque.

      Objetivo: para iniciar uboot ARMv7 diseño de la unidad de procesador.

      Pregunta: ¿Cómo empezar? ¿Qué procesos se inician?

      En primer lugar, me gustaría utilizar para describir la memoria en esta necesidad junta de trasplante de uboot (arquitectura de procesador temporal no puede considerarse, me gustaría volver uboot analizar la estructura del procesador de documentos inicialización ARMv7-Un brazo de la arquitectura del funcionario de la compañía el código ensamblador. si se trata de ARM9 ARM11 ARMv7 ARMv8 es la misma rutina, primero se necesita en función de los recursos de memoria de personalizar su proceso de inicio). El uso de los recursos de memoria en esta placa en la mano: Norflash (16 MB) SRAM (512 KB) SDRAM (512).

         Vea aquí debe pensar en dos preguntas:

¿Cuáles son las similitudes y diferencias entre ellos como 1. La memoria SRAM Norflash SDRAM?

2. ¿Cómo iniciar el procesador ARM a través de ellos? (Cosas importantes que decir tres veces: primero hay que entender el proceso antes de empezar a ver el código fuente de uboot o de lo contrario no se puede entender parecía incrustado código está estrechamente relacionado con el hardware para ir a leer el código para ver el multiplicador de hardware)

Voy a resolver estos problemas con el fin de hacer el siguiente:

A. Norflash SRAM SDRAM similitudes y diferencias

       Norflash: norfalsh es una memoria no volátil (restos de datos almacenados en Norflash después de perder la fuente de alimentación), ni flash con interfaz de SRAM, suficientes para hacer frente a los pines de dirección, puede ser fácilmente leído cada palabra en el interior de la misma sección (nota que la lectura se puede escribir en la memoria flash no es aleatoria, por lo general escribir NOR proceso de inflamación es :! desbloqueado -> Borrar -> datos de escritura debido a la característica de flash sólo se voltea de 1-0, no podemos dar la vuelta a 0. 1. el proceso de borrado es a un cierto sector de la escritura de flash 0xFFFFFFF, entonces el total de datos de escritura), instrucciones de código se puede ejecutar directamente en Norflash. (Importante: Después que los datos norfalsh de potencia se puede leer en la operación de escritura no se puede realizar directamente en frente de mí han dicho muy claramente)

       SRAM: memoria de acceso aleatorio estática (estática memoria de acceso aleatorio), que es un tipo de memoria de semiconductores. "Estáticos" significa que no lo hacen apagado, no se perderán los datos almacenados en la SRAM. Esta RAM dinámica (DRAM) diferente, DRAM requiere una operación de actualización periódica. Entonces, no vamos a SRAM memoria de sólo lectura (ROM) y memoria Flash confundido, SRAM como una memoria volátil, sólo se está llevando a cabo caso sea capaz de mantener un suministro continuo de datos a la fuente de alimentación. "Acceso aleatorio" se refiere al contenido de la memoria se puede acceder en cualquier orden, independientemente de lo anterior visita un lugar. (Importante: Después de encendido puede leer y escribir datos en la SRAM sin inicialización)

       SDRAM: SDRAM (Memoria RAM dinámica síncrona de acceso) necesidad de actualizar constantemente con el fin de guardar los datos. Y las filas de multiplexado de direcciones, muchas de ellas con el modo de página. (Importantes necesidades de controlador! DDR para ser inicializado a <registro de configuración>, para leer y escribir datos a la SDRAM)

Por último, debajo de la mesa para resumir:

La memoria
en el poder estatal de acceso a memoria
después de Datos del Estado memoria del apagón
Norflash
datos se pueden leer, no se puede escribir directamente en humanos
existen datos
SRAM
puede escribir datos directamente de lectura
de datos no existe
SDRAM
no controlador DDR después de la inicialización de potencia
         de datos no se puede leer escritura
no existen datos

       Introducido en frente de características de memoria SRAM Norflash SDRAM, siguiendo a hablar de sus respectivas funciones y tareas (importante !! Norflash SRAM SDRAM completó la tarea en la fase de puesta en marcha procesador ARM, se basa en sus respectivas características de almacenamiento. Si por las características de memoria SRAM Norflash SDRAM he descrito anteriormente no puedo entender los propios estudiantes Baidu aún más la comprensión en profundidad.)

       Norflash propiedades: no volátil (después de la pérdida de los datos almacenados en el suministro Norflash todavía existe), directamente <lee> datos, pueden no ser directamente <> de escritura de datos.

        procesador brazo Norflash como una memoria de programa. Se puede imaginar, si la memoria de programa después de apagado dentro de la técnica ha ido. Entonces, ¿cómo auto-iniciar el equipo, que no tiene que re-programa antes de cada código de arranque de una vez. Aquí se puede pensar en un problema después de Norflash poder puede ser visto como una lectura aleatoria de memoria de sólo lectura. Pero el programa se corre, el segmento .text en (segmento de código) general (OK),. Rodata (sólo lectura segmento de datos) es de sólo lectura (también bien) es de sólo lectura. Entonces la pregunta es, para el segmento .data (segmento de datos) y .bss (sin inicializar las variables globales y estáticas) en el curso de la ejecución del valor de la variable (cambio de valor de la variable requiere un cambio en el hardware subyacente a completa funcionamiento <escrito en la dirección correspondiente (dirección física almacenada en la dirección de la variable) de datos>). por desgracia Norflash no puede leer directamente de escritura directa. (Importante! ¿Cómo resolver este problema? Entonces necesita la SRAM SRAM poder porque después de que usted puede ir directamente al lector, el siguiente voy a explicar la función y el papel bajo la SRAM)

       características SRAM: abajo volátil (después de la pérdida de los datos de suministro almacenados en la SRAM no existe), puede libremente <escritura> datos. (Pequeña capacidad adicional :! rápida velocidad de carrera 512KB caro!).

       En la operación real, SRAM puede ser utilizado como espacio de pila de tiempo de ejecución de lenguaje C. El sp procesador ARM (pila de registros puntero) proporcionado SRAM proporcionado entorno de ejecución de lenguaje C. Las preguntas sobre las variables globales, menciono solo, uboot antes de la reubicación (uboot será transportado desde el espejo a parpadear en la parte delantera DDR continuará funcionando), o programa de c ensamblador no define las variables globales. Sólo define una estructura de puntero gd_t * longitud gd_ptr uboot para almacenar información de dirección de la reubicación de espejo, será el valor de la dirección r9, R9 almacenada en el almacenamiento de direcciones gd_ptr restando una sizeof superior SRAM (gd_t). (Almacenados en la SRAM donde se puede leer y escribir la cosa detrás de la hora de analizar el código uboot voy a explicar en detalle libremente)

       SDRAM características: fallo de alimentación volátil (después de la pérdida de los datos de suministro almacenados en la SDRAM no existe), el controlador DDR no se inicializa después de la energía, no puede leer y escribir datos. (Importante misa :! 512 a correr más rápido precio propia conjetura <debe ser barato>)

       Desde la necesidad de utilizar una gran capacidad de memoria SDRAM, el reloj debe ser configurado y registros DDR controlador. Este paso es donde se ha completado? (Piense)

       Sí que se hace en Norflash y SRAM construyeron un entorno operativo del programa. Lo que necesita para acabarla? 

       1. completar la inicialización del reloj del procesador 

       2. inicialización DDR  

       3. La asignación a gd_t gd_ptr * (longitud uboot para almacenar reubicación dirección duplicada, la información de desplazamiento reubicación)     

    

       En uboot sistema de manipulación mínima es inicializado antes de correr a la RDA, después de uboot se llevará a la DDR en funcionamiento.

       (Importante: En este punto Norfalsh y SRAM tarea se ha completado (y tal vez inútil), uboot ahora en la carrera en la RDA)

análisis proceso de arranque procesador ARM Dos.

        Frente a explicar la función de cada fase de arranque en la memoria del procesador, a continuación se resume lo que el proceso de inicio.

        A veces no podía describir, directamente en el mapa. La siguiente figura muestra el espacio de la pieza de mano dirección de memoria del procesador ARM (incluyendo el espacio de direcciones y el tamaño de cada uno de la capacidad de memoria en el procesador de brazo)

Así se inicia el proceso se puede resumir de la siguiente manera:

       step1.uboot imagen (es decir, el archivo importante duende! bin No es un archivo bin en sí, y las similitudes y diferencias entre los archivos Baidu ELF) almacenados en la Norflash, después de la primera instrucción por defecto brazo de potencia se obtiene de la dirección 0x00000000. Cuando se ejecuta el proceso C, la pila de parámetros y variables locales necesitar, la pila se proporciona a la parte superior de la SRAM, proporciona un entorno de ejecución del programa C. Gd_t * completa asignación gd_ptr (información de la imagen almacenamiento de dirección de la reubicación longitud uboot, etc.).

       Paso 2. En la primera etapa se completa la configuración y el reloj DDR, así como el procesador ARM asignación gd_t * gd_ptr (longitud uboot para almacenar reflejado, información reubicación, dirección, etc.). En este momento, SDRAM puede leer y escribir datos normalmente. Copiado en la SDRAM (direcciones de reubicación son proporcionados por gd_t * gd_ptr) uboot imagen, obtenida de acuerdo con el nuevo valor del puntero de desplazamiento PC reubicación y continuar uboot en la RDA.

       Aquí me gustaría mencionar que la dirección de uboot ejecuta en DDR con sus inconsistencias dirección del enlace (Norflash original en text_base = 0x0 carreras después de DDR en text_base = 0x70453670), el compilador determinar qué variables y función cuando está ligado dirección absoluta, enlace de dirección de carga dirección para funcionar dirección debe ser la misma (en la mayoría de los casos acaba de escribir programa de metal desnudo).

         (1) ¿Cómo hacer frente a las llamadas de función (durante la ejecución de la función es para saltar a una dirección de la implementación de un código)

         (2) Como variables globales en una operación de direccionamiento (la dirección de la variable global se convierte en cómo encontrar la lectura y escritura)

         Después de la forma (3) para el puntero mundial almacena en la variable o funciones de otras variables en la dirección en la reubicación DDR?    

     En primer lugar sobre este tema más adelante voy a escribir un blog dedicado a un ejecutable enlazado estáticamente con el proceso de vinculación dinámica proceso de reubicación uboot proceso a más interesadas pueden dirigirse directamente a la lectura de este blog.

       Paso 3. Continúa ejecutándose en el procesador ARM DDR UBoot completar la inicialización de cada hardware periférico, como SPI, I2C, tarjetas de red y similares. Uboot en el main_loop final, bloque de terminales a la espera de la entrada en serie o un comando para iniciar el kernel. El papel principal siempre ha sido hacer una cosa clara uboot es inicializado por Flash y reloj Sram y DDR (sistema mínimo del brazo), se requiere que el uboot final para ejecutar bare-metal DDR depuración o para arrancar el núcleo del sistema operativo.

(Cómo escribir comandos uboot uboot de depuración de metal desnudo y la forma de arrancar el sistema operativo detrás de mí a su vez introducido)

Por último, la figura o la <Inicio diagrama de flujo>:

       Después predeterminado brazo de potencia primera instrucción se extrae desde la dirección 0x00000000. SP apunta a la parte superior de la SRAM, cuando se ejecuta el programa de C, la pila de parámetros y variables locales necesitan, SP menos 4 pila secuencialmente. En esta parte de la operación de programa para completar la configuración de la (sistema mínimo ARM) reloj y DDR, así como la asignación de gd_t * gd_ptr (longitud uboot para almacenar reubicación dirección de espejo, la información de reubicación tal como offset). En este momento, DDR sido exitosamente leer y escribir datos, la imagen se copia de flash para uboot DDR, la obtención de una nueva reubicación PC basado en la posición compensada uboot siguen ejecutando.

paso 3

     uboot ha estado funcionando en la RDA, no habría ninguna restricción en cualquier hardware. procesador ARM step3 completar la inicialización de cada hardware periférico, como SPI, I2C, tarjetas de red y similares. Uboot en el main_loop final, bloque de terminales a la espera de la entrada en serie o un comando para iniciar el kernel.

Estos son el procesador ARM proceso de inicio, ya sea descubierto?

       A continuación voy a tomar el Samsung S3C2410 producido y S5PV210 como ejemplo, explican que parten de nandflash. Para EMCC ahora en los teléfonos móviles y tabletas ampliamente utilizado (nandflash interna es sólo un cambio de interfaz de lectura-escritura) es la misma rutina (recuerde que todas las cosas fueron separadas de su mantenimiento del statu quo).

 

Publicados 136 artículos originales · ganado elogios 71 · vistas 160 000 +

Supongo que te gusta

Origin blog.csdn.net/u012308586/article/details/104969582
Recomendado
Clasificación