发新帖我要提问
123
返回列表
打印

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

[复制链接]
楼主: 8421bcd
手机看帖
扫描二维码
随时随地手机跟帖
41
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时,开始可以不拘泥于细节,而以功能的分析为主。待过了一遍后再回头看看,再了解细节。

使用特权

评论回复
42
arm_fan168| | 2009-11-24 11:19 | 只看该作者
35# 8421bcd
我觉得_armboot_start 和_bbs_start可以在C文件里可以看做是两个常量名,在汇编文件里可以看做是两个常量地址标号,.word关键字很想IAR中的DC32关键字。在汇编文件中使用常量名是该常量地址的值,在C文件中使用常量名是该常量的值。又因为位于代码段,其值是在编译时就确定了的,所以是不能更改的。

使用特权

评论回复
43
ww2000e| | 2009-11-25 14:46 | 只看该作者
不错 , 标记下

使用特权

评论回复
44
xczxwy| | 2009-11-25 15:37 | 只看该作者
搞嵌入式第一步就是UBOOT,不过这个真的有点难!

使用特权

评论回复
45
weiy732| | 2009-11-26 11:27 | 只看该作者
进来了就顶你一下

使用特权

评论回复
46
a730598| | 2009-11-29 13:44 | 只看该作者
呵呵,得谢谢楼主的分享

使用特权

评论回复
47
itelectron| | 2009-11-29 15:41 | 只看该作者
_start_armboot这个地址放置一个值,值为start_armboot ,它是第二阶段C程序的函数名,即起始地址
=================================================================
start_armboot ,它是第二阶段C程序的函数名 这个地址也是有 编译器决定的吧??

使用特权

评论回复
48
Pingo_zp| | 2009-12-7 21:59 | 只看该作者
lz很有耐心,很详细

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则