Niedawno odkryłem przyczynę paskudnego błędu, nad którym pracowałem z Atmel AT91SAM9G20 SBC z uruchomionym U-boot , bootloaderem typu open source. Istotą problemu było to, że U-boot oczekiwał, że sprzęt zostanie skonfigurowany inaczej niż ja go zbudowałem, więc niektóre rejestry urządzeń były źle skonfigurowane.
Teraz, gdy odkryłem problem, muszę dostosować U-boot, aby poprawnie skonfigurować rejestry. Mogę to zrobić na ślepo, dodając kilka wierszy kodu na końcu programu, ale to jest bałagan.
To prowadzi mnie do pytania: jak mogę dowiedzieć się, w jaki sposób U-boot działa wydajniej niż rozpoczynając od main () i czytając wszystkie możliwe ścieżki kodu we wszystkich plikach? Próbowałem przeszukiwać pliki i patrzeć na kod w pobliżu odpowiednich identyfikatorów. Okazało się to nieskuteczne; wygląda na to, że większość kodu to sterowniki dla podsystemów, na których mi nie zależy. Właściwie rozumiem, jak działa bootloader, ale mam nadzieję, że istnieje lepsza metoda niż moje naiwne podejście.