S5pv210uboot启动第一阶段分析之地址重定位和跳转。_uboot 为什么要跳转-程序员宅基地

技术标签: uboot/arm  u-boot  链接地址  重定位  嵌入式  

       这是uboot启动的第一阶段,我们可以发现,我们来分析一下uboot的第一阶段地址问题:我们知道在编译的时候我们进行了地址的重定位,但是下载的时候我们显然是下载到了flash里面,在开机的时候由控制器加载到了内部Iram中(但是内部的iram仅仅是4K)这4K主要的作用很简单初始化一些设备,同时完成代码的拷贝将代码拷贝到我们链接地址指定的地方。我们的代码在一开始执行的时候我们使用了地址无关的代码(汇编中的地址无关码)所以一开始在Iram中可以正常执行,但是剩下的代码就需要我们拷贝到外部的dram执行了,当然是从flash中拷贝,而且要注意,拷贝是完全拷贝,不可能是拷贝剩下的(所谓剩下,就是在内部iram中已经执行了的)那问题也就接种而来:拷贝完是如何跳转那?首先应该明确的是ARM是统一编址的,这点使他的跳转不必使用什么特殊的指令,就是正常的跳转就ok,我们所谓的跳转也就是在执行完iram中的代码跳转到
DRAM中执行跳转前的下一条指令。如何实现那?

我们可以看一下代码:



这个代码写的有意思:我们分析一下:要给pc赋值实现跳转,我们首先要明白,我们跳转后的地址应该是我们下条指令的地址(但注意着是汇编,顺序执行是小概事件,人家就喜欢乱跳),也就是—start—armboot的值,也就是450行的地址。我们看下反汇编:其实有时候反汇编要比你看源代码更爽,因为看源代码你还要分析宏定义的这些代码执行了没有,但是反汇编就可以知道哪些代码执行了


注意pc的地址和pc-4的地址我用箭头标出,ldr是条伪指令最后替换为pc-40(三级流水的原因),也可以看出这是一条绝对跳转,注意看上面的源码,ldr这条指令是取地址中的值,我想你应该明白了吧!那地址是0xc3e00210,里面的值是4个字节的 c3e026b4。所以这一跳可跳远了,跳到了c3e02b64其实就到了外部的dram中了!其实这个我记得在pc中linux启动的时候也是这么写的,分析完觉得也没什么,可见我们对汇编代码还是不敏感。当然跳转分析完了,你可能说,重定位那?这就叫重定位,其实我最先看到重定位这个词是在一本操作系统的书里面讲连接器的时候提到,这里叫地址跳转更好,但是很多人说这的重定位,那就重定位吧,更准确的说法应该是在这里重定位开始起作用了!

就分析到这 2017年1月10日18:33:55 张飞online




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013372900/article/details/54314301

智能推荐

php编译安装与配置_php编译后面--profile所对应的路径是-程序员宅基地

文章浏览阅读2.1w次,点赞3次,收藏5次。php编译安装与配置===========================================官网:http://php.net/官网下载:http://php.net/downloads.php===========================================一:了解与准备1.1:Apache(httpd) nginx 与 php 连接方式:..._php编译后面--profile所对应的路径是

路由器的Loopback地址是什么意思?_loopback是什么意思-程序员宅基地

文章浏览阅读1.8w次,点赞8次,收藏35次。本地环回接口(或地址),亦称回送地址(loopback address)。此类接口是应用最为广泛的一种虚接口,几乎在每台路由器上都会使用。常见于如下用途:1 作为一台路由器的管理地址 系统管理员完成网络规划之后,为了方便管理,会为每一台路由器创建一个loopback 接口,并在该接口上单独指定一个IP 地址作为管理地址,管理员会使用该地址对路由器远程登录(telnet ),_loopback是什么意思

自然语言处理-情感分析_自然语言处理情感分析matlab-程序员宅基地

文章浏览阅读233次。情感分析python 包https://www.jianshu.com/p/d50a14541d01英语:textBlob包中文:snownlp实战:IMDb电影评论https://baijiahao.baidu.com/s?id=1598913702189213115&wfr=spider&for=pc步骤:1、清洗文本数据:删除不需要的字符2、标记文档:分词、词..._自然语言处理情感分析matlab

MDK下ARM伪指令_mdk area指令-程序员宅基地

文章浏览阅读1.4k次。伪指令伪指令是用于告诉汇编程序如何进行汇编的指令。这里指的是MDK下的伪指令与GNU下的微指令不一样。 一、常见伪指令【area】定义一个代码段或者数据段格式:area 段名 属性1,属性2……段名:code:代码段、data:数据段属性:readonly:只读、readwrite、align[4] 4字节对齐、code32 4字节、code16【entry】汇编程序的入口点,一个完整的汇编程..._mdk area指令

cocos2dx lua 升级spine兼容Spine库v3.8到最新版本_cocos2dx-lua升级spine-程序员宅基地

文章浏览阅读5.5k次,点赞2次,收藏4次。本篇将升级cocos2dx引擎中的spine库, cocos2dx自带的spine版本是spine2.x的老版本,现在的spine已经到v3.8了1 先升级cocos2dx c++原生版本详细过程请看我的上一篇文章:链接:https://blog.csdn.net/zhang1461376499/article/details/1060316442 兼容lua参考如下几个文件为了兼容lua,这三个文件中调用了spine库里面的东西,所以我们要做相应的修改,首先看cocos2dx引擎中几个文件:_cocos2dx-lua升级spine

图形算法与实战:1.滤波专题 (1)均值滤波_均值滤波例题-程序员宅基地

文章浏览阅读1.7k次。1.均值滤波1.1 处理效果展示图像处理前后对比1图像处理前后对比21.2 滤波算法原理1.3 代码分享1.1 处理效果展示图像处理前后对比1图像处理前后对比21.2 滤波算法原理均值滤波算法,是与去除图像噪声有关的算法。图像噪声在图像上的表现为多余的、破坏性的点、线或者区域,噪声的存在对原始图像噪声了干扰或者破坏,因此去除图像噪声具有重要的意义。上图为3×3的内核(也可看做窗口,或者模版)。该内核包含了9个点及对应像素值。在对该区域进行滤波过程为:对P1~P9九个像素的灰度值求平均,代_均值滤波例题

随便推点

2024年G1工业锅炉司炉证考试题库及G1工业锅炉司炉试题解析-程序员宅基地

文章浏览阅读415次,点赞4次,收藏3次。20、【多选题】熄火保护装置,燃烧器设有火焰监测器,随时监测炉膛内()是否成功.火焰监测器一般在5秒钟内(点火)及1秒钟内(运行时)关闭进油进气电磁阀并通过电铃声发出声、光报警信号,这时风机继续运转()炉膛内残留可燃气体.通风时间对于锅炉至少应持续()秒钟。54、【单选题】利·安全生产 模拟 考试一点通·用微压气动控制技术,用于保持物料容器顶部保护气(氮气)的微压力恒定,避免容器内物料与空气直接接触,阻止物料的挥发、被氧化,同时保护容器的安全,这种装置称:()。

MT6735 EMI 定制_mtk emi-程序员宅基地

文章浏览阅读532次。一:MTK 平台查看eMMC和DDR的工作频率eMMC:adb shell cat /sys/kernel/debug/mmc0/clockDDR:adb shell cat /sys/bus/platform/drivers/emi_clk_test/read_dram_data_rate1. 获取 flash id:cat /sys/bl..._mtk emi

分享86个行业PPT,总有一款适合您-程序员宅基地

文章浏览阅读900次,点赞26次,收藏20次。知识付费甚欢喜,为咱码农谋福利。简洁清新时尚大学生恋爱心理健康教育ppt模板。简洁时尚大气卡通教育教学课件培训ppt模板。简洁清新时尚房地产计划运营培训ppt模板。简洁时尚大气金融网络面试介绍ppt模板。简洁时尚大气教育培训说课通用ppt模板。简洁时尚清新物流转正述职报告ppt模板。简洁时尚清新工业地产招商项目ppt模板。简洁时尚清新保险公司团建活动ppt模板。简洁时尚大气银行员工述职报告ppt模板。简洁时尚大气银行营销产品介绍ppt模板。简洁时尚清新教育信息技术说课ppt模板。

如何查看HAL库版本\stm32 HAL版本号_stm32 hal 查看版本-程序员宅基地

文章浏览阅读1.6k次。查看HAL版本_stm32 hal 查看版本

java基于OpenCv图像处理_读取_保存图片_javacv 读取图片-程序员宅基地

文章浏览阅读3.8k次,点赞2次,收藏6次。java基于openCv图像处理本文使用javaCV封装后的OpenCv<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.5.5</version></dependency>1、图片读取、保存在openCv中有一函数用于读取图片 imr_javacv 读取图片

AI实战:深度学习模型压缩:模型裁剪——Pruning with Keras_ai模型裁剪-程序员宅基地

文章浏览阅读6.4k次。前言上一篇文章 AI实战:深度学习模型压缩:模型裁剪——Pruning with Tensorflow 介绍了使用Tensorflow裁剪模型的方法,本文继续介绍使用Keras裁剪模型的方法及源码分享。模型裁剪1、《Train sparse TensorFlow models with Keras》 【TF官网方法】核心思想:对neural network’s weight ten..._ai模型裁剪