ARM系统执行机理探索:映象文件与地址重映射

需积分: 35 0 下载量 19 浏览量 更新于2024-10-11 收藏 2.34MB PDF 举报
"ARM映象文件及执行机理.pdf——深入解析ARM系统运行机制与映象文件" ARM架构的系统在启动时,首先需要理解的是其映象文件的生成与组成。映象文件主要包括两种类型:AXF(Accelerated Executable and Linkable Format)文件和BIN(Binary)文件。AXF文件是一种链接后的可执行文件格式,它包含了调试信息、符号表等附加信息,用于调试和分析。BIN文件则更为简洁,通常是从AXF文件剥离调试信息后的二进制形式,适用于实际烧录到目标硬件中执行。 在Linux系统中,编译器和链接器如GCC和LD会生成这些文件。当编译源代码时,链接器会根据链接脚本将各种对象文件合并,并处理重定位、符号解析等,最终形成一个完整的映象文件。AXF文件可以使用工具如`objdump`进行反汇编和分析,而BIN文件则可以直接烧录到Flash中。 在ARM系统中,映象文件被下载到Flash后,会经历加载域和运行时域两个阶段。加载域是指程序在被加载到内存中的过程,这个阶段通常由Bootloader完成。Bootloader是一个小型的初始化程序,它的任务是初始化必要的硬件,如内存控制器、时钟、中断控制器等,并将映象文件从Flash读取到SDRAM中。S3C4510B芯片在上电或复位后,会从ROMCON0对应的地址,即0x00000000开始执行代码,这就是为什么Bootloader通常放置在这个地址的原因。 运行时域则是程序实际执行的阶段。在Bootloader将映象文件加载到内存后,通常会跳转到程序的入口点,即C语言的`main()`函数或者汇编语言的指定地址。在这个阶段,程序可以访问已初始化的内存、外设,并执行业务逻辑。 地址重映射(Remap)在某些ARM系统中是必要的,特别是在有多个存储区域或者需要保护某些代码不被修改的情况下。例如,S3C4510B可能需要在运行时改变程序的执行地址,以利用不同的内存区域或者提高性能。地址重映射通过修改系统的映射寄存器来实现,使CPU能够从新的地址空间执行代码。 以文档中提到的MySComm4510b002.mcp程序为例,它可能包含了初始化和地址重映射的代码。这部分代码可能参考了其他开发者的工作,如twentyone和sofa的程序,用于实现串口通信。初始化阶段,程序需要配置好系统时钟、串口波特率等,并进行地址重映射,以便正确地运行后续的代码。 理解ARM映象文件的生成、加载域和运行时域的转换,以及地址重映射机制,是深入学习和开发基于ARM系统的关键。这些知识不仅涉及软件层面,还涉及到硬件交互,是嵌入式系统设计的基础。对于初学者而言,掌握这些概念并实践相关程序,能够帮助他们更好地理解和解决实际开发中遇到的问题。