Ich habe kürzlich die Ursache eines bösen Fehlers herausgefunden, an dem ich mit einem Atmel AT91SAM9G20 SBC gearbeitet habe, auf dem U-Boot , ein Open-Source-Bootloader, ausgeführt wird. Der Kern des Problems bestand darin, dass U-Boot erwartete, dass die Hardware anders konfiguriert sein würde als ich sie erstellt hatte, sodass einige der Geräteregister falsch konfiguriert waren.
Nachdem ich das Problem herausgefunden habe, muss ich den U-Boot optimieren, um die Register korrekt zu konfigurieren. Ich kann dies blind tun, indem ich am Ende des Programms ein paar Codezeilen hinzufüge, aber das ist chaotisch.
Dies bringt mich zu meiner Frage: Wie kann ich herausfinden, wie U-Boot effizienter funktioniert, als bei main () zu beginnen und alle möglichen Codepfade über alle Dateien hinweg zu lesen? Ich habe versucht, in den Dateien herumzusuchen und den Code in der Nähe der relevanten Bezeichner zu betrachten. Dies hat sich als unwirksam erwiesen; Es scheint, dass der größte Teil des Codes Treiber für Subsysteme sind, die mir egal sind. Eigentlich verstehe ich, wie der Bootloader mittlerweile ziemlich gut funktioniert, aber ich hoffe, dass es eine bessere Methode gibt als meinen naiven Ansatz.