`
bigfirebird
  • 浏览: 127546 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

arm elf bin的资料,以及我的一点点的理解(转)

阅读更多
lf:executable and linkable format,bin就是binary,elf是一个可执行文件,但是里面的地址需要进行重定向,在基于arm的嵌入式系统中“可能”没有地址重定位的功能,地址必须是事先定位好了的,因此需要从elf文件中生产一个bin文件,这个bin文件中的地址就是固定的了

,不需要再进行重定位,虽说在bin文件中,对一些地址进行了填0,但是毕竟没有重定位的符号,可能回避elf文件小写,而且肯定比用于调试的elf文件小,在用bootloader将bin文件拷贝到内存后,便从某一个地址开始运行,没有地址重定位的说法了。

那么在用trace32仿真器时,要下载一个elf文件,依我看来,并不是把整个的elf文件放入内存,而是只是将可执行区域载入内存,至于放入何处,还需要做elf的解析吧,将代码放到内存恰当的地方,里面的符号就可以帮助计算放在何处的。下面引用了网上的一篇文章:

ARM的三种调试方法:转自http://tech.e800.com.cn/articles/2010/421/1271830980500_1.html

1 嵌入式软件开发流程

参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:执行文件的固化。

在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,包括自己编写的汇编和C语言源程序,还有 工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行入口的启动程序文件。

对后四种文件的理解很重要,其作用解释如下:

(1) 链接脚本文件:在程序编译时起作用。该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定 位。在SDRAM中调试程序、在FLASH中调试或固化后运行的链接脚本文件应加以区分。(在IDE开发环境中使用扩展名*.ld)

(2)命令脚本文件:在SDRAM中调试程序时起作用。在集成环境与目标连接时、软件调试过程中以及目标板复位后,有时需要集成环境自动完成一些特 定的操作,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等。这些操作可以通过执行一组命令序列来完成,保存一组命令序列的文本文件称为命令脚 本文件(在 IDE开发环境中使用扩展名*.cs)。

(3)存储区映像文件:在SDRAM中调试程序时起作用。在软件调试过程中访问非法存储区在部分处理器和目标板上会产生异常,如果异常没有处理,则 会导致软件调试过程无法继续,为了防止以上问题并调整仿真器访问速度以达到最合适的水平,提供这样一种用于描述各个存储区性质的文件叫存储区映像文件(在 IDE开发环境中使用扩展名*.map)。

在程序的调试过程中可以选择使用存储区映像文件*.map和命令脚本文件*. cs配合程序的调试。

(4) 启动文件:它主要是完成一些和硬件相关的初始化的工作,为应用程序做准备。一般,启动代码的第一步是设置中断和异常向量;第二步是完成系统启动所必须的寄 存器配置;第三步设置看门狗及用户设计的部分外围电路;第四步是配置系统所使用的存储区分配地址空间; 第五步是变量初始化;第六步是为处理器的每个工作模式设置栈指针;最后一步是进入高级语言入口函数(Main函数)。

2 中断程序设计

中断调试方面可以采用类似矢量中断动态处理方式,让中断对应的确定地址代码调转到RAM的固定地址处,定义一个函数指针指向该固定地址,就可以随时 通过替换RAM固定地址处的代码,实现动态改变中断处理函数。

具体方法是:

(1)将中断源函数指针定义在RAM中相对的固定地址,建立中断矢量表;

void SetInterrupt (U32 vector, void (*handler)())

{

InterruptHandlers[vector] = handler;

}

void SetInterrupt (U32 vector, void (*handler)())

{

InterruptHandlers[vector] = handler;

}

(2)在程序中,调用具体某中断源的中断处理函数;

如: SetInterrupt(IIC_INT,IICWriteIsr);

/* 声明IIC中断处理函数,其中IIC_INT为 IIC中断源序号,IICWriteIsr为 IIC的写中断处理函数 */
(3) 在0x18处的IRQ或0x1C处的FIQ中断入口函数中,获取中断源、清除中断挂起标志、通过已定义的中断源函数指针进入用户具体某中断处理程序。

void ISR_IrqHandler(void)

{

IntOffSet = (unsigned int)INTOFFSET;

Clear_PendingBit(IntOffSet>>2) ;

(*InterruptHandlers[IntOffSet>>2])();

// 调用具体某中断处理程序

}

void ISR_IrqHandler(void)

{

IntOffSet = (unsigned int)INTOFFSET;

Clear_PendingBit(IntOffSet>>2) ;

(*InterruptHandlers[IntOffSet>>2])();

// 调用具体某中断处理程序

}

采用动态的中断处理方法,在中断源较多的情况下,中断响应时间和程序性能得到优化。另外,在调试方面,此处理方法具有便于跟踪调试的优点,并且根据 需要,可以方便变换中断处理函数。

3 中断调试

软件调试可以在SDRAM中或FLASH中进行。在SDRAM中,读写方便,访问速度快。一般软件调试应在RAM中完成,但当RAM空间小于 FLASH程序空间,程序只能在FLASH运行和调试时,或者用户希望了解程序在FLASH中实际运行情况时,就可以在FLASH中进行程序调试。

进行中断调试时,应注意中断入口位于SDRAM中或FLASH中0x18或0x1c地址,链接脚本文件必须使整个系统的代码正确定位于0x0起始 处,但SDRAM或FLASH对应的链接脚本文件及工程配置注意区别。

(1)程序在SDRAM中运行

在SDRAM中调试,使用SDRAM对应的链接脚本文件。调试过程需要以下几步:编译、链接工程;连接仿真器和电路板;下载程序(在IDE开发环境 中使用扩展名*.elf);调试。

下载程序前必须启动命令脚本文件完成前述的一些特定的操作,命令脚本文件的启动在连接仿真器时自动进行,其中存储区映射应与程序在SDRAM中运行 时相同,保证整个系统的代码正确定位于0x0起始处。下载程序的起始地址也为0x0,下载成功后便可进行调试工作。

(2)程序在FLASH中运行

在FLASH中调试,使用FLASH对应的链接脚本文件。调试过程需要以下几步:编译、链接工程;连接仿真器和电路板;程序格式转换(*.elf转 换为*.bin);固化*.bin程序;调试。

连接仿真器后不需要下载程序,存储区映射由本身工程中启动文件运行完成,不需要命令脚本文件。在本环境调试过程中,可以设置两个硬件断点。
分享到:
评论

相关推荐

    elf转换bin的工具

    总的来说,ELF到BIN的转换涉及文件格式的理解、内存布局的掌握以及对目标平台的了解。在Windows环境下,像`DolTool.exe`这样的工具简化了这一过程,使得开发者能够轻松地在不同环境之间迁移代码。同时,源代码的提供...

    elf转换为bin脚本工具

    本资源提供的是一款基于Windows系统的脚本工具,名为"elf2bin.bat",它的主要功能是将ELF文件转换成BIN文件。这个脚本工具简化了转换过程,用户无需记住并手动输入复杂的命令行选项,只需运行脚本并提供输入的ELF...

    ARM ELF 文件说明

    在信息技术领域,ARM ELF文件是ARM架构处理器上使用的一种二进制文件格式,它继承了通用的Executable and Linking Format(ELF)标准,并添加了ARM特定的特性。ELF格式广泛应用于Unix系统中,用于存储可执行文件、...

    ARM ELF 文件格式英文版

    通过对ELF文件格式的理解,开发者可以更好地控制程序的链接过程,优化程序性能,以及利用各种工具进行调试和分析。对于那些希望深入了解或参与ARM架构下LINKER程序开发的专业人士来说,熟悉ARM ELF文件格式是非常...

    arm-elf-tools-20040427.rar_arm elf _arm-elf_arm-elf-tools linux_

    标题中的“arm-elf-tools-20040427.rar”是一个针对ARM架构的交叉编译工具链,发布于2004年4月27日。这个工具链是专门为开发基于ARM处理器的嵌入式系统设计的,允许开发者在非ARM平台(如Linux)上构建适用于ARM硬件...

    arm elf文件格式简单分析

    ARM ELF文件格式是ARM架构下程序和库的标准化表示形式,通过对ELF文件结构的深入理解,可以更好地解析和处理基于ARM的二进制文件,对于编译器优化、链接器操作、运行时加载和调试都具有重要意义。

    ARM_ELF_File_Format.rar_arm elf _arm elf format_elf

    **ARM ELF 文件格式详解** ARM(Advanced RISC Machines)处理器架构是嵌入式系统和...通过阅读"A4 ARM ELF File Format.pdf"这样的文档,开发者可以更深入地理解这一格式的细节,从而更高效地进行ARM平台的软件开发。

    elf2bin.zip

    描述中的"将.elf文件格式转成.bin文件格式的"进一步确认了这个工具的功能。ELF到BIN的转换通常涉及到提取ELF文件中可执行部分的纯二进制数据,并将其保存为无头的BIN文件。这个过程中可能包括对ELF文件的重定位信息...

    armbin2elf:用于32位ARM的bin2elf转换器工具

    armbin2elf:用于32位ARM的bin2elf转换器工具 在找不到现有解决方案后,我沮丧地编写了此工具。 在线上有各种各样的“ bin2elf”脚本,其中包含调用objcopy和ld的魔术序列,但我发现它们完全不够用。 是的,从技术...

    ARM Linux ELF文件分析(全部9份资料)

    通过深入学习和分析这些资料,开发者能更好地理解ELF文件的工作原理,从而提高在ARM Linux环境下的软件开发效率和质量。这些知识对于编写高效的嵌入式程序,理解和解决运行时问题,以及进行系统级调试都是非常宝贵的...

    Elf文件转BIN文件工具

    把Elf文件转换成BIN文件的工具。ielftool.exe

    setup-arm-elf-tools-20040427.rar_arm elf _arm-elf-tools_arm_elf_

    总的来说,“setup-arm-elf-tools-20040427.rar”提供的资源是嵌入式开发者学习和实践ARM-LINUX交叉编译环境配置的重要参考资料。通过遵循提供的指南,开发者可以更顺利地在自己的开发环境中建立对ARM设备的支持,...

    arm-elf-tools-20030314.rar_ELF Tool_arm_arm-elf-tools_arm-elf-to

    《ARM嵌入式系统编译工具链:深入理解ELF工具》 在嵌入式系统开发领域,ARM架构因其高效能、低功耗的特点而被广泛应用。为了将源代码转化为能在ARM处理器上运行的二进制程序,我们需要一套特定的编译工具链,这就是...

    arm-elf-tools

    ARM-Elf-Tools帮助开发者将软件从一个平台移植到另一个平台,例如从x86移植到ARM,这涉及调整编译选项、解决依赖问题以及可能的代码修改。 11. **实时操作系统(RTOS)**: 在嵌入式系统中,经常使用RTOS如...

    解析ELF文件到BIN格式!

    10.1啦,庆祝祖国60华诞,...这是由ELF文件,解码出BIN数据的源码, 附有演示工程,及相关的ELF文件。 生成BIN格式可以根据自己需要修改, 解都解出来了,要生成什么格式的自己就随便了。呵呵。 sck007 2009.09.29

    arm-linux-gcc和arm-elf-gcc 区别

    "arm-linux-gcc和arm-elf-gcc 的区别" arm-linux-gcc 和 arm-elf-gcc 是嵌入式交叉编译工具链中最常用的两个 GCC 工具链,它们之间的主要区别在于使用不同的 C 库文件。arm-linux-gcc 使用 GNU 的 Glibc,而 arm-...

    AT91RM9200开发笔记(6):ELF文件生成bin文件的处理方法

    在本开发笔记中,我们将聚焦于一个关键步骤:将ELF文件转换为bin文件。这个过程对于将编译好的程序烧录到目标硬件设备上是必不可少的,因为bin文件是处理器能够直接理解和执行的格式。 首先,了解ELF(Executable ...

    ARM-ELF-Specification

    通过以上内容可以看出,《ARM-ELF-Specification》是一份详尽的技术文档,旨在定义和说明在 ARM 架构上实现 ELF 格式所需的特定规则和技术细节。这对于 ARM 平台上的软件开发、编译器设计、链接器开发以及操作系统...

    ARM平台下ELF文件反汇编.pdf

    ARM平台下的反汇编是代码插桩过程的前提,首先需要对于所提供的二进制代码进行必要的分析,了解 ELF 文件的结构以及 ARM 平台的指令编码,将二进制 01 码翻译成为用户可读的汇编代码。通过对于汇编代码的分析,用户...

    arm-elf-tools-20040427.rar

    标题“arm-elf-tools-20040427.rar”表明这是一款与ARM架构相关的ELF(Executable and Linkable Format)工具集,日期为2004年4月27日。ELF是Unix系统家族和其他类Unix操作系统如Linux广泛使用的可执行文件、共享库...

Global site tag (gtag.js) - Google Analytics