ARM7启动代码解析——LPC21xx/LPC22xx系列
需积分: 9 49 浏览量
更新于2024-09-11
收藏 386KB PDF 举报
"周立功lpc21xx/lpc22xx系列ARM7启动代码分析"
这篇资源主要讨论了LPC21xx/LPC22xx系列微控制器的启动代码,这对于理解ARM7处理器的启动流程至关重要。作者强调了深入理解启动代码对于提升学习进度和增强开发信心的作用。文章引用了周立功公司的一份启动代码分析,并指出这份分析重点关注了`startup.s`文件,这是启动代码的核心部分。
在ARM7处理器中,启动代码的主要任务包括设置处理器状态、初始化内存映射、配置中断处理以及调用主程序入口`_main`。在`startup.s`文件中,可以看到一些关键的符号定义,如栈大小定义(如SVC、FIQ、IRQ等栈的大小)和处理器模式常量(如USR32Mode、SVC32Mode、SYS32Mode等)。这些定义用于设定处理器在启动时的初始状态和异常处理。
例如,`SVC_STACK_LEGTHEQU0`、`FIQ_STACK_LEGTHEQU0`分别定义了服务调用栈和服务快速中断栈的大小为0,这可能意味着在特定的系统配置下,这些栈并未被使用。而`IRQ_STACK_LEGTHEQU256`则表示中断栈大小为256个字节。`EQU`在这里相当于C语言中的`#define`,用于常量定义。
`IMPORT`指令用于声明外部函数或变量,如`IMPORT _use_no_semihosting_swi`表示在代码中禁止使用半主机模式(Semihosting),这是一种调试工具,通常在正式发布的产品中关闭。`IMPORT FIQ_Exception`和`IMPORT _main`则表明了启动代码依赖于外部的快速中断异常处理函数和主程序入口。
在ARM7处理器的启动过程中,处理器会从ROM中的预设地址开始执行,首先进行必要的初始化工作,比如设置堆栈指针、初始化硬件模块,然后跳转到`_main`函数,开始用户应用程序的执行。这部分代码是嵌入式系统开发的基础,理解和掌握启动代码能够帮助开发者更好地控制系统的启动行为,解决启动阶段可能出现的问题。
点击了解资源详情
2018-09-25 上传
2012-07-28 上传
2013-12-27 上传
2012-06-29 上传
2022-09-24 上传
2010-03-17 上传
和迈
- 粉丝: 0
- 资源: 1
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍