u-boot代码分析和移植,连载中

[复制链接]
11651|47
changyongid 发表于 2009-11-24 09:22 | 显示全部楼层
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时,开始可以不拘泥于细节,而以功能的分析为主。待过了一遍后再回头看看,再了解细节。
arm_fan168 发表于 2009-11-24 11:19 | 显示全部楼层
35# 8421bcd
我觉得_armboot_start 和_bbs_start可以在C文件里可以看做是两个常量名,在汇编文件里可以看做是两个常量地址标号,.word关键字很想IAR中的DC32关键字。在汇编文件中使用常量名是该常量地址的值,在C文件中使用常量名是该常量的值。又因为位于代码段,其值是在编译时就确定了的,所以是不能更改的。
ww2000e 发表于 2009-11-25 14:46 | 显示全部楼层
不错 , 标记下
xczxwy 发表于 2009-11-25 15:37 | 显示全部楼层
搞嵌入式第一步就是UBOOT,不过这个真的有点难!
weiy732 发表于 2009-11-26 11:27 | 显示全部楼层
进来了就顶你一下
a730598 发表于 2009-11-29 13:44 | 显示全部楼层
呵呵,得谢谢楼主的分享
itelectron 发表于 2009-11-29 15:41 | 显示全部楼层
_start_armboot这个地址放置一个值,值为start_armboot ,它是第二阶段C程序的函数名,即起始地址
=================================================================
start_armboot ,它是第二阶段C程序的函数名 这个地址也是有 编译器决定的吧??
Pingo_zp 发表于 2009-12-7 21:59 | 显示全部楼层
lz很有耐心,很详细
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部