Como posso saber qual intervalo de endereços de memória RAM está sendo usado pelo uboot?

9

Eu estou no uboot e estava me perguntando, como eu poderia dizer qual intervalo de endereços de RAM está sendo usado pelo uboot.

O uboot precisa de memória para rodar, então pode estar usando parte da memória RAM. Eu quero evitar modificar esses endereços de RAM.

Como eu sei qual região da memória é carregada pelo uboot?

    
por abc 01.06.2012 / 02:07

2 respostas

1

A página DULG DebuggingUBoot tem isto a dizer (a "realocação" da qual ele fala está se copiando do flash para RAM).

For debugging U-Boot after relocation we need to know the address to which U-Boot relocates itself to. When no exotic features like PRAM are used, this address usually is - CONFIG_SYS_MONITOR_LEN. In our example with 16MB RAM and CONFIG_SYS_MONITOR_LEN = 192KB this yields the address 0x1000000 - 0x30000 = 0xFD0000.

Outras leituras do texto parecem indicar que ele depende do processador ou da placa e que você pode ter que verificar a origem do U-Boot para ter certeza.

Em relação ao Guruplug :

On the RAM side, u-Boot has the first 8 megabytes reserved. The rest is free. Some developer’s will load kernels and filesystems at 0×800000 for programming to flash. Another common spot is at the 100 megabyte boundary (or offset 0×640000).

Depending on your version of U-Boot commands may be available to put a string somewhere in free RAM and then hunt the rest of RAM for that string, revealing the approximate location of U-Boot in memory.

    
por 13.09.2012 / 17:07
0

Quando inicio a versão do uboot que estou usando, ela exibe automaticamente um "layout de memória virtual do kernel".

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)

Descobri que era seguro usar a área de baixa memória para vários processos de utilitário que queria executar (como carregar arquivos grandes na memória). Idealmente, acho que você quer usar memória alta para esse tipo de coisa, mas eu não tenho a opção (como você pode ver na minha saída).

    
por 18.07.2016 / 23:38