周立功ARM启动代码详解——LPC2200开发板

需积分: 33 2 下载量 64 浏览量 更新于2024-10-14 收藏 634KB PDF 举报
"周立功的ARM启动代码分析主要涉及LPC2200开发板,使用ADS1.2编译器和AXD+EASYJTAG调试仿真工具。文章分析了六种不同的工程模板,包括针对UCOSII的操作系统移植。分析的核心是ARM指令模板,文件功能模块划分为Config.h、Target.h、Lpc2294.h、Target.c、Heap.s、IRQ.s、Stack.s(在新模板中可能已移除)和Startup.s(启动引导代码,新模板中也可能移除)。Lpc2294.h文件中定义了芯片寄存器的地址映射和固件函数。" 在深入讨论这些知识点之前,首先理解ARM架构是至关重要的。ARM(Advanced RISC Machines)是一种广泛使用的精简指令集计算机(RISC)架构,适用于嵌入式和移动设备。LPC2200是基于ARM7TDMI内核的微控制器,由NXP(前身为飞利浦半导体)制造。 1. **开发环境**:ADS(ARM Development Studio)1.2是一个集成开发环境,用于编写、编译、链接和调试ARM处理器上的C/C++和汇编代码。AXD是其配套的调试器,EASYJTAG则是硬件接口,用于连接开发板进行调试。 2. **工程模板**:周立功公司提供了多种工程模板,适应不同的编程模式(ARM或Thumb指令集)和操作系统(如UCOSII),简化开发过程。ARM和Thumb指令集是ARM架构的两种指令模式,Thumb指令集更加紧凑,适合内存有限的设备。 3. **文件功能模块**: - `Config.h`:定义了基本数据类型和系统时钟设置,这是配置系统运行环境的关键部分。 - `Target.h`:包含软复位函数和目标板初始化函数,这些是启动过程中必不可少的。 - `Lpc2294.h`:针对LPC2200芯片,定义了寄存器地址映射,这对于直接访问和控制硬件至关重要。固件函数可能是指烧录在ROM中的预设功能,如初始化或故障处理程序。 - `Target.c`:包含异常处理和目标板初始化,这部分代码通常处理系统启动时的异常情况。 - `Heap.s`:负责堆内存的初始化,堆是动态分配内存的区域。 - `IRQ.s`:中断处理代码,用于响应外部事件。 - `Stack.s`(新模板中可能移除):栈空间初始化,栈是存储局部变量和函数调用上下文的地方。 - `Startup.s`(新模板中可能移除):启动引导代码,是系统启动时的第一段执行代码,它负责设置堆栈、初始化内存、调用初始化函数等。 4. **Lpc2294.h的固件函数**:`rm_init_entry()`、`rm_undef_handler()`和`rm_prefetchabort_handler()`等可能是预烧录在芯片中的固件函数地址,这些函数在特定条件下被调用,如系统初始化或遇到未定义的指令或预取异常。 通过分析这些代码和模板,开发者可以了解如何在LPC2200上建立和运行一个基本的ARM系统,包括硬件初始化、异常处理和内存管理。这为更复杂的应用程序和操作系统移植奠定了基础。在实际开发中,理解并定制这些启动代码是确保程序正确运行的关键步骤。