前言;下面将从下面几个方面来介绍u-boot :目录
一:什么是u-boot、u-boot的工作模式和uboot的功能介绍
二;u-boot的编译体验
三;u-boot的基本命令
四;u-boot的代码目录结构
五:u-boot工作流程
一:什么是u-boot、u-boot的工作模式和简单介绍
从软件角度来看,一个嵌入式系统可以分为四个层次:
(1):引导加载程序:包括固件(firmware)中的boot程序(可选)和bootloader两大部分,相当于PC机中的bios和GRUB或LILO。引导程序的主要任务是将内核从硬盘上读到内存中,然后跳转到内核的入口地址处去执行,即启动操作系统,然后u-boot就是bootloader中的一种。
(2):Linux内核:特定于嵌入式平台的定制内核。
(3):文件系统:包括了系统命令和应用程序。
(4):用户应用程序:特定于用户的应用程序。
下面就是固态储存设备的空间分配结构图:
如图所示:lootloader是位于整个flash中的最前端部分,接着是boot的参数配置,然后就是内核部分,节奏就是跟文件系统;
u-boot的工作模式有:启动加载模式和下载模式;
u-boot支持多种嵌入式操作系统,如Linux、NETBSD、Vxwork、QNX、RTEMS、ARTOS、Lynx0S.
支持多个处理器系列,如PowerPC 、ARM、x86、MIPS、Xscale
丰富的设备驱动源代码,如串口。以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等。
U-boot的主要功能:
作为一个较复杂的bootloader来说,其实u-boot的功能已经称得上一个小的微内核。如果配上一些后续的进程(或线程管理),加上一些具体设备的驱动,就能基本实现一个小的嵌入式操作系统。其只要功能如下:
(1):系统引导功能:
支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;
(2):基本辅助功能:
强大的操作系统接口功能,可灵活设置和传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,
尤其对Linux的支持最为强劲;支持目标板环境参数多种存储方式,如flash .NVflash、EEPROM。
(3):CRC32校验:
可校验FLASH中的内核、RAMDISK镜像文件是否完好。
(4):设备驱动:
串口、SDRAM、FLASH、以太网、LCD、NVRAM、键盘、USB、PCMCIA、PCI、RTC等的支持。
(5):上电自检功能:
SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号。
(6):特殊功能:XIP内核引导
二、u-boot的编译体验:
注意本实验平台:交叉工具链是:arm-linux-gcc-3.4.5版本的。u-boot是U-boot-1.1.6版本的。
编译步骤:
(一):解压u-boot大源码包 Tar xjf u-boot-1.1.6......
(二):打补丁; patch -p1 < .. /u-boot-1.1.6_jz2440.patch
(三):配置: 配置成适合自己的单板 make 100ask24x0_config
(四):编译 : make
编译结果是:生成一个194KB的u-boot.bin,即可移植到flash上去运行。
三;u-boot的基本命令
(1):寻求帮助命令;help(?:help的别名) (h:查询一个命令的缩写)
(2):环境变量相关指令: printenv 、setenv 注意:环境变量时指操作系统中用来指定操作系统运行环境的一些参数。
(3):文件下载相关命令: tftp ,串口下载相关命令:loadb
(4):内存操作相关命令:显示内存值md[.b、.w、.i] 修改内存:mm[.b、.w、.i]
(5):Flash相关命令:flinfo 、 protect off/on all、erase 、cp。
(6):执行程序相关命令:go 、bootm、run
(7):其他命令;bdinfo、bootcmd
四:u-boot的代码目录结构:
1、board中存放于开发板相关的配置文件,每一个开发板都以子文件夹的形式出现。
2、Commom文件夹实现u-boot行下支持的命令,每一个命令对应一个文件。
3、cpu中存放特定cpu架构相关的目录,每一款cpu架构都对应了一个子目录。
4、Doc是文档目录,有u-boot非常完善的文档。
5、Drivers中是u-boot支持的各种设备的驱动程序。
6、Fs是支持的文件系统,其中最常用的是JFFS2文件系统。
7、Include文件夹是u-boot使用的头文件,还有各种硬件平台支持的汇编文件,系统配置文件和文件系统支持的文件。
8、Net是与网络协议相关的代码,bootp协议、TFTP协议、NFS文件系统得实现。
9、Tooles是生成U-boot的工具。
10、disk硬件接口程序
11、dtt数字温度测量器或者温度传感器的驱动
12、lib_generic通用库函数的实现
13、lib_ppc存放对PowerPC体系结构通用的文件
14、存放对ARM体系结构通用的文件
总结:这些目录中所要存放的文件有着一定规则,基本上可以分为3类:
(1):与处理器体系结构或者开发板硬件直接相关
(2):一些通用的函数或者驱动
(3):U-boot的应用程序、工具或者文档
五:u-boot工作流程