嵌入式linux开发uboot移植(一)——uboot项目简介

2019-07-12 16:32发布

嵌入式linux开发uboot移植(一)——uboot项目简介

一、uboot简介

    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系列的处理器外,还能支持MIPSx86ARMNIOSXScale等诸多常用系列的处理器。U-Boot项目的开发目标支持尽可能多的嵌入式处理器嵌入式操作系统

二、uboot的特性

Uboot的特性:    1、开放源码;    2支持多种嵌入式操作系统内核,如LinuxNetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android    3支持多个处理器系列,如PowerPCARMx86MIPS    4较高的可靠性和稳定性;    5高度灵活的功能设置,适合U-Boot调试、操作系统不同引导要求、产品发布等;    6丰富的设备驱动源码,如串口、以太网SDRAMFLASHLCDNVRAMEEPROMRTC、键盘等;    7较为丰富的开发调试文档与强大的网络技术支持;

三、主要功能

U-Boot支持的主要功能:    1系统引导支持NFS挂载、RAMDISK(压缩或非压缩)形式的根文件系统支持NFS挂载、从FLASH中引导压缩或非压缩系统内核    2基本辅助功能强大的操作系统接口功能;可灵活设置、传递多个关键参数给操作系统,适合系统在不同开发阶段的调试要求与产品发布,尤以Linux支持最为强劲;支持目标板环境参数多种存储方式,如FLASHNVRAMEEPROM    3 CRC32校验可校验FLASH中内核、RAMDISK镜像文件是否完好;    4设备驱动串口、SDRAMFLASH以太网LCDNVRAMEEPROM、键盘、USBPCMCIAPCIRTC等驱动支持;    5上电自检功能SDRAMFLASH大小自动检测;SDRAM故障检测;CPU型号;    6特殊功能XIP内核引导;

四、工作模式

    U-Boot的工作模式有启动加载模式和下载模式。

1、启动加载模式

    启动加载模式是Bootloader的正常工作模式,嵌入式产品发布时,Bootloader必须工作在这种模式下,Bootloader将嵌入式操作系统FLASH中加载到SDRAM中运行,整个过程是自动的。

2、下载模式

        下载模式就是Bootloader通过某些通信手段将内核映像或根文件系统映像等从PC机中下载目标板FLASH中。用户可以利用Bootloader提供的一些命令接口来完成自己想要的操作。开发人员可以使用各种命令,通过串口连接或网络连接等通信手段从主机(Host)下载文件(比如内核映像、文件系统映像),将它们直接放在内存运行或是烧入Flash类固态存储设备中。        板子与主机间传输文件时,可以使用串口的xmodem/ymodem/zmodem协议,还可以使用网络通过tftp、nfs协议来传输,以及USB下载方法    一般来说,嵌入式开发人员采用下载模式进行开发嵌入式系统。通常采用交叉网线将PC目标开发板连接,通过TFTP服务器下载内核,用NFS服务器挂载文件系统。

五、uboot常用命令

1、获取命令命令:help ?    功能:查看当前U-boot版本中支持的所有命令。2、环境变量命令bootdelay执行自动启动(bootcmd中的命令)的等候秒数baudrate串口控制台的波特率netmask以太网的网络掩码ethaddr以太网的MAC地址bootfile默认的下载文件名bootargs传递给Linux内核的启动参数bootcmd自动启动时执行命令serveripTFTP服务器端的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网卡驱动有问题
    BU-boot网络协议延时配置有问题
    C网络参数配置问题,比如IP等,HostTarget都有可能有问题。    如果网络连通,就可以通过tftpNFS挂载开发板    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
5NandFlash操作命令nand info显示可使用的Nand Flashnand device [dev]显示或设定当前使用的Nand Flashnand read  addr off  sizeNand Flash读取命令,从Nand的off偏移地址处读取size字节的数据到SDRAMaddr地址。nand write   addr off  sizeNand Flash烧写命令,将SDRAM的addr地址处的size字节的数据烧写到Nand的off偏移地址。nand write[.yaffs[1]] addr off size烧写yaffs 映像专用的命令,.yaffs1 for 512+16 NANDnand 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控制器,获取设备信息。8SD/MMC操作命令    mmc init [dev] - 初始化MMC子系统
    mmc device [dev] - 查看和设置当前设备
    使用SD/MMC操作命令前必须确保SD/MMC设备连接好,mmc init,以初始化MMC 控制器,获取设备信息。

六、ubootFlash中的分区

    嵌入式系统中一般用Flash作为启动设备,Flash上存储着uboot、环境变量、内核映像和文件系统。uboot一般存放在Flash的起始地址,其所在的扇区位置一般由SoC规定,一般为扇区0或扇区1。uboot后存放环境变量,内核和文件系统的存放位置则可以有规划的自由分配。 Uboot官方下载地址:ftp://ftp.denx.de/pub/u-boot/git://git.denx.de/u-boot.git       http://git.denx.de/u-boot.git

本文出自 “生命不息,奋斗不止” 博客,转载请与作者联系!