Bootloader启动流程分析
来源:互联网 发布:网络黑客面具的来源史 编辑:程序博客网 时间:2024/04/30 03:20
Bootloader的启动流程一般分为两个阶段:stage1和stage2,下面分别对这两个阶段进行讲解:
1.stage1
(1)完成基本的硬件初始化。初始化的工作主要包括屏蔽所有的中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED、关闭CPU内部指令和数据cache等。
(2)为加载stage2准备RAM空间。为了更快执行速度,通常把stage2加载到RAM空间中来执行,因此必须为加载Bootloader的stage2准备一段可用的RAM空间范围。
(3)拷贝stage2到RAM中。确定stage2的可执行映像在固态存储设备的存放起始地址和终止地址以及RAM空间的起始地址。
(4)设置堆栈指针sp。这是为执行stage2的C语言代码做好准备。
2.stage2
(1)用汇编语言跳转到main入口函数
(2)为了实现更复杂的功能和取得更好的代码可读性和可移植性,stage2的代码通常用C语言来实现。在编译和链接bootloader时,不能使用glibc库中的任何支持函数。
(3)初始化串口、初始化计时器等硬件设备。在初始化这些设备之前、可以输出一些打印信息。
(4)检测系统的内存映射,所谓内存映射就是指在整个4GB物理地址空间中有指出哪些地址范围被分配用来寻址系统的RAM单元。
(5)加载内核映像和根文件系统映像,这里包括规划内存占用的布局和从Flash上拷贝数据。
(6)设置内核的启动参数。
U-Boot的目录及存放原则
board
和一些已有开发板有关的文件,比如Makefile和U-Boot.lds等都和具体开发板的硬件和地址分配有关。
common
与体系结构无关的文件,实现各种命令的C文件
cpu
CPU相关的文件,其中的子目录都是以U-Boot所支持的CPU为名,比如有子目录arm926ejs、mips、mpc8260和nios等,每个特定的子目录都包括cpu.c和interrupt.c,start.S。其中cpu.c初始化CPU、设置指令Cache和数据Cache等;interrupt.c设置系统的各种中断和异常,比如开关中断、时钟中断、软件中断、预取中止和未定义指令等;start.S是U-Boot启动时执行的第一个文件,它主要设置系统堆栈和工作方式,为i进入C程序奠定基础。
disk
disk驱动的分区处理代码
doc
文档
drivers
通用设备驱动程序,比如各种网卡,支持CFI的Flash,串口和USB总线等
fs
支持文件系统的文件,U-Boot现在支持cramfs、fat、fdos、jffs2和registerfs
include
头文件、对各种硬件平台支持的汇编文件、系统的配置文件和对文件系统支持的文件
net
与网络有关的代码,如BOOTP协议,TFTP协议、RARP协议和NFS文件系统的实现
lib_arm
与ARM体系结构相关的代码
tools
创建S-Record格式文件和U-Boot images的工具
- Bootloader启动流程分析
- bootloader启动流程分析
- bootloader的启动流程分析
- S3C2440 BootLoader启动流程分析
- S3C2440 BootLoader启动流程分析--startup
- S3C2440 BootLoader启动流程分析--startup
- S3C2440 BootLoader启动流程分析--startup
- AM3517开发板bootloader启动流程分析
- [转载] linux启动流程分析(1)---bootloader启动内核过程
- linux启动流程分析(1)---bootloader启动内核过程
- Bootloader启动流程
- Bootloader的启动流程
- bootloader简单启动流程
- 基于ARM的嵌入式系统Bootloader启动流程分析(S3C44B0X)
- 基于ARM的嵌入式系统Bootloader启动流程分析----- 转!!
- 基于ARM的嵌入式系统Bootloader启动流程分析
- BootLoader启动过程分析
- BootLoader启动过程分析
- 无用的,ring0暴力枚举进程模块
- 第一次走到这里
- 学习js感悟-js是什么
- loadrunner 获取http head参数方法
- 手机验证网站
- Bootloader启动流程分析
- 怎样申请 Google Map apiKey
- 多核发dpc安全inline hook
- PL/SQL -->隐式游标(SQL%FOUND)
- Ansi、Unicode、UTF8字符串之间的转换和写入文本文件
- 关于博客
- 在CentOS 5.5上安装 Tomcat5.5 及JRE
- AVR通讯--同步异步区别
- myGUi的内存泄漏