Restringindo área de memória para o kernel do linux

5

Estou executando o Linux ltib na plataforma P1022RDK (P1022 Core). Eu tenho 512 MB = 0x20000000 de memória. Eu quero que meu kernel Linux use a segunda metade da memória da placa (ou seja, de 256 MB a 512 MB) e que a primeira metade da memória seja reservada para outra finalidade.

Para isso, estou construindo o kernel do Linux usando ltib e definindo a seguinte configuração de kernel. Por favor, sugira se estou fazendo o caminho certo.

CONFIG_LOWMEM_SIZE = 0x10000000 # 256 MB 
CONFIG_PHYSICAL_START = 0x10000000 # Starting from 256MB (second half of memory)

No Uboot, estou carregando o kernel da seguinte maneira:

setenv loadaddr 0x11000000 # Kernel base = 0x10000000 + 0x01000000 (offset) 
setenv fdtaddr 0x10c00000 # Kernel base = 0x10000000 + 0x00c00000 (offset) 
bootm $loadaddr - $fdtaddr My kernel Load address is 0x10000000 & kernel entry point is 0x10000000

Usando as configurações / etapas acima, meu kernel está preso no seguinte no Uboot:

Booting kernel from Legacy Image at 11000000 ...

Image Name: Linux-2.6.32.13 
Image Type: PowerPC Linux Kernel Image (gzip compressed) 
Data Size: 3352851 Bytes = 3.2 MB 
Load Address: 10000000 
Entry Point: 10000000 
Verifying Checksum ... OK

Flattened Device Tree blob at 10c00000

Booting using the fdt blob at 0x10c00000 
Uncompressing Kernel Image ... OK

Ele deve descompactar o FDT aqui & continue

Alguma opinião?

    
por Farrukh Arshad 26.11.2011 / 20:11

2 respostas

4

Para adicionar detalhes à resposta de David Schwartz, especificando o parâmetro de inicialização do kernel para definir a quantidade e o endereço inicial usado pelo kernel, você pode fazer o que quiser.

Por exemplo, adicione o seguinte comando aos seus argumentos de inicialização do kernel:

mem=256M@0x80000000

Indica que o kernel deve usar 256M a partir de 0x80000000, que é o que você precisa.

Você deve reverter as configurações do CONFIG para seus valores originais e verificar se o seu kernel inicializará corretamente em sua configuração padrão (sem configuração mem =).

Você pode primeiro experimentar mem = especificando

mem=256M

que lhe dará uma área de memória reduzida a partir de 0, com os 256M superiores sendo não usados. Uma vez que isso parece funcionar, use o 256M com offset como acima.

Tome cuidado também onde na RAM você carrega a imagem compactada inicial pelo uBoot, para garantir que não entre em conflito com a eventual área de memória do kernel.

    
por 05.12.2012 / 09:34
3

Eu acho que você vai ter que fazer o contrário, e deixar os 256MB não utilizados. CONFIG_PHYSICAL_START não faz o que parece que pensa. Ele controla onde o kernel é carregado, não quais páginas físicas o kernel usa.

    
por 27.11.2011 / 02:58