31
Implementação UHCI para Memtest86+ Aluno: Rômulo Jales Orientador: Sérgio Campello Departamento de Sistemas Computacionais UPE-POLI Dezembro - 2009

Implementação UHCI para Memtest86+

Embed Size (px)

Citation preview

Page 1: Implementação UHCI para Memtest86+

Implementação UHCI para Memtest86+

Aluno: Rômulo JalesOrientador: Sérgio Campello

Departamento de Sistemas ComputacionaisUPE-POLI

Dezembro - 2009

Page 2: Implementação UHCI para Memtest86+

O que é Memtest86+?

● Software Livre para teste de memória RAM para computadores de arquitetura x86 (IA-32)

● Não executa sob um sistema operacional● Também não é um sistema operacional● Auto-contido

Page 3: Implementação UHCI para Memtest86+

O que é Memtest86+?

● Vantagens● Baixo Custo● Teste de stress● Monitoração e controle remoto

● Desvantagens● Não testa ao nível eletrônico● Suporte

Page 4: Implementação UHCI para Memtest86+
Page 5: Implementação UHCI para Memtest86+

Monitoração e controle remoto do Memtest86+● Barateamento de custos de manutenção● Via RS232

Page 6: Implementação UHCI para Memtest86+

RS232

Page 7: Implementação UHCI para Memtest86+

Mas cadê a porta da RS232?

Page 8: Implementação UHCI para Memtest86+

USB – Universal Serial Bus

Criada para:● Substituir● Simplificar● Universalizar

as portas e padrões de comunicação

Page 9: Implementação UHCI para Memtest86+

Por que usar USB no lugar da RS232?● Possibilidade de usar outras interfaces

● Bluetooth● Ethernet● Serial RS-232 (!)

● Onipresente nos computadores pessoais atuais

Page 10: Implementação UHCI para Memtest86+

Sistemas USB

● Dispositivos● Até 127

● Conectores● Cabos● Hubs● Portas

● Hospedeiros● Apenas um...

Page 11: Implementação UHCI para Memtest86+

Sistemas USB

Page 12: Implementação UHCI para Memtest86+

USB & Memtest86+

Page 13: Implementação UHCI para Memtest86+

USB & Memtest86+

● Memtest86+ não oferece USB● Mas...

● Oferece infraestrutura de acesso a hardware– Biblioteca em linguagem C

● “boota” o computador● Ler teclado● Escreve no monitor

● Implementar a pilha USB do hospedeiro!

Page 14: Implementação UHCI para Memtest86+

Pilha USB do hospedeiro

Aplicação

Interface de Hardware

Hardware

Software

Hardware

Page 15: Implementação UHCI para Memtest86+

Para usar a USB

1.Inicializar a interface de hardware

2.Inicializar dispositivo

3.Aplicação usar o dispositivo

Page 16: Implementação UHCI para Memtest86+

Interface de Hardware do Hospedeiro

Entidade responsável pela comunicação entre um dispositivo USB e o computador

(hospedeiro).

Page 17: Implementação UHCI para Memtest86+

Interface Hardware de Hospedeiro USB● UHCI – Universal Host Controller Interface

● USB 1.1● Intel & VIA● Fechado

● OHCI – Open Host Controller Interface● USB 1.1● Microsoft, HP, NI● Aberto

Page 18: Implementação UHCI para Memtest86+

Interface Hardware de Hospedeiro USB● EHCI

● USB 2.0

● XHCI● USB 3.0

● WUSB● Wireless USB

E o escolhido é o... UHCI!

Page 19: Implementação UHCI para Memtest86+

Por que UHCI?

● O meu computador tem UHCI.

● O QEMU implementa UHCI.

● A comunidade recomenda UHCI.

Page 20: Implementação UHCI para Memtest86+

O que é realmente UHCI?

● Um hardware!● Dispositivo PCI autoconfigurável● Um controlador de Hospedeiro USB

Page 21: Implementação UHCI para Memtest86+

Usando o UHCI

● Encontrar o controlador UHCI no barramento PCI

● “Resetar” o controlador UHCI● “Resetar” portas do controlador (são sempre

duas)● Instalar escalonador● Iniciar o controlador UHCI

Page 22: Implementação UHCI para Memtest86+

PCI & UHCI

● Percorrer o espaço de configuração da PCI● No campo Classe: 0x0C

– Interfaces seriais● No campo sub-classe: 0x03

– USB● No campo controlador: 0x00

– UHCI● Obter o valor do campo endereço base 4

0x01 → OHCI0x20 → EHCI

Page 23: Implementação UHCI para Memtest86+

Controlando o UHCI

● O endereço base (EBASE) é o inicio da região de memória do hospedeiro para o controle do UHCI.

● Desse endereço é feito o controle:●

Page 24: Implementação UHCI para Memtest86+

Registrador Mnemônico Descrição

EBASE + 0x00 USBCMD Registrador de comando

EBASE + 0x02 USBSTS Registrador de estado

EBASE + 0x04 USBINTR Registrador de interrupções

EBASE + 0x06 FRNUM Número do quadro

EBASE + 0x08 FRBASEADDEndereço base da lista de

quadros

EBASE + 0x0C SOFMOD Modificador do iniciador de quadros

EBASE + 0x10 PORTSRC1 Registrador da porta 1

EBASE + 0x12 PORTSRC2 Registrador da porta 2

Page 25: Implementação UHCI para Memtest86+

Escalonador

● Missão:● Gerenciar o acesso ao barramento

● O que é?● Uma fila de estruturas de dados

– TD e QH

● Coordenar os quatro tipos de transmissão USB:● Isócrona● Interrupção● Controle● Massivo

Page 26: Implementação UHCI para Memtest86+

Estruturas de Dados

● TD● Contém o pacote a ser transmitido

● QH● Organiza os elementos a serem transferidos

● A prioridade é organizada pelo valor contido no campo “Próximo elemento”

Page 27: Implementação UHCI para Memtest86+

Resultados

Page 28: Implementação UHCI para Memtest86+

Resultados

● Comunicação entre o controlador e o dispositivo sofre timeout.● Campo de status do TD

● Possíveis causas:● Endereçamento errado?● Falha na configuração do UHCI?● Sobre-escrita de região de memória?● Implementação do UHCI do QEMU tem problemas?

Page 29: Implementação UHCI para Memtest86+

Conclusões

● USB é uma boa alternativa para substituir RS232

● A implementação não é tão simples quanto aparentava ser.

Page 30: Implementação UHCI para Memtest86+

Trabalhos Futuros

● Terminar a pilha USB para o Memtest86+● Drivers e aplicação

● Corrigir o erro do timeout● Verificando as hipóteses levantadas

● Implementar outros controladores● Utilizando como base o código gerado

Page 31: Implementação UHCI para Memtest86+

Obrigado