U-Boot,全称 Universal Boot Loader,是遵循GPL条款的从FADSROM、8xxROM、PPCBOOT逐步发展演化而来的开放源码项目。
在操作系统方面,U-Boot不仅支持嵌入式Linux系统的引导,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系统。目前支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。
在CPU架构方面,U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、 x86、ARM、NIOS、XScale等诸多常用系列的处理器。
U-Boot项目的开发目标是支持尽可能多的嵌入式处理器和嵌入式操作系统。
Uboot的特性:
1、开放源码;
2、支持多种嵌入式操作系统内核,如Linux、NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android;
3、支持多个处理器系列,如PowerPC、ARM、x86、MIPS;
4、较高的可靠性和稳定性;
5、高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;
6、丰富的设备驱动源码,如串口、以太网、SDRAM、FLASH、LCD、NVRAM、EEPROM、RTC、键盘等;
7、较为丰富的开发调试文档与强大的网络技术支持;
U-Boot支持的主要功能:
1、系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统;支持NFS挂载、从FLASH中引导压缩或非压缩系统内核;
2、基本辅助功能强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤以Linux支持最为强劲;支持目标板环境参数多种存储方式,如FLASH、NVRAM、EEPROM;
3、 CRC32校验可校验FLASH中内核、RAMDISK镜像文件是否完好;
4、设备驱动串口、SDRAM、FLASH、以太网、LCD、NVRAM、EEPROM、键盘、USB、PCMCIA、PCI、RTC等驱动支持;
5、上电自检功能SDRAM、FLASH大小自动检测;SDRAM故障检测;CPU型号;
6、特殊功能XIP内核引导;
U-Boot的工作模式有启动加载模式和下载模式。
启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统从FLASH中加载到SDRAM中运行,整个过程是自动的。
下载模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载到目标板的FLASH中。用户可以利用Bootloader提供的一些命令接口来完成自己想要的操作。开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机(Host)下载文件(比如内核映像、文件系统映像),将它们直接放在内存运行或是烧入Flash类固态存储设备中。
板子与主机间传输文件时,可以使用串口的xmodem/ymodem/zmodem协议,还可以使用网络通过tftp、nfs协议来传输,以及USB下载等方法。
一般来说,嵌入式开发人员采用下载模式进行开发嵌入式系统。通常采用交叉网线将PC与目标开发板连接,通过TFTP服务器下载内核,用NFS服务器挂载文件系统。
1、获取命令
命令:help 或 ?
功能:查看当前U-boot版本中支持的所有命令。
2、环境变量命令
bootdelay  | 执行自动启动(bootcmd中的命令)的等候秒数  | 
baudrate  | 串口控制台的波特率  | 
netmask  | 以太网的网络掩码  | 
ethaddr  | 以太网的MAC地址  | 
bootfile  | 默认的下载文件名  | 
bootargs  | 传递给Linux内核的启动参数  | 
bootcmd  | 自动启动时执行命令  | 
serverip  | TFTP服务器端的IP地址  | 
ipaddr  | 本地的IP地址  | 
stdin  | 标准输入设备,一般是串口  | 
stdout  | 标准输出,一般是串口,也可是LCD(VGA)  | 
stderr  | 标准出错,一般是串口,也可是LCD(VGA)  | 
使用printenv命令可以打印出当前开发板的环境变量。
setenv envname value设置环境变量的值,如果没有value,则表示删除env环境变量
saveenv将修改的环境变量保存到固态存储器中。
bootcmd 自动启动执行命令,uboot开机后会自动倒计时,在倒计时结束前如果没有外部按键打断自动计时,uboot将自动执行bootcmd变量保存的命令。
3、串口传输命令
    loadb   - load binary file over serial line (kermit mode)
    loadx   - load binary file over serial line (xmodem mode)
    loady   - load binary file over serial line (ymodem mode)
4、网络命令
uboot可以通过网络来传输文件到开发板,直接用交叉网线连接开发板和电脑,也可以用普通直连网线连接路由器。
ping hostname
网络不通的原因:
        A、U-boot网卡驱动有问题
    B、U-boot网络协议延时配置有问题
    C、网络参数配置问题,比如IP等,Host和Target都有可能有问题。
如果网络连通,就可以通过tftp、NFS挂载开发板
    nfs     - boot image via network using NFS protocol
    tftpboot- boot image via network using TFTP protocol
    bootp   - boot image via network using BOOTP/TFTP protocol
5、NandFlash操作命令
nand info  | 显示可使用的Nand Flash  | 
nand device [dev]  | 显示或设定当前使用的Nand Flash  | 
nand read addr off size  | Nand Flash读取命令,从Nand的off偏移地址处读取size字节的数据到SDRAM的addr地址。  | 
nand write addr off size  | Nand Flash烧写命令,将SDRAM的addr地址处的size字节的数据烧写到Nand的off偏移地址。  | 
nand write[.yaffs[1]] addr off size  | 烧写yaffs 映像专用的命令,.yaffs1 for 512+16 NAND  | 
nand erase [clean] [off size]  | Nand Flash檫除命令,擦除Nand Flash的 off 偏移地址处的size 字节的数据  | 
nand bad  | 显示Nand Flash的坏块  | 
nand dump[.oob] off  | 显示Nand Flash中的数据(16进制)  | 
nand scrub  | 彻底擦除整块Nand Flash中的数据,包括OOB。可以擦除软件坏块标志。  | 
nand markbad off  | 标示 Nand的 off 偏移地址处的块为坏块  | 
6、内存、寄存器操作命令
    nm      修改内存值 (指定地址)    
    格式: nm [.b, .w, .l] address
    mm     修改内存值(地址自动加一)
    格式:  mm [.b, .w, .l] address 
    md       显示内存值
    格式:  md [.b, .w, .l] address [# of objects] 
    mw     用指定的数据填充内存
    格式:  mw [.b, .w, .l] address value [count]
    cp      内存的拷贝(包括内存与Nor Flash间的数据拷贝)
    格式:cp [.b, .w, .l] source target count
7、USB操作命令
usb reset  | 初始化USB控制器  | 
usb stop [f]  | 关闭USB控制器  | 
usb tree  | 已连接的USB设备树  | 
usb info [dev]  | 显示USB设备[dev]的信息  | 
usb storage  | 显示已连接的USB存储设备  | 
usb dev [dev]  | 显示和设置当前USB存储设备  | 
usb part [dev]  | 显示USB存储设备[dev]的分区信息  | 
usb read addr blk# cnt  | 读取USB存储设备数据  | 
使用USB操作命令前必须确保USB设备连接好,usb reset,以初始化USB控制器,获取设备信息。
8、SD/MMC操作命令
    mmc init [dev] - 初始化MMC子系统
    mmc device [dev] - 查看和设置当前设备
使用SD/MMC操作命令前必须确保SD/MMC设备连接好,mmc init,以初始化MMC 控制器,获取设备信息。
嵌入式系统中一般用Flash作为启动设备,Flash上存储着uboot、环境变量、内核映像和文件系统。uboot一般存放在Flash的起始地址,其所在的扇区位置一般由SoC规定,一般为扇区0或扇区1。uboot后存放环境变量,内核和文件系统的存放位置则可以有规划的自由分配。
Uboot官方下载地址:
git://git.denx.de/u-boot.git
       http://git.denx.de/u-boot.git
本文出自 “生命不息,奋斗不止” 博客,转载请与作者联系!
嵌入式linux开发uboot移植(一)——uboot项目简介
原文:http://9291927.blog.51cto.com/9281927/1791237