周立功ARM启动代码详解——LPC2200开发板
需积分: 33 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系统,包括硬件初始化、异常处理和内存管理。这为更复杂的应用程序和操作系统移植奠定了基础。在实际开发中,理解并定制这些启动代码是确保程序正确运行的关键步骤。
2009-07-14 上传
2010-06-14 上传
2022-07-15 上传
点击了解资源详情
点击了解资源详情
2010-10-23 上传
2012-07-28 上传
2018-09-25 上传
2011-05-15 上传
wangyusong2008
- 粉丝: 0
- 资源: 2
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常