STM32F103 dirección de inicio de memoria flash

1

Estoy intentando escribir un script de vinculador para mi primer firmware para el microcontrolador STM32F103C8T6. Tengo un script de ejemplo que funciona. Lo que trato de entender es por qué funciona.

El script del enlazador que tengo define dos ubicaciones de memoria:

MEMORY
{
    FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
    RAM (rwx)  : ORIGIN = 0x20000000, LENGTH = 32K
}

Oficial STM32 manual de programación sección 2.2 establece que la sección de memoria "Código" comienza con la dirección 0x00000000 . La siguiente sección es RAM, que es 0x20000000 , como se indica en mi script de vinculador.

¿De dónde proviene el valor de origen FLASH 0x08000000 ?

    
pregunta Andrey Lebedev

2 respuestas

0

El manual de programación vinculado muestra una región de código que comienza en 0x00000000 que tiene un tamaño de 0.5GB. La hoja de datos de la pieza muestra memoria flash a partir de 0x08000000.

0x00000000 es donde está la dirección del puntero de pila inicial, con 4 bytes en la dirección de la primera instrucción a ejecutar.

En el stm32, el área asignada a 0x00000000 se cambia según la configuración del pin de inicio para permitir la ejecución del código cargado por el usuario, o ejecutar un cargador de arranque incorporado.

    
respondido por el Colin
0

Aparentemente, el valor 0x08000000 proviene de hoja de datos sección 4. La región de memoria que comienza en 0x00000000 es" Aliado a Flash o La memoria del sistema depende de los pines de arranque "y la" memoria flash "comienza desde 0x08000000 .

    
respondido por el Andrey Lebedev

Lea otras preguntas en las etiquetas