¿Cómo puedo saber qué rango de direcciones de memoria RAM está utilizando uboot?

12

Estoy en uboot y me preguntaba, ¿cómo podría saber qué rango de direcciones RAM está utilizando uboot?

uboot necesita memoria para ejecutarse, por lo que podría estar utilizando parte de la RAM. Quiero evitar modificar esas direcciones RAM.

¿Cómo sé qué región de memoria está cargada uboot?

Ankur Agarwal
fuente

Respuestas:

2

La página DULG DebuggingUBoot tiene esto que decir (la "reubicación" de la que habla se está copiando de la memoria flash a la RAM).

Para depurar U-Boot después de la reubicación, necesitamos saber la dirección a la que se reubica U-Boot. Cuando no se utilizan características exóticas como PRAM, esta dirección generalmente es - CONFIG_SYS_MONITOR_LEN. En nuestro ejemplo con 16 MB de RAM y CONFIG_SYS_MONITOR_LEN = 192 KB, esto genera la dirección 0x1000000 - 0x30000 = 0xFD0000.

La lectura adicional del texto parece indicar que depende del procesador o la placa y que es posible que deba verificar la fuente de U-Boot para saber con certeza.

Con respecto al Guruplug :

En el lado de la RAM, u-Boot tiene los primeros 8 megabytes reservados. El resto es gratis. Algunos desarrolladores cargarán núcleos y sistemas de archivos a 0 × 800000 para programar para flashear. Otro punto común está en el límite de 100 megabytes (o desplazamiento 0 × 640000).

Dependiendo de su versión de U-Boot, los comandos pueden estar disponibles para colocar una cadena en algún lugar de RAM libre y luego buscar el resto de RAM para esa cadena, revelando la ubicación aproximada de U-Boot en la memoria.

LawrenceC
fuente
1

Cuando inicio la versión de uboot que estoy usando, muestra automáticamente un "diseño de memoria de kernel virtual".

Memory: 859068k/859068k available, 25668k reserved, 0K highmem
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
    DMA     : 0xf9e00000 - 0xffe00000   (  96 MB)
    vmalloc : 0xe0800000 - 0xf4000000   ( 312 MB)
    lowmem  : 0x80000000 - 0xe0000000   (1536 MB)
    pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
    modules : 0x7f000000 - 0x7fe00000   (  14 MB)
      .init : 0x80008000 - 0x8004d000   ( 276 kB)
      .text : 0x8004d000 - 0x808ad000   (8576 kB)
      .data : 0x808ce000 - 0x80937a40   ( 423 kB)

Descubrí que era seguro usar el área de baja memoria para varios procesos de utilidad que quería ejecutar (como cargar archivos grandes en la memoria). Idealmente, creo que quieres usar mucha memoria para ese tipo de cosas, pero no tenía la opción (como puedes ver en mi salida).

BuvinJ
fuente
¿Estás seguro de que ese no es el mapa de memoria de Linux?
claymation
No estoy seguro. Esa falta de highmem y la referencia al "núcleo virtual" me lleva a pensar lo contrario. Soy un novato / pirata cuando se trata de uboot. El punto importante aquí fue que pude usar de manera segura ese rango bajo sin escribir sobre nada de lo que parecía requerir el uboot.
BuvinJ
Como recuerdo, esto se muestra antes de cargar el sistema operativo por cierto.
BuvinJ