É
extremamente importante verificar o tipo da CPU a fim de garantir que
suporte o nosso kernel.
Provavelmente
não iremos necessitar nada melhor que um 386, e dificilmente alguém
vai tentar rodar o sistema em um computador inferior a um 486 (Em um
486 eu tenho certeza, porque ainda tenho um!). Mas mesmo assim temos
que fazer essa verificação pelo bootloader para garantir.
Porem não
é necessário que seja um processador muito evoluído, tendo
suporte a 32 bits já é o suficiente para o kernel ser carregado e
entrar em execução. Se no kernel utilizarmos alguma instrução
mais avançada, podemos buscar o tipo de processador instalado na
máquina e qual conjunto de instruções ele suporta, pelo próprio
kernel.
Uma
verificação simples de ser feita é pelos Flags da CPU, com essa
verificação é possível detectar desde um 8086 até um 80586. E
também se a CPU está em Modo Protegido ou Modo Real, o que é muito
importante caso alguém tente carregar o sistema através do Prompt
de Comando, ao invés de diretamente sobre o DOS.
Implementei
um programa (DetecCPU) para testar a detecção da CPU, que
será utilizada no bootloader. Este programa somente vê o tipo da
CPU instalada (8086-80586), se está no modo Real/Protegido e sai.
Este
programa pode ser executado no Prompt de Comando do Windows. Link
para download dos fontes e binários no rodapé da página.
Quantidade
de memória instalada:
Outra
coisa extremamente importante é determinar a quantidade de memória RAM instalada, que somente pode ser feito de maneira segura através da
BIOS. Pois é ela quem configura o Chipset para usar a memória RAM.
Inicialmente
não teremos nenhum acesso à BIOS em nosso kernel. Portanto devemos
detectar a memória disponível durante o boot. Porem não
precisamos, também, que toda a memória instalada seja detectada,
acredito que demoraremos para usar mais de 4 MB de memória. Isto nos
possibilita usar as chamadas de BIOS mais simples e fáceis de
interpretar durante o boot.
Provavelmente
iremos implementar posteriormente um “driver de BIOS”, que nos
permita utilizar as funcionalidades da BIOS no Modo Protegido, nesse
ponto poderemos verificar se realmente conhecemos toda a memória
disponível e assim atualizar os dados.
Implementei
dois programas (DetecMem e DetecM2), o primeiro informa os dados de
forma bruta, enquanto o segundo de forma trabalhada, simplificando o
que devemos passar ao kernel durante o boot.
Não obtive sucesso ao executar esse programa no Prompt de Comando do Windows, mas ele funciona normalmente sobre o DOS.
Alias não tenho certeza se este problema que tive foi causado pelo Prompt ou porque eu executei o Windows dentro do VirtualBox e o programa dentro de um Prompt, pois isto tem acontecido com outros programas também.
Modo de
vídeo atual:
Não
menos importante é saber qual o modo do vídeo atual, pois
inicialmente não teremos como configurar o vídeo de dentro do
kernel e devemos utilizar o que foi definido pela BIOS. Implementei
um programa (DetecCRT) para detectar o modo do vídeo.
Obs.:
- Devido a uma falha na implementação, atualizei todos os downloads.
- Somente aconselho rodar esse programa sobre o DOS puro, nunca dentro de um prompt do Windows, pois não é garantido que eles funcionem adequadamente.
Download dos fontes e binários (Atualizado em 30/03/2013):
- DetecCPU - Detecta o tipo da CPU;
- DetecMem - Detecta a RAM;
- DetecM2 - Detecta a RAM;
- DetecCRT - Detecta o Modo do vídeo.
Próximo - Boot, fase 3 - Iniciando o desenvolvimento >>
<< Anterior - Boot, fase 1 - Prólogo
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).