Di recente ho scoperto la causa di un brutto bug su cui ho lavorato con un SBC Atmel AT91SAM9G20 con U-boot , un bootloader open source. Il nocciolo del problema era che U-boot si aspettava che l'hardware fosse configurato diversamente da come l'avevo costruito, quindi alcuni dei registri dei dispositivi erano configurati male.
Ora che ho capito il problema, devo modificare U-boot per configurare correttamente i registri. Posso farlo alla cieca aggiungendo alcune righe di codice alla fine del programma, ma è disordinato.
Questo mi porta alla mia domanda: come posso capire come U-boot funziona in modo più efficiente rispetto a partire da main () e leggere tutti i possibili percorsi di codice su tutti i file? Ho provato a cercare nei file e guardare il codice vicino agli identificatori pertinenti. Ciò si è rivelato inefficace; sembra che la maggior parte del codice sia driver per sottosistemi di cui non mi interessa. In realtà capisco come il bootloader funzioni abbastanza bene ormai, ma spero che esista un metodo migliore del mio approccio ingenuo.