4 votos

¿Cómo gnu linker obtiene el valor del puntero de pila Cortex-M?

GNU enlazador obtiene el BRAZO de la Corteza del puntero de pila el valor de la linker script, y coloca este valor en la primera ubicación de la tabla de vectores de interrupción.

Tomo nota de que la mayoría de mis scripts de utilizar el símbolo _estack para definir el "fin de la pila" (región de memoria, que en realidad es la "parte superior de la pila"), que es también el valor de la utilidad se utiliza para rellenar la tabla de vectores de MSP ubicación en la final de la imagen vinculada.

Es _estack la (necesaria) símbolo de que el conector que se utiliza para generar el MSP? O, ¿hay otro símbolo o mecanismo de GNU vinculador utiliza/puede utilizar?

1voto

Matthew Puntos 1298

Aparentemente, no hay ningún comportamiento especial de la enlazador de GNU en la obtención de la MSP valor: el valor es utilizado en la CMSIS definido por la tabla de vectores, proporcionados por el micro proveedor, y que se define en el archivo de inicio (startup_stm32F303xc.s en mi proyecto):

/******************************************************************************
*
* The minimal vector table for a Cortex M4. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
*******************************************************************************/
   .section  .isr_vector,"a",%progbits
  .type  g_pfnVectors, %object
  .size  g_pfnVectors, .-g_pfnVectors


g_pfnVectors:
    .word   _estack
    .word   Reset_Handler
    .word   NMI_Handler
    ...

Yo había asumido el enlazador de alguna manera obtuvo el MSP valor (_estack) desde el linker script. Es la asamblea, sin embargo, que simplemente talones el valor de _estack, que el vinculador luego se resuelve. Nada críptico--solo un plano antiguo de la tabla de datos inicializados, colocado por el enlazador en la dirección apropiada para el microprocesador.

Supongo que _estack es simplemente la canónica símbolo utilizado por CMSIS basado en proyectos y el enlazador de secuencias de comandos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X