Proceso de inicio de arm + linux en el kernel

  
 O a partir del proceso de compilación del enlace para generar vmlinux, se compone de un grupo de archivos .o, el primero es el kernel \\ arch \\ arm \\ kernel \\ head-armv.o, y también vemos < Br> lds link file kernel \\ arch \\ arm \\ vmlinux.lds, analícelo primero
ENTRY (stext) //El punto de entrada es stext debe estar en head-armv.s
SECCIONES
{
. 0xC0008000; //dirección base es la dirección virtual del núcleo
.init: {/* Código de inicio y datos * /
_stext =.;
__init_begin =.;
* (. text.init)
__proc_info_begin =.;
* (. proc.info)
__proc_info_end =.;
__arch_info_begin =.;
* (. arch.info) < Br> __ arch_info_end =.;
__tagtable_begin =.;
* (. Taglist)
__tagtable_end =.;
* (. Data.init)
. = ALIGN (16);
__ setup_start =.;
* (. setup.init)
__setup_end =.;
__initcall_start =.;
* (. initcall.init)
__initcall_end =.;
. = ALINEAR (4096);
__init_end =.;
}
Acerca de las direcciones físicas y virtuales: Después de usar MMU, el sistema usará la dirección virtual para señalar el objeto real a través de la MMU. Aquí nos ocupamos de la dirección física real 0xC0008000 es 0x30008000,
introducir una referencia específica a "arquitectura ARM y programación" en la MMU.
Busque la entrada del programa en head-armv.s
.section " .text.init ", # alloc, # execinstr
.type stext, #function
ENTRY (stext)
Mov r12, r0
mov r0, #F_BIT
Copyright © Conocimiento de Windows All Rights Reserved