我最近发现了我一直在使用运行U-boot的 Atmel AT91SAM9G20 SBC (一个开源引导加载程序)处理的一个令人讨厌的错误的原因。问题的核心是 U-boot 期望硬件的配置与我构建的不同,因此一些设备寄存器配置错误。
现在我已经解决了问题,我需要调整 U-boot 以正确配置寄存器。我可以通过在程序末尾添加几行代码来盲目地做到这一点,但这很混乱。
这让我想到了我的问题:我怎样才能弄清楚 U-boot 如何比从 main() 开始并读取所有文件中所有可能的代码路径更有效?我尝试在文件中四处寻找并查看相关标识符附近的代码。事实证明这是无效的;似乎大部分代码都是我不关心的子系统的驱动程序。我现在实际上了解引导加载程序如何工作得很好,但我希望存在比我天真的方法更好的方法。