Ambos lados, revisión anterior
Revisión previa
Próxima revisión
|
Revisión previa
|
inicializacion_de_procesador_cortex-a8 [2023/05/02 04:39] cnigri Correccion de sintaxis |
inicializacion_de_procesador_cortex-a8 [2024/05/17 11:16] (actual) cnigri Correccion de descripcion |
|[[https://developer.arm.com/documentation/dui0417/d/hardware-description/northbridge?lang=en | Northbridge]]| 0x70000000-0x8FFFFFFF| [[https://developer.arm.com/documentation/dui0417/d/programmer-s-reference/dynamic-memory-controller--dmc?lang=en | Dinamic Memory Controller]]| 512MB | | |[[https://developer.arm.com/documentation/dui0417/d/hardware-description/northbridge?lang=en | Northbridge]]| 0x70000000-0x8FFFFFFF| [[https://developer.arm.com/documentation/dui0417/d/programmer-s-reference/dynamic-memory-controller--dmc?lang=en | Dinamic Memory Controller]]| 512MB | |
| |
De la tabla se desprende que la memoria RAM se direcciona en el rango 0x70000000-0x8FFFFFFF, y que la parte superior del mismo (256MB) se encuentra espejado en 0x00000000-0x0FFFFFFF. Sin embargo se debe recordar que al estar en la etapa //Inicialización del SoC//, el DMC no se encuentra configurado por lo que no es posible emplear dicha memoria y por ende cualquier rango asociado a la misma. | De la tabla se desprende que la memoria RAM se direcciona en el rango 0x70000000-0x8FFFFFFF, y que el rango de direcciones numéricamente inferiores del mismo (256MB) se encuentra espejado en 0x00000000-0x0FFFFFFF. Sin embargo se debe recordar que al estar en la etapa //Inicialización del SoC//, el DMC no se encuentra configurado por lo que no es posible emplear dicha memoria y por ende cualquier rango asociado a la misma. |
| |
Por su parte la ROM se direcciona en el rango 0x40000000- 0x5FFFFFFF y el controlador de este tipo de memorias no requiere inicialización, justamente para poder leer el código que permita satisfacer los requerimientos de la etapa //Inicialización del SoC//. Al parecer ya se encuentra resuelto el dilema sobre donde leer el código, pero al lector astuto seguramente le surgirá interrogante ¿Cómo puede ser esto posible, si la [[https://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/The-System-Level-Programmers--Model/Exceptions/Reset | Reset Vector Address]] es 0x00000000 o 0xFFFF0000?\\ | Por su parte la ROM se direcciona en el rango 0x40000000- 0x5FFFFFFF y el controlador de este tipo de memorias no requiere inicialización, justamente para poder leer el código que permita satisfacer los requerimientos de la etapa //Inicialización del SoC//. Al parecer ya se encuentra resuelto el dilema sobre donde leer el código, pero al lector astuto seguramente le surgirá interrogante ¿Cómo puede ser esto posible, si la [[https://developer.arm.com/documentation/ddi0406/b/System-Level-Architecture/The-System-Level-Programmers--Model/Exceptions/Reset | Reset Vector Address]] es 0x00000000 o 0xFFFF0000?\\ |
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 |
stack_setup: | stack_setup: |
ldr r0, #CONFIG_PILA_LIMITE_DIRECCION | ldr r0, #CONFIG_PILA_LIMITE_DIRECCION |
sub r0, r0, #(CONFIG_PILA_IRQ_LARGO + CONFIG_PILA_FIQ_LARGO) | 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 |
| |
<code asm> | <code asm> |
ldr r0, #(CONFIG_PILA_LIMITE_DIRECCION - CONFIG_PILA_IRQ_LARGO - CONFIG_PILA_FIQ_LARGO - 12) | ldr r0, #(CONFIG_PILA_LIMITE_DIRECCION - CONFIG_PILA_SVC_LARGO - CONFIG_PILA_IRQ_LARGO - CONFIG_PILA_FIQ_LARGO - 12) |
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, #(CONFIG_PILA_LIMITE_DIRECCION - 36) | sub r1, sp, #(CONFIG_PILA_LIMITE_DIRECCION - 36) |
</code> | </code> |
| |
--- //[[cnigri@frba.utn.edu.ar|ChristiaN]] 2023/04/25 19:55// | --- //[[cnigri@frba.utn.edu.ar|ChristiaN]] 2024/05/17 11:17// |
| |
| |