Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

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
Línea 45: Línea 45:
 |[[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?\\
Línea 163: Línea 163:
 bl mem_cpy bl mem_cpy
  
-@ Opcion B con incremento de a double word veces (r3 a r10+@ Opcion B con incremento de a 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, #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
Línea 198: Línea 198:
  
 <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)
Línea 373: Línea 373:
 </code> </code>
  
- --- //[[cnigri@frba.utn.edu.ar|ChristiaN]] 2023/04/25 19:55//+ --- //[[cnigri@frba.utn.edu.ar|ChristiaN]] 2024/05/17 11:17//