ARM Bootloader启动详解:前4K加载与NAND/NOR启动差异
4星 · 超过85%的资源 需积分: 10 122 浏览量
更新于2024-09-18
1
收藏 64KB DOC 举报
"本文主要探讨了bootloader的启动过程,特别是前4K加载阶段,以及NAND和NOR闪存的启动区别。Bootloader分为两个阶段,第一阶段负责初始化硬件,复制第二阶段到RAM,设置堆栈并跳转执行。第二阶段则进一步初始化硬件,检测内存映射,加载内核和文件系统。对于只使用NAND Flash没有NOR Flash的系统,bootloader是必要的,因为它允许程序从RAM中运行。"
在嵌入式系统中,bootloader扮演着至关重要的角色,它是系统启动的第一步。当处理器上电或复位后,通常会从预设的地址开始执行代码,这个预设地址通常是ROM或Flash中的前4K代码。这部分代码被称为引导加载器的第一阶段。
在第一阶段,bootloader主要任务包括:
1. 初始化基本硬件:如屏蔽中断,设置CPU速度和时钟频率,初始化RAM控制器,点亮或关闭LED,关闭CPU的指令和数据Cache。
2. 准备第二阶段所需的RAM空间:根据第二阶段代码和堆栈的大小,在RAM中分配足够的空间。
3. 复制第二阶段代码:从存储设备(如NAND或NOR Flash)复制第二阶段代码到RAM中,并确定起始和结束地址。
4. 设置堆栈指针SP:为C语言程序执行做好准备。
5. 跳转执行:转移到第二阶段的入口地址执行。
第二阶段,bootloader会继续更复杂的初始化工作,如初始化串口用于输出信息,检测系统内存映射(可能涉及MMU的配置),加载内核和文件系统到RAM,并为内核设置启动参数,最终调用内核启动操作系统。
如果直接运行像UCOS这样的实时操作系统,而不通过bootloader,UCOS的执行会直接在Flash中开始。但通常,为了提高效率和可靠性,会复制整个UCOS到RAM中执行。在没有NOR Flash的情况下,只有NAND Flash,bootloader仍然是必要的,因为它能将程序从不能直接执行的NAND Flash移动到RAM中。尽管NAND Flash容量较大,适合存储大量数据,但UCOS这样的小型操作系统更适合于NOR Flash或RAM中运行,因为它们的启动速度更快,访问效率更高。在实际产品设计中,考虑到成本和性能平衡,选择适当的启动策略和存储设备至关重要。
2013-07-07 上传
2020-05-20 上传
点击了解资源详情
2020-05-29 上传
2020-05-26 上传
2018-08-16 上传
haokaihaohe110
- 粉丝: 40
- 资源: 105
最新资源
- 构建基于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客户端库介绍