u-boot.lds分析

ec2108 砖头刷机停在 0x81000000 不再刷 ec2108 刷机停在 0x81000000 , fastboot 输出 ##############很多行也不能正常运行下去,可以用这方法刷好,使砖头回复正常使用。 立即下载

u-boot.lds代码如下:

     简要说明该文件作用,该文件是链接脚本文件,在编译uboot时指定uboot可执行镜像文件链接方式,指定个段的装载地址与执行地址

/*

/*指定输出文件格式elf,32位mips指令,大端*/

OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-bigmips")
*/
OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips", "elf32-tradbigmips")
OUTPUT_ARCH(mips)/*指定输出文件的平台体系mips*/
ENTRY(_start)/*可执行镜像文件的起始段名_start,也称之为入口点*/
SECTIONS  /*连接器脚本命令*/

{

/*这个.特殊 符号是位置计数器*/

    . = 0x00000000;/*指定起始地址*/

    . = ALIGN(4);/*4字节对齐*/
    .text       : /*输出代码段*/
    {
      *(.text)/*表示所有的输入代码段*/
    }

    . = ALIGN(4);
    .rodata  : { *(.rodata) }/*只读数据段*/

    . = ALIGN(4);
    .data  : { *(.data) }/*可读写数据段*/

    . = ALIGN(4);
    .sdata  : { *(.sdata) }/*未初始化可读写数据段*/

    _gp = ALIGN(16);

    __got_start = .;
    .got  : { *(.got) }/*指定got段*/
    __got_end = .;

    .sdata  : { *(.sdata) }

    . = .;

    __u_boot_cmd_start = .;   

/*u-boot命令段*/

    .u_boot_cmd : { *(.u_boot_cmd) }

    __u_boot_cmd_end = .;

    uboot_end_data = .;
    num_got_entries = (__got_end - __got_start) >> 2;

    . = ALIGN(4);
    .sbss  : { *(.sbss) }/*未初始化的bss*/
    .bss  : { *(.bss) } /*BSS段*/
    uboot_end = .;

}



当我们编译u-boot时会看到如下内容:


这个-DTEXT_BASE宏指定代码段的起始基地址为0x9fc00000

当u-boot编译成功后我们可以在u-boot.map


我们看到_start的起始地址就是虚地址0x9fc00000

当设备断电重启首先执行的就是_start在0x9fc00000地址

那么TEXT_BASE在那里指定,我们在config.mk中发现有如下代码:

# ROM version
TEXT_BASE = 0x9fc00000

# RAM version
#TEXT_BASE = 0x80100000

编译时用TEXT_BASE赋给.text,这样就指定了执行代码段的起始基地址。


reeboot用tftp刷机说明.zip load -r -b 0x80060000 k.bin fis create vmlinux load -r -b 0x80060000 r.bin fis create rootfs load fc.bin -b 0x80100000 -r -m tftp -h 192.168.1.5 fis write -b 0x80100000 -l 0x10000 -f 0xbfff0000 立即下载

相关推荐

activemq_CVE-2015-5254_漏洞复现_源码分析

ActiveMQ-CVE-2015-5254

qq_51550750的博客 940

MIPS ld脚本的见解

   Mips的ld脚本会随着Ecos的编译进行。OUTPUT_FORMAT("elf32-bigmips", "elf32-tradbigmips",    "elf32-tradlittlemips")OUTPUT_ARCH(mips:isa32)STARTUP(vectors.o)ENTRY(reset_vector) 启动到reset_vector段执行    

sxx1728的专栏 2134

DSSAT模型实战:从基础配置到气候情景模拟

本文详细介绍了DSSAT模型在农业模拟中的应用,从基础配置到气候情景模拟的全流程实战指南。通过土壤-植物-大气连续体的动态关系建模,DSSAT能精准预测作物产量,误差率低至8%。文章涵盖气象数据处理、土壤参数配置、管理措施调控等核心技巧,并提供了Python脚本和可视化方法,助力农业科研与决策。

weixin_29264201的博客 1013

mips的U-Boot分析及移植

<br />要注意mips具有流水线可见性,所以跟在跳转指令后的下一条指令,在执行跳转到的地方前,都会执行,这个叫分支延迟。但是编译器会隐藏该特性,但可以通过设置”.set noreorder”来禁止编译器重新组织代码顺序。<br />每个板子都有自己的lds文件。这个主要是用来说明编译生成的指令,及运行过程中用到的数据放置的位置。这个可以参考ld的手册。比如board/dbau1×00/u-boot.lds。<br />OUTPUT_FORMAT(“elf32-tradbigmips”, “elf32-t

babyfans的专栏 2864

VMware 安装 Windows11

一、下载win11的镜像文件 可以在MSDN网站下载: MSDN系统库-致力于原版windows生态服务 二、创建虚拟机 1.双击打开VMware虚拟机,点击创建新的虚拟机 2.选择典型(推荐),然后点击下一步 3.在安装程序光盘映像文件下,点击浏览按钮,选择Windows 11ISO镜像文件所在的路径,在Windows 11安装文件路径中不要有中文或其他特殊符号,否则有可能引起错误。然后点击下一步 4.在选择客户机操作系统界...

m0_56015193的博客 7016

【QNX+Android虚拟化方案】129 - USB眼图参数配置

【QNX+Android虚拟化方案】129 - USB眼图参数配置

|~~~热爱生活、努力学习的小伙汁~~~| 821

ld文件

OUTPUT_FORMAT("elf32-tradlittlemips") OUTPUT_ARCH(mips) ENTRY(_start) SECTIONS {   . = 0x80100000;   .text:   {       _ftext = . ;       *(.text)       *(.rodata)       *(.rodata1)

fryingpan的专栏 1553

编译zlib库给IOS平台用

在弹出的下面对话框中选择Unix Makefiles ,然后点击(Done)完成。使用 lipo与otool查看库类型为arm64,现在可在ios平台使用该库了。zlib自带CMakeLists.txt 所以用CMake-GUI来生成。修改为与系统当前安装的cmake版本 (如:3.22.1)选择zlib源码目录及输出目录,输入下图的CMAKE参数。点击Configure,在弹出的对话框中选择Yes。cmake --install . 进行安装。cmake --build . 进行编译。

994

GCC连接器脚本

我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来;其次,这些.o文件存在相互调用的关系;再者,我们最后生成的bin文件是要在硬件中运行的,每一部分放在什么地址都要有仔细的说明。我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验: 首先,要确定我们的程序用没有用到标准的c库,或者一些系统的库文件,这些一般是在操作系统之上开发要注意的问题,这里并不多说,熟悉在Linux编程的人,基本上都会用ld命令;这里

老熊的博客 530

基于深度学习的道路裂缝检测系统完整教程

本文介绍了一种基于深度学习的道路裂缝检测系统完整解决方案。项目采用5466张高质量道路裂缝图像数据集,包含YOLO和Pascal VOC两种标注格式,覆盖多种道路场景。系统利用CNN和YOLO算法实现高效检测,相比传统人工巡检显著提升效率和准确性。文中详细阐述了数据集结构、环境配置和训练流程,包括数据预处理、智能分割策略和质量检查方法。该技术可及时发现道路裂缝隐患,降低维护成本,保障交通安全,为道路养护提供智能化解决方案。

FJN110的博客 297

09 SAP CPI 访问公共API接口

我在网上找了一个公共API,入参输入汉字返回拼音。至此,一个真正的访问API的接口就做好了。点击保存时可看到红叉报错。

SAP CPI 477

U-BOOT学习之u-boot.lds简要分析(带源码)

对于不少新人朋友来说,可能想问,u-boot.lds这个文件是干什么的? 其实,它的作用很简单,那就是:定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。 接下来,我们根据具体的源码进行简要的分析。 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") //指定输出可执行文件是elf格式,32位arm指令,小端储存 OUTPUT_ARCH(arm) //指定输出可执行文件所运行平台为arm

陈子陌的博客 623

大模型的应用与微调:如何调用 LLM?从 OpenAI API 到本地部署

本篇文章介绍了如何调用 OpenAI、DeepSeek、Manus、通义千问等大模型 API,并探讨了 LLM 本地部署的方法。在实际应用中,可以根据需求选择云端 API 或本地化部署方案,以满足不同的计算需求和隐私要求。下一篇:大模型微调与 RAG 技术(LoRA、QLoRA、向量数据库)

晴天彩虹雨的博客 1157

u-boot启动分析01(u-boot.lds,start.S)

1.查找u-boot.lds 2.分析u-boot.lds 3.分析start.S

Charles Zhang 的博客 1110

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

lds链接脚本基础及u-boot.lds链接脚本分析

在 目标文件中的内容至少包括编译后的机器指令代码、数据,还包括了链接时所需要的的一些信息,比如符号表、调试信息、字符串等。目标文件将这些信息按不同的属性以“ 段 ”(segment)的形式存储。以下就是一些常见的段。并且还根据一个简单程序说明编译后的目标文件的结构。主要分析表格中常见的段信息,其实还有其他段例如注释信息段( .comment ),但这不是我们关注的重点。编译过程编译: arm-linux-gcc -c -o led_on.o led_on.S #或led_on.c。

tecoes的博客 277

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

u-boot.lds详细的分析

对u-boot.lds的更详细的分析 Linker Script Format Linker scripts are text files. You write a linker script as a series of commands.Each command is either a keyword, possibly followed by arguments,or

sean 1236

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

uboot启动流程分析1 - u-boot.lds

1. u-boot.lds 链接脚本文件 ENTRY(_start) uboot的程序入口就在这个文件中,ENTRY(_start) _start定义在vectors.S中 上图可知,这代码存储在.vectors段里,_start紧跟着就是中断向量表。 .text 刚开始地址是0,后边重新指向地址了,.text接下来是代码段。 打开uboot内存映射文件,u-boot.map .text的地址设置为0x87800000,.__image_copy_start也是0x87800000,整个镜像的起始

AIoT技术栈的博客 1349

《u-boot.lds分析》

u-boot.lds (~/board/smdk2410/u-boot.lds) /*指定输出可执行文件是elf格式,32位ARM指令,小端*/ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") /*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "e...

abc123451234565的博客 208

U-Boot之四:u-boot.lds分析

转载:http://www.linuxidc.com/Linux/2011-08/41809.htm   u-boot.lds决定了u-boot可执行映像的连接方式,以及各个段的装载地址(装载域)和执行地址(运行域)。 GNU官方网站上对.lds文件形式的完整描述: SECTIONS{ ... secname start BLOCK(align) (NOLOAD) : AT ( l

gcpljz06的专栏 393

U-BOOT之四:u-boot.lds分析

u-boot.lds决定了u-boot可执行映像的连接方式,以及各个段的装载地址(装载域)和执行地址(运行域)。 GNU官方网站上对.lds文件形式的完整描述: SECTIONS{ ... secname start BLOCK(align) (NOLOAD) : A

天道酬勤 1060

u-boot中.lds连接脚本文件的分析

标题:u-boot中.lds连接脚本文件的分析2008-03-14 14:03:31对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。虽然现在我还没怎么用它,但感觉还是挺重要的,有必要了解一下。先看一下GNU官方网站上对.lds文件形式的完整描述:SECTIONS {...secname start BLOCK(align) (NOLOAD) ...

dianchixian5277的博客 112

u-boot中.lds链接脚本文件的分析

作者:冯老师,华清远见嵌入式学院讲师。 对于.lds文件,它定义了整个程序编译之后的连接过程,决定了一个可执行程序的各个段的存储位置。 SECTIONS {         ...         secname start BLOCK(align) (NOLOAD) : AT ( ldadr )         { contents } >region :phdr =fill

逐波与逆流 794

u-boot链接文件u-boot.lds分析

对于u-boot-2010.03版本的smdk2410这个平台的链接文件是/cpu/arm920t/u-boot.lds,下面就来分析下该文件的每一句是什么意思。   //;三个分别指定在缺省、大端、小端情况下的输出可执行文件格式,这里都指定输出格式是elf32,小端和arm体系结构。 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "

519

u-boot的链接脚本文件u-boot.lds分析

u-boot 版本: 2016.03,NXP更改过的版本,正点原子再次更改,详细可参见正点原子的教程。 这里先贴出来链接脚本文件,它是生成过程,可以参考https://blog.csdn.net/xiaoyink/article/details/108508415,里面有简略的提到,这里主要分析此文件的含义,如下: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(

吾生也有涯,而知也无涯 1024
下一篇: uboot启动第一部分
Linux_Spirit
博客等级 码龄12年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值