Bootloader移植(上)
Bootloader 介绍
什么是Bootloader
-
Bootloader是硬件启动的引导程序,是运行操作系统的前提;
-
在操作系统内核或用户应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境;
-
在嵌入式系统中,整个系统的启动加载任务通常由Bootloader来完成。
Bootloader的特点
-
Bootloader不属于操作系统,一般采用汇编语言和C语言开发。需要针对特定的硬件平台编写。
-
在移植系统时,首先为开发板移植Bootloader。
-
Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。
Bootloader的操作模式
-
自启动模式:在这种模式下,Bootloader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程并没有用户的介入。
-
交互模式:在这种模式下,目标机上的Bootloader将通过串口或网络等通信手段从开发主机(Host)上下载内核映像和根文件系统映像等到RAM中。可以被 Bootloader写到目标机上的固态存储媒质中,或者直接进行系统的引导。也可以通过串口接收用户的命令。
常用bootloader介绍
U-boot介绍
u-boot(Universal Boot Loader)是德国DENX小组开发的用于多种嵌入式CPU的bootloader程序。遵循GPL条款。
从FADSROM、8xxROM 、PPCBOOT、Armboot逐步发展演化而来;
当前版本号:参考Makefile。
http://www.denx.de/wiki/U-Boot/WebHome
U-boot的特点:
-
代码结构清晰、易于移植(见目录结构)
-
支持多种处理器体系结构(见arch目录)
-
支持众多开发板(目前官方包中有200多种,见board目录)
-
命令丰富、有监控功能
-
支持网络协议、USB、SD等多种协议和设备
-
支持文件系统
-
更新较活跃,使用者多,有助于解决问题
U-boot命令介绍
命令分类:
环境设置、数据传输、存储器访问、加载运行
环境设置命令
printenv 显示所有环境变量
setenv 设置新的环境变量
该变量临时存放在内存中,重启板子之后,该变量会消失。要用saveenv保存一下。