Como o BIOS lê exatamente o primeiro setor

Como o BIOS lê exatamente o primeiro setor

Preciso saber se o comando ATA Read Sector ainda está em uso. Eu li no livro SATA Storage Technology que este comando e, em geral, os comandos de leitura PIO são usados ​​​​apenas no processo de inicialização. Então comecei a analisar o processo de inicialização e estou confuso sobre isso.

Eu sei que o BIOS lê o primeiro setor ou MBR como parte do processo de inicialização. Li também que o BIOS usa o INT 13 para fazer isso.

O dispositivo SATA se comunica via HBA. Portanto esta leitura do primeiro setor deve ser feita após o término do processo de inicialização entre SATA e HBA.

Como o BIOS lê o primeiro setor...

O HBA traduz os comandos INT 13 para ATA?Se sim,
Isso não precisa da presença do driver AHCI?
Quando o driver é carregado?

OU

O BIOS se comunica diretamente com o disco rígido?Acho que isso não é possível.

Responder1

Para dispositivos; há disquete, SCSI, ATA, ATAPI, armazenamento em massa USB, SATA, NVME, etc. A maioria deles tem um controlador (onde a CPU só pode se comunicar com o controlador e o controlador se comunica com o(s) dispositivo(s) conectado(s) ao controlador). Às vezes, a interface fornecida pelo controlador é relativamente padronizada (por exemplo, AHCI) e às vezes não é (SCSI, controladores RAID de hardware); e às vezes o controlador fornece múltiplas interfaces (por exemplo, um controlador SATA pode suportar AHCI, além de emulação herdada (P)ATA, além de uma interface RAID não padrão; e ter opções para selecionar quais nas configurações do BIOS).

Para todos os casos; ou o BIOS possui código de driver (mínimo) integrado (provavelmente para controladores/dispositivos "relativamente padronizados" e controladores integrados à placa-mãe); ou o controlador possui uma "ROM de dispositivo" incorporada (por exemplo, na mesma placa PCI) que conecta/intercepta "int 0x13".

Em todo o caso; "int 0x13" usaria o parâmetro "número do dispositivo" para descobrir qual é o dispositivo e ramificar para o código do driver do dispositivo para esse dispositivo.

O HBA traduz os comandos INT 13 para ATA?

Se um controlador SATA estiver usando AHCI como interface; então o driver converteria solicitações "int 0x13" em comandos SATA/AHCI para HBA. Se um controlador SATA estiver usando emulação herdada (P)ATA, o driver converterá solicitações "int 0x13" em comandos legados (P)ATA e o HBA traduzirá os comandos ATA no conjunto de comandos SATA.

Isso não precisa da presença do driver AHCI?

Sim. Observe que é um driver mínimo (sem suporte a coisas como "hot-plug SATA", enfileiramento de comandos nativos, apagamento seguro, ejeção, corte, ...) que usa um "comando de inicialização, desperdiça tempo de CPU enquanto evita o paralelismo e prejudica o desempenho até o comando é concluído e, em seguida, retorna a abordagem "status" para simplificar. Essas coisas significam que não se parece em nada com um driver de dispositivo que um sistema operacional gostaria de usar.

Quando o driver é carregado?

O código do driver está sempre presente em algum lugar de uma ROM (não carregado do disco em algum momento). O código do driver é inicializado antes do firmware procurar por "ROMs de dispositivo" ou quando o firmware está inicializando "ROMs de dispositivo".

Depois que tudo estiver inicializado; (assumindo que o BIOS está inicializando a partir do disco normal - por exemplo, não inicializando a partir da rede) O BIOS pode simplesmente usar 'int 0x13" para carregar o primeiro setor de "qualquer dispositivo que ele acabou sendo após a inicialização das ROMs do dispositivo".

Responder2

Após alguns testes com o analisador SATA, descobriu-se que o BIOS ou UEFI é inteligente o suficiente para não usar comandos ATA lentos, comoLER SETOR(ES)no processo de inicialização. em vez disso, ele usa o comando ATALEIA DMA EXT.

para completar, a sequência é:

após o drive enviar sua assinatura, o HBA envia o comando ATAIDENTIFICAR DISPOSITIVOe, em seguida, envieLEIA DMA EXTcom LBA = 0.

Não tenho certeza se o sistema operacional usaLER SETOR(ES)ouESCREVER SETOR(ES)em qualquer caso durante o trabalho normal. Espero que não, pois implementar o protocolo PIO IN/OUT em FPGA não é um trabalho agradável.

informação relacionada