ARM Architecture C 语言寻址解析—— 从U-Boot relocation所展开的探索(一)

ARM  Architecture C 语言寻址解析——
从U-Boot relocation所展开的探索(一)
by 蔡于清
文章的名字有点长也有点拗口,但它却很好的表达了本文的主题和来历。这个主题将讨论和分析ARM架构上C语言对变量和函数的寻址方式,为什么要讨论这个主题?或者说为什么会想到去讨论这个主题?答案就在文章的副标题,没错,因为U-Boot。这段时间本人在移植U-Boot2011.12到自家的OMAP3平台上,早在ARM9时代就接触过U-Boot,当时没有仔细研究,兴趣所致,这次我读起了她的源代码,其中有一个特性引起我的注意,这个特性就是同一份U-Boot代码被加载在不同的内存空间运行,简单说就是U-Boot的运行基地址可以不同于其连接基地址(比如连接时指定的基地址处于Flash空间而运行时基地址处在RAM空间),这就带来一个问题——”CPU如何进行寻址?“。对于一个普通的完整的可运行的bin 文件,必须在生成它的时候(一般是在link阶段)指定其连接基地址,一般而言连接基地址等同于运行基地址(也等同于加载地址),如果运行地址与连接地址不同,则寻址必将发生错误,而U-Boot却可以被整体的从一个内存段搬运到另一个内存段,并顺利地运行,她是如何做到的呢?——答案是relocotion(重定位),那么U-Boot又是如何进行relocation的呢?好奇心的驱使,我决定弄个明白,于是就有了这个主题——ARM寻址解析。

这个主题分三个部分讲解(每一部分单独成章,本文为第一章):
  1. ARM Architecture C语言寻址方式解析(GNU ARM Tool Chain with No PIC compile option)。
  2. ARM Architecture C语言寻址方式解析(GNU ARM Tool Chain with PIC compile option)。
  3. U-Boot Relocation解析。

本系列文章使用如下工具和源码:
  1. host ÿ
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值