to 20楼:
前面已经说过,start_armboot的地址是编译后就确定了的。
_start_armboot: .word start_armboot
的意思是在_start_armboot这个地址放置一个值,值为start_armboot ,它是第二阶段C程序的函数名,即起始地址
.word在C语言里相当于 int i = xxx; (并不精确,但可以这样类比)
这句话写出来就是void (*_start_armboot) (void) = start_armboot.
那么,变量_start_armboot中的值是start_armboot,即一个地址,这里是一个函数指针。
这样说起来反倒麻烦。简单的理解它就好。
另,uboot是0x33f80000..分析bootloader时,开始可以不拘泥于细节,而以功能的分析为主。待过了一遍后再回头看看,再了解细节。 |