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.
la source
Réponses:
Il existe plusieurs outils / stratégies qui pourraient vous aider:
De meilleurs outils pour donner du sens au code source:
Analyse de l'exécution
Écrire votre propre mini chargeur de démarrage
Malheureusement, il n'y a pas de recette magique qui fonctionne pour tout.
la source
Comment l'avez-vous configuré pour construire pour l'AT91?
L'arbre de code semble être conçu de telle sorte que tout élément spécifique à l'architecture se trouve dans l'arborescence 'arch / (classe cpu) / (type cpu) / ...'. J'ai trouvé le code AT91 sous arch / arm / cpu / arm926ejs / at91 ... la variante spécifique que vous cherchez à modifier ne s'y trouve pas? Il n'y a pas grand-chose à parcourir dans ce répertoire, d'autant plus que près de la moitié des fichiers sont spécifiques aux variantes AT91.
Désolé si c'est évident ... mais vous n'avez pas mentionné de vérifier cela.
Je n'avais pas encore regardé l'arborescence de code uBoot, mais votre message m'a effrayé à le faire. Un de mes projets de brûleur arrière consiste à utiliser éventuellement uBoot et Linux sur un PCB iMX233 personnalisé. Je suis très intéressé à obtenir ce genre de commentaires sur la façon dont l'architecture uBoot et les éléments spécifiques aux variantes sont isolés et à quel point cela va être pénible.
la source