uboot命令解析

                                                             常用 U-boot命令详解

uboot的命令行模式模式下支持“Tab”键的命令补全和命令的历史记录功能。而且如果你输入的命令的前几个字符和别的命令不重复,那么你就只需要打这几个字符即可,比如我想看这个U-boot的版本号,命令就是“ version”,但是在所有的命令中没有其他任何一个的命令是由“v”开头的,所以只需要输入“v”即可。

    由于U-boot支持的命令实在太多,一个一个细讲不现实,也没有必要。所以下面我挑一些烧写和引导常用命令介绍一下,其他的命令大家就举一反三,或者“help”吧!

1.获取帮助

命令:help 或 ?
功能:查看当前U-boot版本中支持的所有命令。


如果你想获取某条命令的更详细的帮助,可以使用:

help command

? command

   


以fatls为例:

2.环境变量(environmentvariables,简称ENV)与相关指令

和shell类似,U-Boot也有环境变量。一些U-boot默认的环境变量如下:

环 境 变 量

解 释 说 明

bootdelay

执行自动启动(bootcmd)的等候秒数

baudrate

串口控制台的波特率

netmask

以太网的网络掩码

ethaddr

以太网的MAC地址

bootfile

默认的下载文件名

bootargs

传递给Linux内核的启动参数

bootcmd

自动启动时执行命令

serverip

TFTP服务器端的IP地址

ipaddr

本地的IP地址

stdin

标准输入设备,一般是串口

stdout

标准输出,一般是串口,也可是LCD(VGA)

stderr

标准出错,一般是串口,也可是LCD(VGA)


要看到你的板上的ENV值可使用printenv命令,例如我的板子:

setenv name value

 

设置单个环境变量:

第1个参数是环境变量的名称。
第2个参数是要设置的值,如果没有第2个参数,表示删除这个环境变量。
       当你设置了ENV,它只保存在内存中,如果你要它保存在存放ENV的固态存储器中,请使用:saveenv。


如果在启动的时候会看到U-boot打印出:“Warning - bad CRC, using default environment”,说明U-boot没有在存放ENV的固态存储器中找到有效的ENV,只好使用你在编译的时候定义的默认ENV。如果U-boot存放ENV的固态存储器的驱动是OK的,那么只要运行 saveenv就可以把默认ENV写入固态存储器,下次启动就不会有这个警告了。

ENV可以放在许多固体存储器中,对于ST273来说Nor Flash、Nand Flash或EEPROM都可以,就看你如何配置了(include/configs下的配置文件)。例如:
 


CONFIG_ENV_OFFSET是在整个存储器中的偏移地址;
CONFIG_ENV_SIZE是指其使用的大小。

NOTE: CONFIG_ENV_OFFSET CONFIG_ENV_SIZE的设置,不要覆盖了其他分区。

3.load  command

功能:以不同的协议从串口获取文件(不依赖网口)。

Usage:

第1个参数是下载到SDRAM的地址,如果不填,就是用默认配置:CONFIG_SYS_LOAD_ADDR
第2个参数是波特率,一般不填,用默认的115200。

在windows下的超级终端可以用这些协议发送文件,但是在ubuntu下基本只能用kermit协议。以下使用超级终端c-kermit来发送一个文件到ST273。

先在开发板上准备好接收文件

调出超级终端的文件发送窗口,输入待发送文件路径和协议,这里选择kermit。

发送文件,发送完毕后,终端显示开发板的接收结果

4.network command

只要你的网卡驱动没问题,那么你就可以通过网络来传输文件到开发板,这可比串口快多了。
       如果网络畅通,就可以使用下面的命令从tftp目录或者nfs目录下载文件到SDRAM了。如果不通,就是用wireshark抓包分析原因,这里就不细说了。
Command:


这几个命令的格式都是:<指令>  [目的SDRAM地址]  [[主机IP:]文件名]
NOTE
1.
要使用dhcprarpboot bootp等功能要路由器或Host的支持。
2.
如果没有输入[目的SDRAM地址],系统就是用编译时定义的CONFIG_SYS_LOAD_ADDR作为目的SDRAM地址
3.
如果tftpbootnfs命令没有定义[主机IP:],则使用ENV中的serverip
4.
其它命令必需定义[主机IP:],否则会使用提供动态IP服务的主机IP作为[主机IP:]

5.Nand Flash command

常用的Nand Flash指令如下:

Example:


    nboot 指令也是一条Nand Flash 读取指令,它是将Nand Flash 的 offset 偏移地址的内核映像读取到SDRAM的loadAddr位置。它会自动读取到内核映像(使用mkimage处理过的)的结束,所以不用给出读取大小。

或者直接使用nboot  [partition],他会将partition分区的数据读到默认的loadAddr(这里是是80000000)

6.内存/寄存器操作指令


上面是查看和修改内存值的指令,可以查看和修改SDRAM和寄存器值。
[.b, .w, .l]代表了查看和修改形式:bit、word、long
Example:

7.USB 操作指令


NOTE:
在所有的命令使用前,必须先插入USB设备,然后使用:usb start或者 usb reset,以初始化USB控制器,获取设备信息。

For example

 

8.FAT文件系统指令


这些指令基本上要和U盘或者SD卡同时使用,主要用于读取这些移动存储器上的FAT32分区。
For example:

9.系统引导指令

boot  和bootd  都是运行ENV”bootcmd”中指定的指令。
bootm 指令是专门用于启动在SDRAM中的用U-boot的mkimage工具处理过的内核映像。

当需要对开发板进行调试,但是又不想烧kernel时,可以尝试以下方式:

(需要host支持)

10.EPROM 读写指令

eeprom  - I2C 接口的EEPROM 读写指令


第一个参数addr 是要写入或读出的数据在SDRAM中的存放地址;
第二个参数off 是在EEPROM中的偏移;
第三个参数cnt 是读写的数据字节数。

11.脚本运行指令


For Example:

12.内核引导

内核的引导步骤如下:
(1)用U-boot的mkimage工具处理内核映像u-Image。
(2)通过网络、串口、U盘、SD卡等方式将处理过的内核映像传输到SDRAM的一定位置(一般使用0x80000000)
(3)然后使用”bootm"等内核引导命令来启动内核。

为什么要用U-boot的mkimage工具处理内核映像zImage?
因为在用bootm命令引导内核的时候,bootm需要读取一个64字节的文件头,来获取这个内核映象所针对的CPU体系结构、OS、加载到内存中的位置、在内存中入口点的位置以及映象名等等信息。这样bootm才能为OS设置好启动环境,并跳入内核映象的入口点。而mkimage就是添加这个文件头的专用工具。具体的实现请看U-boot中bootm的源码和mkimage的源码。

mkimage工具的使用:

参数说明:
-A 指定CPU的体系结构,可用值有:alpha、arm、x86、ia64、mips、mips64、ppc 、s390、sh、sparc 、sparc64、m68k等
-O 指定操作系统类型,可用值有:openbsd、netbsd、freebsd、4_4bsd、linux、svr4、esix、solaris、irix、sco、dell、ncr、lynxos、vxworks、psos、qnx、u-boot、rtems、artos
-T 指定映象类型,可用值有:standalone、kernel、ramdisk、multi、firmware、script、filesystem
-C 指定映象压缩方式,可用值有:
none不压缩(一般使用这个,因为u-Image是已经被bzip2压缩过的自解压内核) 
gzip 用gzip的压缩方式
bzip2 用bzip2的压缩方式
-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载
-e指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)
-n指定映象名
-d 指定制作映象的源文件
以下是制作内核映像的命令示例:
mkimage -n 'u-Image' -A SH -O linux -T kernel -C none -a 0x80000000 -e 0x80000040 -d zImage


具体引导方式包括,tftp引导、USB引导、SD卡引导、NAND FLASH引导不再详述。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值