- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
U-boot解析
u-boot 源码解析
u-boot 介绍
Uboot 是德国 DENX 小组的开发用于多种嵌入式 CPU 的bootloader 程序, UBoot 不仅仅支持
嵌入式Linux 系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS
嵌入式操作系统。UBoot 除了支持 PowerPC 系列的处理器外,还能支持 MIPS 、 x86 、ARM 、
NIOS 、XScale 等诸多常用系列的处理器。
board :和一些已有开发板有关的文件。每一个开发板都以一个子目录出现在当前目录中,
子目录中存放与开发板相关的配置文件。它的每个子文件夹里都有如下文件:
makefile
config.mk
smdk2410.c 和板子相关的代码( 以smdk2410 为例)
flash.c Flash 操作代码
memsetup.s 初始化 SDRAM 代码
u-boot.lds 对应的连接文件
common :实现uboot 命令行下支持的命令,每一条命令都对应一个文件。例如 bootm 命令
对应就是 cmd_bootm.c 。
cpu :与特定CPU 架构相关目录,每一款 Uboot 下支持的 CPU 在该目录下对应一个子目录,
比如有子目录arm920t 等。cpu/ 它的每个子文件夹里都有如下文件:
makefile
config.mk
cpu.c 和处理器相关的代码
interrupts.c 中断处理代码
serial.c 串口初始化代码
start.s 全局开始启动代码
disk :对磁盘的支持。
doc :文档目录。Uboot 有非常完善的文档,推荐大家参考阅读。
drivers :Uboot 支持的设备驱动程序都放在该目录,比如各种网卡、支持 CFI 的Flash 、串口
和 USB 等。
fs: 支持的文件系统,Uboot 现在支持 cramfs、fat、fdos、jffs2 和 registerfs 。
include :Uboot 使用的头文件,还有对各种硬件平台支持的汇编文件,系统的配置文件和对
文件系统支持的文件。该目录下 configs 目录有与开发板相关的配置头文件,如smdk2410.h 。
该目录下的 asm 目录有与CPU 体系结构相关的头文件,asm 对应的是 asmarm. 。
lib_xxxx: 与体系结构相关的库文件。如与 ARM 相关的库放在 lib_arm 中。
net :与网络协议栈相关的代码,BOOTP 协议、TFTP 协议、RARP 协议和 NFS 文件系统的
实现。
tools :生成Uboot 的工具,如:mkimage, crc 等等。
uboot 的启动过程及工作原理
启动模式介绍
大多数 Boot Loader 都包含两种不同的操作模式:启动加载模式和下载模式,这种区别
仅对于开发人员才有意义。但从最终用户的角度看,Boot Loader 的作用就是用来加载操作
系统,而并不存在所谓的启动加载模式与下载工作模式的区别。
启动加载(Boot loading )模式:这种模式也称为 自主 (Autonomous )模式。也即 Boot Loader
从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户
的介入。这种模式是 BootLoader 的正常工作模式,因此在嵌入式产品发布的时侯,Boot
Loader 显然必须工作在这种模式下。
下载(Downloading )模式:在这种模式下,目标机上的 Boot Loader 将通过串口连接或网
络连接等通信手段从主机(Host )下载文件,比如:下载内核映像和根文件系统映像等。从
主机下载的文件通常首先被 BootLoader 保存到目标机的 RAM 中,然后再被 BootLoader
写到目标机上的 FLASH 类固态存储设备中。BootLoader 的这种模式通常在第一次安装内
核与根文件系统时被使用;此外,以后的系统更新也会使用 BootLoader 的这种工作模式。
工作于这种模式下的 Boot Loader 通常都会向它的终端用户提供一
文档评论(0)