ARM系统启动揭秘:映象文件到运行机理

需积分: 15 2 下载量 11 浏览量 更新于2024-09-08 收藏 2.35MB PDF 举报
ARM初始化程序是嵌入式系统开发中的关键环节,特别是在基于ARM架构的系统中。ARM处理器在启动时,需要执行一段初始化代码,以设置系统的基本环境并准备执行用户应用程序。在这个过程中,理解ARM映像文件的生成、存储以及执行机制至关重要。 首先,我们需要了解**ARM映象文件**。在开发过程中,我们通常会通过编译器生成两种类型的映象文件:`.axf`(已链接的可执行文件)和`.bin`(二进制文件)。`.axf`文件包含了调试信息、重定位信息等,主要用于开发阶段。而`.bin`文件则是纯二进制形式,不包含任何额外信息,适合烧录到目标硬件上。在实际应用中,`.bin`文件通常被烧录到Flash中,因为它更小且更适合存储。 在烧录到**Flash**时,映象文件会被加载到特定的地址,如在S3C4510B芯片中,上电或复位后CPU会从0x00000000地址开始执行。这意味着我们的初始化程序或引导加载器必须放置在这个地址。在本例中,开发板使用的是16M字节的Flash(MX29LV160BTC),其速度为70/90ns,以16位模式工作。 当系统启动时,**加载域**和**运行时域**的概念就显现出来了。加载域指的是程序在被加载到内存(如SDRAM)前在Flash中的状态,而运行时域则指程序在内存中运行时的状态。在启动过程中,通常会有一个小型的引导加载器(Bootloader)将Flash中的映象文件加载到SDRAM中,因为Flash的访问速度相对较慢,不适合执行复杂的计算任务。SDRAM(如HY57V651620BTC-10S)提供更快的读写速度,适合运行程序。在S3C4510B系统中,两片16位SDRAM拼接成32位使用,提供16M字节的内存空间。 在某些情况下,如S3C4510B这样的系统可能会使用**地址重映射(Remap)**。这是为了在执行过程中改变程序的加载地址,通常是将程序从较低的物理地址(如Flash)移动到较高的地址(如SDRAM),以便释放低地址空间用于其他用途,如设备驱动或操作系统内核。 初始化过程中,开发者需要关注的另一个重要环节是**系统配置**,这包括设置中断向量、初始化内存控制器、设置时钟频率、配置外部设备接口等。这些操作通常由引导加载器完成,它可能需要根据不同的外设和系统需求进行定制。 最后,本文提到的`MySComm4510b002.mcp`程序是一个串口通信的示例,它的初始化部分参考了其他程序,实现了地址重映射和串口发送功能。通过这样的例子,初学者可以更好地理解ARM系统的实际运行方式,并从中学习到如何编写自己的初始化代码。 总结,ARM初始化程序涉及了映象文件的理解、加载域与运行时域的概念、地址重映射以及系统配置等多个方面。深入理解这些知识对于开发和调试基于ARM的嵌入式系统至关重要。