ARM启动代码详解:异常处理与内存映射

需积分: 3 14 下载量 129 浏览量 更新于2024-08-02 收藏 62KB DOC 举报
ARM启动代码.doc文档详细解析了ARM处理器在启动过程中的关键步骤,特别是针对S64平台。这个文档首先定义了启动代码的作用,它是一段在处理器启动时执行的汇编代码,负责初始化处理器状态、设置堆栈、配置寄存器以及必要的系统设置,这些步骤对处理器架构和系统配置高度依赖。 在S64中,启动代码分为两个主要部分:一是与ARM7TDMI内核相关的代码。这部分涉及配置处理器的异常向量,如复位向量(位于0地址),确保正确处理各种异常,如未定义指令(UNDEFINED)、软件中断(SWI)、预取错误(PREFETCHABORT)和数据访问错误(DATAABORT)。为了实现代码位置无关性,通过B指令实现跳转,即使代码在不同地址也能准确指向异常处理程序。 另一个部分是与外设初始化相关的代码,这部分根据厂商的不同而有所不同,因为厂商可能会添加或集成特定的片上外设。例如,重要的初始化工作可能包括看门狗定时器(WDT)的配置,子系统时钟的初始化,以及可能的内存映射(remap)操作。这部分的描述通常会更加具体,但文档指出这部分内容不作重点介绍。 在硬件层面,S64的启动时,片上Flash起始地址是0x100000,大小为64kB,而片上RAM起始地址是0x200000,大小为16kB。复位后,程序从0地址开始执行,此时Flash映射到0地址,而RAM映射在remap操作后可能改变。Flash具有最低30MHz的单周期访问性能,而RAM则支持最高速度的单周期访问。 文档接下来详细介绍了处理器异常处理机制,特别是异常向量的处理,强调了使用B指令实现的无偏移跳转,确保了代码的灵活性和鲁棒性。理解这些概念对于深入分析和调试ARM启动代码至关重要。 这份文档为读者提供了一个深入理解ARM启动代码特别是S64平台启动流程的基础,帮助开发者掌握关键的初始化步骤和技术细节,以便于高效地进行代码编写和系统优化。