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

12

Estou no uboot e queria saber, como saber qual intervalo de endereços de RAM está sendo usado pelo uboot.

O uboot precisa de memória para rodar, por isso pode estar usando parte da RAM. Quero evitar modificar esses endereços de RAM.

Como sei em que região da memória o uboot está carregado?

Ankur Agarwal
fonte

Respostas:

2

A página DULG DebuggingUBoot tem a dizer (a "realocação" de que se refere está se copiando do flash para a RAM).

Para depurar o U-Boot após a realocação, precisamos saber o endereço para o qual o U-Boot se realoca. Quando nenhum recurso exótico como o PRAM é usado, esse endereço geralmente é - CONFIG_SYS_MONITOR_LEN. Em nosso exemplo, com 16 MB de RAM e CONFIG_SYS_MONITOR_LEN = 192 KB, isso gera o endereço 0x1000000 - 0x30000 = 0xFD0000.

Uma leitura mais aprofundada do texto parece indicar que depende do processador ou da placa e que você pode precisar verificar a fonte do U-Boot para ter certeza.

Em relação ao Guruplug :

No lado da RAM, o u-Boot tem os primeiros 8 megabytes reservados. O resto é grátis. Alguns desenvolvedores carregarão kernels e sistemas de arquivos em 0 × 800000 para a programação piscar. Outro ponto comum é o limite de 100 megabytes (ou deslocamento 0 × 640000).

Dependendo da sua versão dos comandos do U-Boot, podem estar disponíveis para colocar uma string em algum lugar da RAM livre e, em seguida, procurar o restante da RAM, revelando a localização aproximada do U-Boot na memória.

LawrenceC
fonte
1

Quando inicio a versão do uboot que estou usando, ele 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)

Eu achei que era seguro usar a área lowmem para vários processos utilitários que eu queria executar (como carregar arquivos grandes na memória). Idealmente, acho que você deseja usar muita memória para esse tipo de coisa, mas eu não tinha a opção (como você pode ver na minha saída).

BuvinJ
fonte
Tem certeza de que esse não é o mapa de memória do Linux?
Claymaker #
Não tenho certeza. Essa falta de highmem e a referência ao "kernel virtual" me levam a pensar o contrário. Eu sou um noob / hack quando se trata de uboot. O ponto importante aqui foi que eu era capaz de usar com segurança esse intervalo de baixa frequência sem escrever sobre o que o uboot parecia exigir.
precisa saber é o seguinte
Pelo que me lembro, isso é exibido antes do carregamento do sistema operacional btw.
BuvinJ