周立功LPC2200开发板启动代码解析

需积分: 33 12 下载量 170 浏览量 更新于2024-12-17 收藏 634KB PDF 举报
“周立功LPC2200开发板启动代码分析,涉及ADS1.2编译环境、AXD+EASYJTAG调试仿真,以及多种工程模板,主要分析ARM指令模板。” 在嵌入式系统开发中,LPC2200系列微控制器是一款常用的ARM7TDMI-S架构的处理器,由NXP(原飞利浦)生产。周立功公司提供的开发板是基于这款芯片的,用于简化开发者的工作。在开发过程中,他们提供了几种不同的工程模板,以适应不同的编程模式和操作系统,如ARM指令模板、Thumb指令模板、UCOSII移植模板等。 开发环境主要包括两个关键组件:ADS1.2(ARM Development Studio)作为编译软件,AXD+EASYJTAG作为调试仿真工具。ADS1.2是ARM公司推出的集成开发环境,支持C/C++和汇编语言的编译、链接以及调试;AXD是其配套的调试器,EASYJTAG则是一个硬件JTAG接口,用于与目标板通信,实现程序下载和在线调试。 在启动代码分析中,文件功能模块的划分是至关重要的。这些模块包括: 1. `Config.h`:定义了基本数据类型和系统时钟设置,这对于理解和配置系统时钟频率、内存分配等至关重要。 2. `Target.h`:包含了软复位函数和目标板初始化函数,这两个函数在系统启动时执行,用于复位系统和设置必要的硬件接口。 3. `Lpc2294.h`:定义了LPC2294微控制器的内部寄存器地址映射,并提供了固件函数的声明。固件函数通常是在芯片出厂时预烧录的一些低级操作或硬件初始化功能。 4. `Target.c`:包含了异常处理程序和目标板初始化程序,开发者可以根据具体需求对这部分代码进行修改。 5. `Heap.s`:负责堆空间的初始化,确保程序运行时可以动态分配内存。 6. `IRQ.s`:处理中断服务,中断处理是实时系统中的关键部分。 7. `Stack.s`:栈空间初始化,确保程序的正常运行。在最新模板中,这个文件可能已被整合到其他地方。 8. `Startup.s`:启动引导代码,这是程序加载和执行的第一步,通常包含设置堆栈指针、初始化全局变量和调用主函数等操作。在最新模板中,这个文件可能已不再单独存在,而是被整合到了其他启动文件中。 9. `Mem_a.scf, Mem_b.scf, Mem_c.scf`:可能涉及到存储器配置文件,用于定义内存分区和属性。 10. `Main.c`:通常包含程序的主入口点,即`main()`函数,是程序执行的起点。 通过这些文件和模块,开发者能够理解LPC2200开发板的启动流程,从设置硬件环境到执行用户代码的每个步骤。对于固件函数的定义,例如`rm_init_entry()`、`rm_undef_handler()`和`rm_prefetchabort_handler()`,它们通常是指向处理器异常处理的地址,当遇到未定义指令、预取中止等异常时,CPU会跳转到这些地址执行相应的处理程序。 理解这些启动代码对于深入学习LPC2200微控制器的底层工作原理和进行有效的嵌入式系统开发是必不可少的。开发者需要掌握如何配置寄存器、处理中断、初始化内存以及设置程序运行环境,这些都是构建高效、稳定系统的基石。