Desde as primeiras
versões do bootloader, ele detectava informações do
hardware, e a cada nova versão novas informações foram sendo
adicionadas, porem a única que era fornecida ao kernel era o
endereço de vídeo.
Nesta fase implementei uma tabela, criada pelo bootloader, que é entregue ao kernel, e através dela o kernel pode obter todas as informações recolhidas pelo bootloader.
O endereço da tabela é
passado ao kernel no lugar do endereço de vídeo, de forma que o
kernel teve que ser modificado para encontrar o valor correto do
endereço de vídeo.
A tabela é composta de
uma assinatura, para garantir que o kernel esteja lendo valores
verdadeiros, do tipo da CPU, da quantidade de memória convencional
e superior, de informações do vídeo, como: modo, número de linhas
e colunas, porta do controlador e segmento de memória. Também
possui informações de que tipo de suporte a A20 o PC dispõe; da
posição inicial e final do código do próprio kernel, da pilha e do heap.
Desta forma, muito mais
pode ser feito no kernel agora, como implementar o driver de vídeo,
já que temos os parâmetros dele, ou o controlador de memória, pois já
sabemos quanto temos de memória disponível. No caso do controlador
de memória, podemos não ter detectado toda a memória instalada,
mas o valor fornecido é seguramente utilizável inicialmente, e
provavelmente chega aos 16 Megabytes, ou até mais.
Download dos fontes e binários:
<< Anterior - Boot, fase 8 - Tornando o processo inteligente, parte 1
Nenhum comentário:
Postar um comentário
Obs.: Após escrever seu comentário, inscreva-se por e-mail para seguir os próximos comentários. Ou assine a postagem de comentários (Atom).