Недавно я выяснил причину неприятного бага, над которым я работал, с Atmel AT91SAM9G20 SBC, работающей с U-boot , загрузчиком с открытым исходным кодом. Суть проблемы заключалась в том, что U-boot ожидал, что аппаратное обеспечение будет настроено не так, как я его построил, поэтому некоторые регистры устройств были неправильно настроены.
Теперь, когда я разобрался с проблемой, мне нужно настроить U-boot для правильной настройки регистров. Я могу сделать это вслепую, добавив несколько строк кода в конце программы, но это грязно.
Это подводит меня к моему вопросу: как я могу понять, как U-boot работает более эффективно, чем запуск в main () и чтение всех возможных путей кода во всех файлах? Я попытался просмотреть файлы и просмотреть код рядом с соответствующими идентификаторами. Это оказалось неэффективным; кажется, что большая часть кода - это драйверы для подсистем, которые меня не интересуют. Я действительно понимаю, как загрузчик работает довольно хорошо, но я надеюсь, что существует лучший метод, чем мой наивный подход.
источник
Ответы:
Есть несколько инструментов / стратегий, которые могут помочь:
Лучшие инструменты для понимания исходного кода:
Анализ времени выполнения
Написание собственного мини-загрузчика
К сожалению, нет волшебного рецепта, который работает для всего.
источник
Как вы настроили его для сборки для AT91?
Кажется, что дерево кода спроектировано таким образом, что любой специфический для архитектуры материал находится в дереве 'arch / (класс процессора) / (тип процессора) / ...'. Я нашел код AT91 в разделе arch / arm / cpu / arm926ejs / at91 ... разве там не находится материал, который вы хотите изменить? В этом каталоге просматривать не так уж и много, тем более что почти половина файлов зависит от конкретного варианта AT91.
Извините, если это очевидно ... но вы не упомянули, что проверяли это.
Я еще не просматривал дерево кодов uBoot, но ваш пост напугал меня этим. Мой задний план включает в себя в конечном итоге использование uBoot и Linux на специальной плате iMX233. Я очень заинтересован в том, чтобы получить такую обратную связь о том, насколько хорошо изолирована архитектура uBoot и материал, зависящий от варианта, и насколько это будет тяжело.
источник