Este documento descreve a implementação da interface UHCI para permitir que o software de teste de memória Memtest86+ se comunique via USB, em vez de RS232. Ele discute como inicializar e controlar o controlador UHCI, construir uma estrutura de escalonamento de USB e lidar com timeouts na comunicação entre o controlador e dispositivos. O autor conclui que mais trabalho é necessário para concluir a pilha USB e corrigir erros, mas que USB é uma boa alternativa a RS232.
IMPLEMENTAÇÃO DO UNIVERSEAL HOST CONTROLLER INTERFACE (UHCI) PARA O MEMTE...
Implementação UHCI para monitoração e controle remoto do Memtest86
1. Implementação UHCI para
Memtest86+
Aluno: Rômulo Jales
Orientador: Sérgio Campello
Departamento de Sistemas Computacionais
UPE-POLI
Dezembro - 2009
2. 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
3. O que é Memtest86+?
● Vantagens
● Baixo Custo
● Teste de stress
● Monitoração e controle remoto
● Desvantagens
● Não testa ao nível eletrônico
● Suporte
4.
5. Monitoração e controle remoto do
Memtest86+
● Barateamento de custos de manutenção
● Via RS232
8. USB – Universal Serial Bus
Criada para:
● Substituir
● Simplificar
● Universalizar
as portas e padrões de comunicação
9. Por que usar USB no lugar da
RS232?
● Possibilidade de usar outras interfaces
● Bluetooth
● Ethernet
● Serial RS-232 (!)
● Onipresente nos computadores pessoais atuais
10. Sistemas USB
● Dispositivos
● Até 127
● Conectores
● Cabos
● Hubs
● Portas
● Hospedeiros
● Apenas um...
13. 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!
14. Pilha USB do hospedeiro
Aplicação
Interface de Hardware
Software
Hardware
Hardware
15. Para usar a USB
1.Inicializar a interface de hardware
2.Inicializar dispositivo
3.Aplicação usar o dispositivo
16. Interface de Hardware do
Hospedeiro
Entidade responsável pela comunicação entre
um dispositivo USB e o computador
(hospedeiro).
17. 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
18. Interface Hardware de Hospedeiro
USB
● EHCI
● USB 2.0
● XHCI
● USB 3.0
● WUSB
● Wireless USB
E o escolhido é o... UHCI!
19. Por que UHCI?
● O meu computador tem UHCI.
● O QEMU implementa UHCI.
● A comunidade recomenda UHCI.
20. O que é realmente UHCI?
● Um hardware!
● Dispositivo PCI autoconfigurável
● Um controlador de Hospedeiro USB
21. 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
22. 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 0x01 → OHCI
0x20 → EHCI
– UHCI
● Obter o valor do campo endereço base 4
23. 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:
●
24. 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
Endereço base da lista de
EBASE + 0x08 FRBASEADD
quadros
Modificador do iniciador de
EBASE + 0x0C SOFMOD
quadros
EBASE + 0x10 PORTSRC1 Registrador da porta 1
EBASE + 0x12 PORTSRC2 Registrador da porta 2
25. 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
26. 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”
28. 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?
29. Conclusões
● USB é uma boa alternativa para substituir
RS232
● A implementação não é tão simples quanto
aparentava ser.
30. 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