Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
inicializacion_de_procesador_cortex-a8 [2023/04/27 21:12] cnigri correccion de enlace a linker arm |
inicializacion_de_procesador_cortex-a8 [2024/05/17 11:16] (actual) cnigri Correccion de descripcion |
||
---|---|---|---|
Línea 45: | Línea 45: | ||
|[[https:// | |[[https:// | ||
- | De la tabla se desprende que la memoria RAM se direcciona en el rango 0x70000000-0x8FFFFFFF, | + | De la tabla se desprende que la memoria RAM se direcciona en el rango 0x70000000-0x8FFFFFFF, |
Por su parte la ROM se direcciona en el rango 0x40000000- 0x5FFFFFFF y el controlador de este tipo de memorias no requiere inicialización, | Por su parte la ROM se direcciona en el rango 0x40000000- 0x5FFFFFFF y el controlador de este tipo de memorias no requiere inicialización, | ||
Línea 80: | Línea 80: | ||
La primer acción que se debe realizar es garantizar que el procesador se encuentra en el modo y privilegio de operación que permita el acceso a los recursos del mismo.\\ | La primer acción que se debe realizar es garantizar que el procesador se encuentra en el modo y privilegio de operación que permita el acceso a los recursos del mismo.\\ | ||
- | En ARMv7 este modo se denomina // | + | En ARMv7 este modo se denomina // |
Dado que el estado del SoC y sobre todo de los periféricos de la placa no es conocido, se debe evitar que algún estimulo externo perturbe la secuencia de inicialización, | Dado que el estado del SoC y sobre todo de los periféricos de la placa no es conocido, se debe evitar que algún estimulo externo perturbe la secuencia de inicialización, | ||
En el caso de ARMv7 la deshabilitación de las interrupciones se realiza con el mismo registro (CPSR.I -> CPSR[7], CPSR.F -> CPSR[6]) que se emplea para configurar el modo de operación por lo cual en un paso se realizan dos subetapas | En el caso de ARMv7 la deshabilitación de las interrupciones se realiza con el mismo registro (CPSR.I -> CPSR[7], CPSR.F -> CPSR[6]) que se emplea para configurar el modo de operación por lo cual en un paso se realizan dos subetapas | ||
Línea 163: | Línea 163: | ||
bl mem_cpy | bl mem_cpy | ||
- | @ Opcion B con incremento de a 7 double word veces (r3 a r10 | + | @ Opcion B con incremento de a 8 double word veces (r3 a r10 |
mem_cpy: | mem_cpy: | ||
add r2, r2, r0 | add r2, r2, r0 | ||
Línea 191: | Línea 191: | ||
stack_setup: | stack_setup: | ||
ldr r0, # | ldr r0, # | ||
- | sub r0, r0, # | + | sub r0, r0, #(CONFIG_PILA_SVC_LARGO + CONFIG_PILA_IRQ_LARGO + CONFIG_PILA_FIQ_LARGO) |
sub sp, r0, #12 @ 3 words para abort-stack | sub sp, r0, #12 @ 3 words para abort-stack | ||
bic sp, sp, #7 @ 8-byte ajuste para satisfacer alineacion requerida por ABI | bic sp, sp, #7 @ 8-byte ajuste para satisfacer alineacion requerida por ABI | ||
Línea 198: | Línea 198: | ||
<code asm> | <code asm> | ||
- | ldr r0, # | + | ldr r0, # |
bl stack_validate | bl stack_validate | ||
stack_validate: | stack_validate: | ||
- | ldr r2, 0xA5A5A5A5 | + | ldr r2, =0xA5A5A5A5 |
- | ldr r3, 0xA5A5A5A5 | + | ldr r3, =0xA5A5A5A5 |
- | ldr r4, 0xA5A5A5A5 | + | ldr r4, =0xA5A5A5A5 |
- | ldr r5, 0xA5A5A5A5 | + | ldr r5, =0xA5A5A5A5 |
- | ldr r6, 0xA5A5A5A5 | + | ldr r6, =0xA5A5A5A5 |
- | ldr r7, 0xA5A5A5A5 | + | ldr r7, =0xA5A5A5A5 |
- | ldr r8, 0xA5A5A5A5 | + | ldr r8, =0xA5A5A5A5 |
- | ldr r9, 0xA5A5A5A5 | + | ldr r9, =0xA5A5A5A5 |
- | ldr r10, 0xA5A5A5A5 | + | ldr r10, =0xA5A5A5A5 |
stack_write_fast: | stack_write_fast: | ||
sub r1, sp, # | sub r1, sp, # | ||
Línea 267: | Línea 267: | ||
* **ldr pc**: bifurfaciones sin restricciones de rango por fuera de la propia arquitectura | * **ldr pc**: bifurfaciones sin restricciones de rango por fuera de la propia arquitectura | ||
<code asm> | <code asm> | ||
- | .globl _start_generic | + | .global |
- | _start: | + | _start_generic: |
b reset @ Configuracion de modo y deshabilitacion de interrupciones | b reset @ Configuracion de modo y deshabilitacion de interrupciones | ||
ldr pc, _undefined_instruction | ldr pc, _undefined_instruction | ||
Línea 373: | Línea 373: | ||
</ | </ | ||
- | --- // | + | --- // |