J'ai récemment découvert la cause d'un bogue désagréable sur lequel je travaillais avec un Atmel AT91SAM9G20 SBC exécutant U-boot , un chargeur de démarrage open source. Le cœur du problème était que U-boot s'attendait à ce que le matériel soit configuré différemment de ce que je l'avais construit, donc certains registres de périphériques étaient mal configurés.
Maintenant que j'ai compris le problème, je dois modifier U-boot pour configurer correctement les registres. Je peux le faire aveuglément en ajoutant quelques lignes de code à la fin du programme, mais c'est compliqué.
Cela m'amène à ma question: comment puis-je comprendre comment U-boot fonctionne plus efficacement que de démarrer à main () et de lire tous les chemins de code possibles dans tous les fichiers? J'ai essayé de parcourir les fichiers et de regarder le code près des identifiants pertinents. Cela s'est révélé inefficace; il semble que la plupart du code soit des pilotes pour des sous-systèmes dont je me fiche. En fait, je comprends maintenant comment fonctionne le chargeur de démarrage, mais j'espère qu'il existe une meilleure méthode que mon approche naïve.