U-BOOT从ROM拷到RAM_boot阶段拷贝rom 到ram-程序员宅基地

U-BOOT从ROM拷到RAM

详见start.S
relocate:                /* relocate U-Boot to RAM        */
    adr    r0, _start        /* r0 <- current position of code   */
    ldr    r1, _TEXT_BASE        /* test if we run from flash or RAM */
    cmp     r0, r1                  /* don't reloc during debug         */
    beq     stack_setup

    ldr    r2, _armboot_start
    ldr    r3, _bss_start
    sub    r2, r3, r2        /* r2 <- size of armboot            */
    add    r2, r0, r2        /* r2 <- source end address         */

copy_loop:
    ldmia    r0!, {r3-r10}        /* copy from source address [r0]    */
    stmia    r1!, {r3-r10}        /* copy to   target address [r1]    */
    cmp    r0, r2            /* until source end addreee [r2]    */
    ble    copy_loop

其中,
adr  r0, _start
是取得_start行在内存(Nor Flash ROM)的实际位置,_TEXT_BASE则是RAM中的位置。
实际把plain binary格式的u-boot烧写到NOR Flash运行时,需要把Nor Flash中的
代码拷贝到RAM。当u-boot在NorFlash中运行时,adr r0,_start可以取得该行的
实际位置。

_armboot_start的值
_armboot_start:
    .word _start
此值在编译时已经决定,为0x33F80000

_bss_start的值
_bss_start:
    .word __bss_start
此值在编译时已经决定,即__bss_start的值,在link script中定义。

u-boot代码长度 = _armboot_start - _bss_start
u-boot代码末地址 = r2

ldmia : 每次取8个word
    ldmia    r0!, {r3-r10}        /* copy from source address [r0]    */
    stmia    r1!, {r3-r10}        /* copy to   target address [r1]    */
直到r0 > r2 ,其中ble表示 <=,即r0<=r2时循环拷贝
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lvkunfeng07/article/details/51166111

智能推荐

从零开始完成一个跟踪识别系统(一)机械制图_怎么从0开始做一个物体识别-程序员宅基地

文章浏览阅读662次,点赞2次,收藏5次。由于时间和地域的关系,在家实属无聊想着做个“小东西”为了学习与锻炼,至于从0,0到什么程度呢,肯定不是从如何制造材料、如何制造舵机、亦或如何组合门电路开始,任何创作都是思想的模型,首先在头脑里要有这个东西的样子,所以就从机械制图开始吧,由于本人之前完全没有接触过机械制图,所以路过的大佬勿喷。如有建议,请评论,感激不尽。简介项目名称:物体识别跟踪系统项目简介:通过上位机识别物体并锁定跟踪,发送物体坐标给下位机,云台根据位置坐标转动。平台:树莓派3b、stm32f407vet6、舵机、ks2a17、_怎么从0开始做一个物体识别

入门了解使用huggingface实现ALBERT模型相关参数_huggingface albert-程序员宅基地

文章浏览阅读894次,点赞22次,收藏15次。在这篇博客中,我们将深入探讨使用库来实现和应用ALBERT模型时的关键参数和配置。库是由Hugging Face提供的,支持包括ALBERT在内的多种预训练语言模型,使得自然语言处理(NLP)任务的实现变得更加便捷和高效。我们将重点讨论以及的使用,这些组件是使用ALBERT模型时的核心。_huggingface albert

python发微信朋友圈_python实现微信每日一句自动发送给喜欢的人-程序员宅基地

文章浏览阅读1.1k次。本文实例为大家分享了python实现微信每日一句自动发送的具体代码,供大家参考,具体内容如下参考了一篇博客:教你使用python实现微信每天给女朋友说晚安代码:# -*- coding: utf-8 -*-'''这是一个用来测试微信自动发送消息的demo恩,主要就是用到了一个微信库--wxpy安装很简单 pip install wxpy下面就开始吧主要就两个函数1、getNews();用以获取信息..._用python每天发朋友圈

PCONV:移动设备上的DNN权重剪枝中的稀疏性-程序员宅基地

文章浏览阅读844次。基于深度神经网络(DNN)的模型压缩技术已被广泛认为是在各种平台上实现加速的有效方法,而DNN权重剪枝是一种简单有效的模型压缩方法。目前有两种主流的剪枝方法代表了剪枝的两个极端:非结构化、细粒度的剪枝可以实现高稀疏性和准确性,但对硬件不友好;结构化、粗粒度的剪枝利用了硬件高效的结构,但当压缩率高时,精度会下降。在本文中,我们介绍了PCONV,它包括一个新的稀疏性维度,即粗粒度结构中的细粒度修剪模式。_pconv

Android电话本数据查询总结-程序员宅基地

文章浏览阅读1.7k次。该文总结下工作当中维护的联系人模块中的数据查询流程。该流程在很多系统APP上都类似,了解这个过程还是很有必要的。在Android应用框架中一般都会划分为三层:数据层、数据访问层和业务层。数据层基本都是用sqlite来存储数据,数据访问层是借用四大组件中的内容提供器来实现,业务层就是各个应用,比如电话本。三层结构如下图所示:这里将详细总结下电话本对数据库的查询流程。1、创建数据库_电话本数据

CodeBlocks下载与安装教程_code blocks-程序员宅基地

文章浏览阅读10w+次,点赞271次,收藏633次。一、下载教程1.在浏览器上搜索CodeBlocks官网或者直接输入网址http://www.codeblocks.org/ 进入CodeBlocks官网。2.进入下载页面Downloads,一般都会选择第一个Download the binary release(二进制版本)3.进入之后,就会出来很多版本,我们要选择一个合适的版本,一般都会下载自带编译器的版本,这里到后面安装的..._code blocks

随便推点

IMX6ULL系统移植篇-系统烧写原理说明_正点原子 imx6ull nand 烧录-程序员宅基地

文章浏览阅读535次。镜像烧写说明_正点原子 imx6ull nand 烧录

Gradle配置阿里云Maven镜像仓库地址_gradle 配置阿里镜像-程序员宅基地

文章浏览阅读1.8k次。搭建maven本地仓库参考博客_gradle 配置阿里镜像

SSRF服务器端请求伪造-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏3次。SSRF服务器端请求伪造SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造恶意数据,形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统,正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统 SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制,比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等SSRF常见场景_ssrf服务器端请求伪造

java/jsp/ssm电影院在线售票系统【2024年毕设】-程序员宅基地

文章浏览阅读72次。springboot基于微信小程序的汽车租赁系统的设计与实现。开发软件:eclipse/myeclipse/idea。springboot基于微信小程序的hpv疫苗预约系统。springboot基于协同过滤算法的音乐推荐系统。springboot毕设课题的选择和申报管理系统。springboot基于微信小程序的校园跑腿平台。springboot基于Java的图书购物商城。ssm基于vue的高校宿舍报修系统的设计与实现。ssm微信小程序的外卖点餐系统的设计与实现。jsp信阳学院学生体能达标系统的设计与实现。

【问题】Could not autowire. No beans of … type found-程序员宅基地

文章浏览阅读96次。怎么处理?除了把他隐藏 还有啥方法?转载于:https://www.cnblogs.com/CESC4/p/7358995.html_can not autowire no beans of decoder

Python3 迭代器与生成器_python3迭代器-程序员宅基地

文章浏览阅读153次。迭代是Python最强大的功能之一,是访问集合元素的一种方式。_python3迭代器