当前位置: 首页 > news >正文

uboot启动流程-uboot代码重定位说明二

 一.  uboot启动流程

本文学习 uboot 的启动流程中涉及的 uboot 代码重定位部分。

_main 函数中会调用 relocate_code 函数。

relocate_code 函数分两个部分:

1.  拷贝 uboot 代码部分

2.  有关 " 重定位后有关函数调用或全局变量地址的问题"的解决方法。

本文继上一篇文章的学习,地址如下:

uboot启动流程-uboot代码重定位说明一_凌肖战的博客-CSDN博客

这里学习 uboot 重定位的第二部分内容:重定位后有关函数调用或全局变量地址的问题。

二.  uboot代码重定位

1.    重定位后函数调用或全局变量使用问题

具体问题描述:

重定位 就是 uboot 将自身拷贝到 DRAM 的另一个地放去继续运行(DRAM 的高地址处)。

我们知道,一个可执行的 bin 文件,其链接地址和运行地址要相等,也就是链接到哪个地址, 在运行之前,就要拷贝到哪个地址去。现在我们重定位以后,运行地址就和链接地址不同了,这 样寻址的时候不会出问题吗?

当简单粗暴的将uboot从0X87800000拷贝到其他地方以后,关于函数调用、全局变量引用就会出问题。Uboot对于这个的处理方法就是采用位置无关码,这个就需要借助于 .rel.dyn段。

接下来,relocate_code 函数 的第 94 行~109 行,是重定位.rel.dyn 段,.rel.dyn 段是存放.text 段中需要重定位地址的集合。

uboot重定位后的函数调用或全局变量地址问题处理如下:

94 ldr r2, =__rel_dyn_start /* r2 <- SRC &__rel_dyn_start */
95 ldr r3, =__rel_dyn_end /* r3 <- SRC &__rel_dyn_end */
96 fixloop:
97 ldmia r2!, {r0-r1} /* (r0,r1) <- (SRC location,fixup) */
98 and r1, r1, #0xff
99 cmp r1, #23 /* relative fixup? */
100 bne fixnext
101
102 /* relative fix: increase location by offset */
103 add r0, r0, r4
104 ldr r1, [r0]
105 add r1, r1, r4
106 str r1, [r0]
107 fixnext:
108 cmp r2, r3
109 blo fixloop

2.    代码测试

相关文章:

uboot启动流程-uboot代码重定位说明二

一. uboot启动流程 本文学习 uboot 的启动流程中涉及的 uboot 代码重定位部分。 _main 函数中会调用 relocate_code 函数。 relocate_code 函数分两个部分&#xff1a; 1. 拷贝 uboot 代码部分 2. 有关 " 重定位后有关函数调用或全局变量地址的问题"的解决方法…...

<HarmonyOS第一课>ArkTS开发语言介绍——闯关习题及答案

判断题 1.循环渲染ForEach可以从数据源中迭代获取数据&#xff0c;并为每个数组项创建相应的组件。&#xff08; 对 &#xff09; 2.Link变量不能在组件内部进行初始化。&#xff08; 对 &#xff09; 单选题 1.用哪一种装饰器修饰的struct表示该结构体具有组件化能力&#…...

香橙派、树莓派、核桃派、鲁班猫安装jupyter notebook【ubuntu、Debian开发板操作类似】

文章目录 前言一、安装环境二、使用方法总结 前言 香橙派树莓派鲁班猫安装一下调试代码还是比较方便的。 一、安装环境 假设已经安装好了miniconda3。如果还没安装可以参考我另外一篇博文&#xff0c;有写怎么安装。 pip install jupyter notebook # 生成Jupyter Notebook的…...

tomcat整体架构

Tomcat介绍 Tomcat是Apache Software Foundation&#xff08;Apache软件基金会&#xff09;开发的一款开源的Java Servlet 容器。它是一种Web服务器&#xff0c;用于在服务器端运行Java Servlet和JavaServer Pages (JSP)技术。它可 以为Java Web应用程序提供运行环境&#x…...

实现协议互通:探索钡铼BL124EC的EtherCAT转Ethernet/IP功能

钡铼BL124EC是一种用于工业网络通信的网关设备&#xff0c;专门用于将EtherCAT协议转换成Ethernet/IP协议。它充当一个桥梁&#xff0c;连接了使用不同协议的设备&#xff0c;使它们能够无缝地进行通信和互操作。 具体来说&#xff0c;BL124EC通过支持EtherCAT&#xff08;以太…...

Android之App跳转其他软件

文章目录 前言一、效果图二、实现步骤1.弹框xml(自己替换图标)2.弹框utils3.两个弹框动画4.封装方便调用5.调用6.长按事件方法7.跳转步骤8.复制utils 总结 前言 最近遇到一个需求&#xff0c;就是App内大面积需要长按复制并跳转指定App&#xff0c;没办法&#xff0c;只能埋头…...

【Element UI】解决 el-dialog 弹框组件设置 custom-class 样式不生效问题

文章目录 问题描述解决方法 问题描述 <template><el-dialog class"myDialog" v-model"show" title"弹窗" custom-class"customDialog"><div>弹窗内容</div></el-dialog> </template> <script…...

前端菜鸟浅谈Web前端开发技术

Web前端开发技术按照过程遵循了由容易到困难&#xff0c;这就请求Web前端开发工作技术员方面要熟练学习基础的Web开发技术&#xff0c;关于网站性能的美化、SEO以及基础的关于服务器端方面的知识&#xff1b;另一方面还对开发人员有具体要求&#xff0c;比如能够熟练且灵敏的使…...

Springboot项目log4j与logback的Jar包冲突问题

异常信息关键词&#xff1a; SLF4J: Class path contains multiple SLF4J bindings. ERROR in ch.qos.logback.core.joran.spi.Interpreter24:14 - no applicable action for [properties], current ElementPath is [[configuration][properties]] 详细异常信息&#xff1a…...

光伏并网逆变器低电压穿越技术研究(Simulink仿真)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

命令模式,命令 Command 类对象的设计(设计模式与开发实践 P9)

文章目录 命令举例撤销C# 例子 命令 命令模式 Command 指的是一个 执行某些特定事情的指令 应用场景&#xff1a;有时需要向某些对象发送请求&#xff0c;但并不知道请求的接受者是谁&#xff0c;也不知道被请求的操作是什么。这时候命令模式就负责使发送者和接受者之间解耦 …...

jira 浏览器插件在问题列表页快速编辑问题标题

jira-issueTable-quicker 这是一个可以帮助我们在问题表格页快速编辑问题的浏览器插件 github 地址 功能介绍 jira 不可否认是一个可以帮助有效提高工作效率的工具&#xff0c;但是我们在使用 jira 时使用问题表格可以让我们看到跟多的内容而不用关注细节&#xff0c;但是目…...

2020架构真题(四十六)

、以下关于操作系统微内核架构特征的说法&#xff0c;不正确的是&#xff08;&#xff09;。 微内核的系统结构清晰&#xff0c;利于协作开发微内核代码量少&#xff0c;系统具有良好的可移植性微内核有良好的的伸缩性和扩展性微内核功能代码可以互相调用&#xff0c;性能很高…...

软件工程与计算总结(五)软件需求基础

本帖介绍软件需求涉及的诸多基本概念&#xff0c;通过对这些概念的阐述&#xff0c;剖析软件需求的来源、层次、类别、作用等重要知识~ 目录 ​编辑 一.引言 二.需求工程基础 1.简介 2.活动 3.需求获取 4.需求分析 5.需求规格说明 6.需求验证 7.需求管理 三.需求基…...

数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)

已知2010-2020数据&#xff0c;预测2021-2060数据 一、Logistic预测人口 %%logistic预测2021-2060年结果 clear;clc; X[7869.34, 8022.99, 8119.81, 8192.44, 8281.09, 8315.11, 8381.47, 8423.50, 8446.19, 8469.09, 8477.26]; nlength(X)-1; for t1:nZ(t)(X(t1)-X(t))/X(t1…...

泛型擦除是什么?

泛型擦除的主要特点包括&#xff1a; 编译时类型检查&#xff1a;在编写泛型代码时&#xff0c;编译器会对泛型类型参数进行类型检查&#xff0c;以确保类型安全。这意味着在编译时会捕获许多类型错误&#xff0c;避免了运行时类型错误。因为泛型其实只是在编译器中实现的而虚拟…...

阿里云轻量应用服务器有月流量限制吗?

阿里云轻量应用服务器限制流量吗&#xff1f;部分限制&#xff0c;2核2G3M和2核4G4M这两款轻量应用服务器不限制月流量&#xff0c;其他的轻量服务器套餐有月流量限制。 腾讯云轻量应用服务器价格便宜&#xff0c;活动页面&#xff1a;aliyunbaike.com/go/tencent 细心的同学看…...

mysql面试题25:数据库自增主键可能会遇到什么问题?应该怎么解决呢?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:数据库自增主键可能会遇到什么问题? 数据库自增主键可能遇到的问题: 冲突问题:自增主键是通过自动递增生成的唯一标识符,但在某些情况下可能会…...

学习css 伪类:has

学习抖音&#xff1a; 渡一前端提薪课 首先我们看下:has(selector)是什么 匹配包含&#xff08;相对于 selector 的 :scope&#xff09;指定选择器的元素。可以认为 selector 的前面有一个看不见的 :scope 伪类。它的强大之处是&#xff0c;可以实现父选择器和前面兄弟选择器…...

矩阵的相似性度量的常用方法

矩阵的相似性度量的常用方法 1&#xff0c;欧氏距离 欧式距离是最易于理解的一种距离计算方法&#xff0c;源自欧式空间中两点间的距离公式。 (1)二维平面上的点 a ( x 1 , y 1 ) a(x_1,y_1) a(x1​,y1​)和点 b ( x 2 , y 2 ) b(x_2,y_2) b(x2​,y2​)的欧式距离为 d ( x …...

【实测避坑】文科/理工科怎么选论文降AI工具?5款热门工具深度评测

最近看了一些行业报告&#xff0c;AI工具在写作方面的普及率真的已经超乎想象了。 很多大学生在写论文时也都习惯用AI来辅助寻找灵感、提高效率。 与此同时&#xff0c;相关部门针对人工智能写作出台了一系列规定&#xff0c;各大学术检测平台也都在不断升级AIGC检测算法。 现…...

华为MateBook D 2018款升级Win11遇阻?手把手教你通过修改BIOS隐藏参数开启TPM2.0

华为MateBook D 2018款解锁Win11升级全攻略&#xff1a;深入BIOS底层参数调整实战 华为MateBook D系列作为商务本中的性价比代表&#xff0c;2018款用户近期在升级Windows 11时普遍遇到TPM 2.0无法启用的困扰。这台搭载第八代Intel处理器的设备其实完全具备TPM 2.0的硬件基础&a…...

苹果将在培训应用中采用AI生成主播,解决传统培训规模化与个性化难题

苹果培训应用引入AI生成主播据9to5mac报道&#xff0c;Aaron Perris在X平台披露&#xff0c;苹果公司将很快在其内部培训应用“Apple Sales Coach”中采用AI生成主播&#xff0c;用于制作销售培训视频。该应用由苹果此前的“SEED”应用更新而来&#xff0c;旨在向全球苹果销售合…...

PowerToys中文汉化终极指南:3步快速实现Windows效率工具完全本地化

PowerToys中文汉化终极指南&#xff1a;3步快速实现Windows效率工具完全本地化 【免费下载链接】PowerToys-CN PowerToys Simplified Chinese Translation 微软增强工具箱 自制汉化 项目地址: https://gitcode.com/gh_mirrors/po/PowerToys-CN 你是否曾因PowerToys的英文…...

Cangaroo:开源CAN总线分析软件架构解析与深度优化指南

Cangaroo&#xff1a;开源CAN总线分析软件架构解析与深度优化指南 【免费下载链接】cangaroo Open source can bus analyzer software - with support for CANable / CANable2, CANFD, and other new features 项目地址: https://gitcode.com/gh_mirrors/ca/cangaroo Ca…...

告别手写代码!用Simulink+STM32CubeMX给F103点个灯(保姆级图文教程)

零代码玩转STM32&#xff1a;Simulink与CubeMX联动的LED控制实战指南 在嵌入式开发领域&#xff0c;传统的手写代码方式正逐渐被模型化设计工具所革新。想象一下&#xff0c;只需拖拽几个功能模块&#xff0c;设置几个参数&#xff0c;就能让STM32微控制器按照你的想法工作——…...

建筑消防防火分区专用钢质卷帘门

在现代建筑消防设计体系中&#xff0c;防火分区的科学划分与有效分隔&#xff0c;是控制火灾蔓延、减少人员伤亡与财产损失的核心环节。建筑消防防火分区专用钢质卷帘门&#xff0c;作为固定式防火分隔的重要配套设施&#xff0c;凭借稳定的耐火性能、可靠的启闭功能与强适配性…...

基于AI与贝叶斯学习的开源LinkedIn自动化销售探索代理部署指南

1. 项目概述&#xff1a;一个能自己找客户的AI销售代理如果你在B2B销售、市场拓展或者创业&#xff0c;你一定对LinkedIn又爱又恨。爱的是&#xff0c;它几乎是全球最精准的B2B客户数据库&#xff1b;恨的是&#xff0c;手动寻找、筛选、联系潜在客户&#xff0c;是一个极其耗时…...

5 月 8 日 AIoT 双标落地,中国智能基础设施建设开启十年竞速!

AIoT 产业里程碑&#xff1a;5 月 8 日双标落地2026 年 5 月 8 日&#xff0c;注定会被写进中国 AIoT 产业的发展史。多个国家级部委在同一天落下两枚关乎未来十年的战略锚点。第一枚&#xff0c;是国家网信办、国家发展改革委、工业和信息化部联合印发的 《智能体规范应用与创…...

FPGA仿真入门:手把手教你配置Quartus Prime 21.1里的Questa Starter版(附12个月免费许可攻略)

FPGA仿真工具链实战&#xff1a;从Questa Starter许可申请到Quartus Prime深度集成 当数字逻辑设计从纸上谈兵进入硬件实现阶段&#xff0c;仿真验证便成为FPGA开发流程中不可逾越的质量关卡。作为Intel FPGA生态中的黄金搭档&#xff0c;Quartus Prime与Questa的协同工作能帮助…...