Interfaces no QEMU: UART e conceitos de MMIO
TL;DR
- Usamos a UART do QEMU
virtpara toda a saída. - UART é um dispositivo MMIO simples e ideal para aprendizado bare-metal.
- JTAG, SPI e I2C são apresentados conceitualmente, mas não exigimos hardware real.
1. UART no QEMU virt
A máquina virt expõe uma UART em um endereço MMIO fixo:
| |
Escrever um byte nesse endereço imprime um caractere.
Escrita mínima na UART
| |
2. Um exemplo de UART executável
| |
Compile e rode:
| |
3. Visão conceitual: JTAG, SPI, I2C
São interfaces de hardware comuns, mas neste livro nós apenas descrevemos:
- JTAG: debug e boundary scan; normalmente usado por depuradores de hardware.
- SPI: barramento serial rápido para flash e sensores.
- I2C: barramento simples de dois fios para periféricos de baixa velocidade.
Como rodamos tudo no QEMU, não precisamos de fiação física, adaptadores ou placas.
Exercícios
- Altere a string da UART e verifique a saída.
- Adicione uma função que imprima um valor em hexadecimal com
uart_puthex32. - Pesquise o mapa de memória do QEMU
virte liste mais um dispositivo MMIO.
Resumo
- Saída por UART via MMIO é o caminho mais simples e confiável.
- O QEMU
virtfornece uma UART estável e previsível em0x10000000. - Interfaces físicas são introduzidas conceitualmente, mas não são exigidas aqui.