Solução de problemas
QEMU não mostra saída
- Confirme que você usou
-nographice-bios none. - Garanta que o programa escreve na UART em
0x10000000. - Verifique se o ELF é RV32 (
readelf -hmostraELF32+RISC-V).
GDB conecta, mas os breakpoints não param
- Inicie o QEMU com
-Spara a CPU ficar pausada. - Certifique-se de que seu ELF tem símbolos (
-g). - Defina
set arch riscv:rv32no GDB.
Erros de linker: missing _start
- Confirme que
src/start.sestá incluído na linha de comando. - Verifique se
src/link.ldusaENTRY(_start).
QEMU sai imediatamente
- Se
mainretorna,_startdeve entrar em loop ou executarwfi. - Verifique que sua função
_startexiste e não foi otimizada para fora.
Exercícios
- Remova
-T src/link.ldde propósito e observe o erro. - Remova
src/start.se identifique o símbolo faltante. - Troque
-marchpararv32ie veja se algum exemplo quebra.
Resumo
A maioria dos problemas vem de arquivo de startup faltando, ELF errado ou flags do QEMU esquecidas. As correções são determinísticas e fáceis de confirmar com readelf e GDB.