Implementação UHCI para Memtest86+

615 views
533 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
615
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Implementação UHCI para Memtest86+

  1. 1. Implementação UHCI para Memtest86+ Aluno: Rômulo Jales Orientador: Sérgio Campello Departamento de Sistemas Computacionais UPE-POLI Dezembro - 2009
  2. 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. 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. 4. Monitoração e controle remoto do Memtest86+ ● Barateamento de custos de manutenção ● Via RS232
  5. 5. RS232
  6. 6. Mas cadê a porta da RS232?
  7. 7. USB – Universal Serial Bus Criada para: ● Substituir ● Simplificar ● Universalizar as portas e padrões de comunicação
  8. 8. Por que usar USB no lugar da RS232? ● Possibilidade de usar outras interfaces ● Bluetooth ● Ethernet ● Serial RS-232 (!) ● Onipresente nos computadores pessoais atuais
  9. 9. Sistemas USB ● Dispositivos ● Até 127 ● Conectores ● Cabos ● Hubs ● Portas ● Hospedeiros ● Apenas um...
  10. 10. Sistemas USB
  11. 11. USB & Memtest86+
  12. 12. 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!
  13. 13. Pilha USB do hospedeiro Aplicação Interface de Hardware Software Hardware Hardware
  14. 14. Para usar a USB 1.Inicializar a interface de hardware 2.Inicializar dispositivo 3.Aplicação usar o dispositivo
  15. 15. Interface de Hardware do Hospedeiro Entidade responsável pela comunicação entre um dispositivo USB e o computador (hospedeiro).
  16. 16. 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
  17. 17. Interface Hardware de Hospedeiro USB ● EHCI ● USB 2.0 ● XHCI ● USB 3.0 ● WUSB ● Wireless USB E o escolhido é o... UHCI!
  18. 18. Por que UHCI? ● O meu computador tem UHCI. ● O QEMU implementa UHCI. ● A comunidade recomenda UHCI.
  19. 19. O que é realmente UHCI? ● Um hardware! ● Dispositivo PCI autoconfigurável ● Um controlador de Hospedeiro USB
  20. 20. 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
  21. 21. 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
  22. 22. 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: ●
  23. 23. 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
  24. 24. 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
  25. 25. 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”
  26. 26. Resultados
  27. 27. 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?
  28. 28. Conclusões ● USB é uma boa alternativa para substituir RS232 ● A implementação não é tão simples quanto aparentava ser.
  29. 29. 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
  30. 30. Obrigado

×