2017.01 U-Boot启动流程源码详解:关键步骤与初始化
需积分: 49 97 浏览量
更新于2024-09-05
收藏 16KB TXT 举报
本文档深入分析了U-Boot 2017.01版本的启动过程源码,主要关注Sunxi架构下的ARMv7处理器,如AM33XX平台。整个启动流程可以大致分为以下几个阶段:
1. **SPL阶段(Second Stage Loader)**: SPL是U-Boot的早期引导部分,首先在`u-boot-spl.lds`链接文件中,它链接了`vectors.S`和`start.S`,这是关键的初始化代码。`save_boot_params`函数保存系统启动参数,接着设置系统服务模式并关闭非安全中断(FIQ和IRQ)。`cpu_init_cp15`负责禁用MMU和缓存,以保护系统在初始状态下不受干扰。
2. **CPU初始化**:
- `cpu_init_crit`函数进一步执行低级别初始化,通过`lowlevel_init.S`设置堆栈空间。
- `s_init`函数在`arch/arm/mach-ompa2/am33xx/board.c`中完成,涉及RTC(实时时钟)初始化以及特定于`AM33XX`板子的初始化。
3. **CRT0初始化**:
- `_main`函数在`arch/arm/lib/crt0.S`中执行,这里包括更高级别的初始化。
- `board_init_f`是AM33XX板子的初始化函数,负责设置硬件状态,如禁止看门狗、配置串口等。
- `early_system_init`函数执行一系列早期系统设置,比如禁用看门狗、设置串口配置、初始化时钟等,这些操作在`board/ti/am335x/board.c`和`arch/arm/mach-ompa2/am33xx/clock.c`中完成。
4. **特定平台定制**:
- `uart_soft_reset`函数对串口进行软件重置,确保通信初始化正确。
这个文档对于理解U-Boot启动流程、学习ARMv7架构下嵌入式系统的设计和调试非常有帮助,特别是对于嵌入式开发人员或研究者来说,它提供了深入了解底层硬件和操作系统交互的重要线索。阅读和研究这部分代码有助于优化启动性能,诊断硬件问题,或者进行定制化功能的添加。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2019-10-31 上传
2015-09-07 上传
2014-07-15 上传
2021-09-15 上传
2018-12-31 上传
2015-12-15 上传
crystal_266
- 粉丝: 209
- 资源: 46
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率