U-boot常用命令

来源:互联网 发布:简单的php网页 编辑:程序博客网 时间:2024/05/01 10:14

其实大部分是转载,但是很多网上高手的不全,对于新手很多他们看似不用解释的命令都没有写,所以。。。。。。。。

=> help base

base

    - print address offset for memory commands

base off

    - set address offset for memory commands to ''''off''''

=>

   你可以使用base命令(简写为ba)来显示或者设置一个“基地址”作为所有存储类命令的地址偏移值。默认的基址是0,所以你输入的所有地址都是实地址。但是,当你重复访问某一特定存储区域(如一些嵌入式PowerPc处理器的内存)时,如果设置此区域的开始地址作为基址,只需使用偏移地址,这将非常简便:

=> base

Base Address: 0x00000000

=> md 0 c

00000000: feffffff 00000000 7cbd2b78 7cdc3378    ........|.+x|.3x

00000010: 3cfb3b78 3b000000 7c0002e4 39000000    <.;x;...|...9...

00000020: 7d1043a6 3d000400 7918c3a6 3d00c000    }.C.=...y...=...

=> base 40000000

Base Address: 0x40000000

=> md 0 c

40000000: 27051956 50504342 6f6f7420 312e312e    ''''..VPPCBoot 1.1.

40000010: 3520284d 61722032 31203230 3032202d    5 (Mar 21 2002 -

40000020: 2031393a 35353a30 34290000 00000000     19:55:04)......

************************************************************************************************************************************************************************************

 bdinfo

arch_number = 0x0000065A

env_t       = 0x00000000

boot_params = 0x50000100

DRAM bank   = 0x00000000

-> start    = 0x50000000

-> size     = 0x10000000

ethaddr     = 00:40:5C:26:0A:5B

ip_addr     = 192.168.1.20

baudrate    = 115200 bps

SMDK6410 # help bdinfo

bdinfo - No help available.

bdinfo命令(简写为bdi)将在终端显示诸如内存地址和大小、时钟频率、MAC地址等信息。这些信息在传递给Linux内核一些参数时会用到。

***********************************************************************************************************************************************************************************

help bootelf

bootelf  [address] - load address of ELF image.l

load内存地址address处的ELF文件

**************************************************************************************************************************************************************************

help bootm

bootm [addr [arg ...]]

    - boot application image stored in memory

    passing arguments 'arg ...'; when booting a Linux kernel,

    'arg' can be the address of an initrd image

bootm命令可以引导启动存储在内存中的程序映像。这些内存包括RAM和可以永久保存的Flash。

第1个参数addr是程序映像的地址,这个程序映像必须转换成U-Boot的格式。

第2个参数对于引导Linux内核有用,通常作为U-Boot格式的RAMDISK映像存储地址;也可以是传递给Linux内核的参数(缺省情况下传递bootargs环境变量给内核)。

*******************************************************************************************************************************************************************************

# help bootp

bootp [loadAddress] [bootfilename]

bootp命令通过bootp请求,要求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。

第1个参数是下载文件存放的内存地址。

第2个参数是要下载的文件名称,这个文件应该在开发主机上准备好。

***********************************************************************************************************************************************************************

help bootvx

bootvx  [address] - load address of vxWorks ELF image.

bootvx命令启动vxworks映像,需要事先设置loadaddr, bootargs参数,vxworks映像可以是elf或bin格式的

¥¥¥¥凭记忆写的 

保证CONFIG_COMMANDS包括CFG_CMD_ELF,重新编译,现在有bootvx命令了 
准备vxworks映像,我喜欢bin格式,xxx-objcopy -O binary vxworks vxworks.bin 
vxworks必须装载到config.h里设定的地址,比如0x100000,如果通过网络下载:tftp 100000 vxworks.bin 
setenv loadaddr 100000 
设置启动参数,比如MPC8xx,setenv bootargs cpm(0, 0) 
bootvx 

如果用elf格式,可以下载到其他位置,u-boot应该会帮你拷贝到0x100000,我没试过。

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

*******************************************************************************************************************************************************************

branch [on, off]

    - enable or disable branch prediction in ARM11

下面的是网上查到的,分支预测技术,我也不太懂,呵呵呵、、、、、

分支预测是我在学习中遇到得最大的迷惑,因为教科书上写的太笼统了。最先看的是Stalling的Performance Design,大概讲了几种分支预测的方法。回忆了一下,写下来:
1)总是预测转移,不管转移实际是否发生,总是预测转移发生,并预取转移目标处的指令。程序的运行统计发现,分支指令发生跳转的概率要不不发生高。由于预取目标处的指令,有可能造成缺页。如果实际上没有转移到目标之处,则造成无畏的开销,所以如果预取的目标可能造成缺页,则不对目标预取。
2)总是预测不转移,不管转移实际是否发生,总是预测转移不发生,预取下一条指令。以上的2中方法不适合那些流水线较长的CPU,因为预测错误所带来的开销很大。
3)目标预取,不管转移是否发生,预取目标处的指令和下一条指令。但是如果预取的指令中同样存在转移指令,则需要再次进行目标预取。
4)延迟转移,这种方法主要是利用指令重排,把一些逻辑上应该出现在branch之前的指令排在branch指令之后,这样转移时就不必清空流水线。
5)使用branch prediction table动态预测,branch prediction table中主要是转移指令的转移历史,根据转移历史来预测下次是否转移。

************************************************************************************************************************************************************************

help cmp

cmp [.b, .w, .l] addr1 addr2 count

    - compare memory

cmp命令可以比较2块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续敲入命令。

第1个参数addr1是第一块内存的起始地址。

第2个参数addr2是第二块内存的起始地址。

第3个参数count是要比较的数目,单位按照字节、字或者长字。

**********************************************************************************************************************************************************************

help cp

cp [.b, .w, .l] source target count

    - copy memory

cp命令可以在内存中复制数据块,包括对Flash的读写操作。

第1个参数source是要复制的数据块起始地址。

第2个参数target是数据块要复制到的地址。这个地址如果在Flash中,那么会直接调用写Flash的函数操作。所以U-Boot写Flash就使用这个命令,当然需要先把对应Flash区域擦干净。

第3个参数count是要复制的数目,根据cp.b cp.w cp.l分别以字节、字、长字为单位。

*********************************************************************************************************************************************************************

help crc32

crc32 address count [addr]

    - compute CRC32 checksum [save at addr]

crc32命令可以计算存储数据的校验和。

第1个参数address是需要校验的数据起始地址。

第2个参数count是要校验的数据字节数。

第3个参数addr用来指定保存结果的地址。

*******************************************************************************************************************************************************************

date reset

  - without arguments: print date & time

  - with numeric argument: set the system date & time

  - with 'reset' argument: reset the RTC

***************************************************************************************************************************************************

help dcache

dcache [on, off]

    - enable or disable data (writethrough) cache

目录项缓存机制,没查到是做什么的,,,,,呵呵呵

********************************************************************************************************************************************************

help dnw

dnw [download address]

DNW软件,是用来做嵌入式开发时用来下载文件镜像的,ARM系列芯片:S3C2440,S3C2410等。

***************************************************************************************************************************************************

echo [args..]

      - echo args to console; c suppresses newline

echo命令回显参数。

******************************************************************************************************************************************

erase

erase start end

      - erase FLASH from addr 'start' to addr 'end'

erase N:SF[-SL]

      - erase sectors SF-SL in FLASH bank # N

erase bank N

      - erase FLASH bank # N

erase all

      - erase all FLASH banks

 

erase命令可以擦Flash。

参数必须指定Flash擦除的范围。

按照起始地址和结束地址,start必须是擦除块的起始地址;end必须是擦除末尾块的结束地址。这种方式最常用。举例说明:擦除0x20000 – 0x3ffff区域命令为erase 20000 3ffff。

按照组和扇区,N表示Flash的组号,SF表示擦除起始扇区号,SL表示擦除结束扇区号。另外,还可以擦除整个组,擦除组号为N的整个Flash组。擦除全部Flash只要给出一个all的参数即可。

***********************************************************************************************************************************************************

flinfo

flinfo

      - print information for all FLASH memory banks

flinfo N

      - print information for FLASH memory bank # N

 

flinfo命令打印全部Flash组的信息,也可以只打印其中某个组。一般嵌入式系统的Flash只有一个组。

*************************************************************************************************************************************************************

go

go addr [arg ...]

      - start application at address 'addr'

        passing 'arg' as arguments

 

go命令可以执行应用程序。

第1个参数是要执行程序的入口地址。

第2个可选参数是传递给程序的参数,可以不用。

**************************************************************************************************************************************************************

icache  - enable or disable instruction cache

开启指令cache

***********************************************************************************************************************************************

help imls

imls

    - Prints information about all images found at sector

      boundaries in flash.

*******************************************************************************************************************************************************

help itest

itest [.b, .w, .l, .s] [*]value1 <op> [*]value2

itest    - return true/false on integer compare

*****************************************************************************************************************************************

loadb   - load binary file over serial line (kermit mode)

loadb命令可以通过串口线下载二进制格式文件。

*********************************************************************************************************************************************

loads   - load S-Record file over serial line

loads命令可以通过串口线下载S-Record格式文件。

****************************************************************************************************************************

loady   - load binary file over serial line (ymodem mode)

*************************************************************************************************************************

help loop
loop [.b, .w, .l] address number_of_objects
    - loop on a set of addresses
=>
    loop命令非常快速地读某个存储范围。因为这个命令力图最快速地读取存储单元,所以被用作一种特殊的存储器测试。
    这个命令永远不会结束。除了重启开发板,没有其它办法可以停止它!
=> loop 100000 8
**************************************************************************************************************************************************

 help md
md [.b, .w, .l] address [# of objects]
    - memory display
=>
    md采用十六进制和ASCII码两种形式来显示存储单元的内容。

***************************************************************************************************************************************************

mm提供了一种互动修改存储器内容的方法。它将会显示地址和当前值,然后提示用户输入。如果你输入了一个合法的十六进制数,这个新的值将会被写入该地址。然后提示下一个地址。如果你没有输入任何值,只是按了一下回车,那么该地址的内容保持不变。只要你输入任意非十六进制的数据(比如说.),此命令就立刻结束。
=> mm 100000
00100000: 27051956 ? 0
00100004: 50504342 ? AABBCCDD
00100008: 6f6f7420 ? 01234567
0010000c: 312e312e ? .
=> md 100000 10
00100000: 00000000 aabbccdd 01234567 312e312e    .........#Eg1.1.
00100010: 3520284d 61722032 31203230 3032202d    5 (Mar 21 2002 -
00100020: 2031393a 35353a30 34290000 00000000     19:55:04)......
00100030: 00000000 00000000 00000000 00000000    ................
=>
   同样,这条命令也可以加上类型标识符.l, .w 和 .b :
=> mm.w 100000
00100000: 0000 ? 0101
00100002: 0000 ? 0202
00100004: aabb ? 4321
00100006: ccdd ? 8765
00100008: 0123 ? .

***************************************************************************************************************************************************

help mtest
mtest [start [end [pattern]]]
    - simple RAM read/write test
=>
mtest提供一个简单地存储器测试。
=> mtest 100000 200000
Testing 00100000 ... 00200000:
Pattern 0000000F  Writing...  Reading...
=>
    它往存储器写入数据,这样会修改存储单元。如果遇到ROM或者flash存储单元,它会写入失败。
    如果测试的存储范围包括U-Boot使用的区域(如中断向量表,或者内部程序代码,堆栈或者堆存放的单元),此命令可能会使系统崩溃。

*****************************************************************************************************************************************************************

help mw
mw [.b, .w, .l] address value [count]
    - write memory
=>
   mw是一种往存储器填写某些数据的方法。如果调用时没加计数参数,值将仅仅被写到某一给定的地址。当使用了计数参数时,整个存储区域都会写入该值。

**********************************************************************************************************************************************************

 help nand

nand info             - show available NAND devices

nand device [dev]     - show or set current device

nand read[.jffs2]     - addr off|partition size

nand write[.jffs2]    - addr off|partiton size - read/write `size' bytes starting

    at offset `off' to/from memory address `addr'

nand write[.yaffs[1]] - addr off|partition size - write `size' byte yaffs image

    starting at offset `off' from memory address `addr' (.yaffs1 for 512+16 NAND)

nand erase [clean] [off size] - erase `size' bytes from

    offset `off' (entire device if not specified)

nand bad - show bad blocks

nand dump[.oob] off - dump page

nand scrub - really clean NAND erasing bad blocks (UNSAFE)

nand markbad off - mark bad block at offset (UNSAFE)

nand biterr off - make a bit error at offset (UNSAFE)

nand lock [tight] [status] - bring nand to lock state or display locked pages

nand unlock [offset] [size] - unlock section

从内存中烧录数据到 NAND,写之前必须擦除
a) nand erase 0 300000, 从0 地址开始擦除3MB 空间
b) nand write 0x1c00000 0 300000, 烧录从0x1c00000 开始的3MB 数据到
NAND 的0 地址
c) nand read 0x1c00000 0 300000,从NAND 0 地址读取3MB 数据到
0x1c00000

*********************************************************************************************************************************************************************

help nboot

nboot [partition] | [[[loadAddr] dev] offset]

nboot 3100000 0 100000  nboot启动nand的 device设备0上100000的uImage,启动地址为SDRAM的3100000

*******************************************************************************************************************************************************

nfs

nfs [loadAddress] [host ip addr:bootfilename]

nfs 命令可以使用 NFS 网络协议通过网络启动映像。

**********************************************************************************************************************************************

nm

nm [.b, .w, .l] address

     - memory modify, read and keep address

 

nm 命令可以修改内存,可以按照字节、字、长字操作。

参数 address 是要读出并且修改的内存地址。

***********************************************************************************************************************************************

下面的这几条命令都是容易理解的。

ping    - send ICMP ECHO_REQUEST to network host

printenv- print environment variables

protect - enable or disable FLASH write protection

rarpboot- boot image via network using RARP/TFTP protocol

reset   - Perform RESET of the CPU

saveenv - save environment variables to persistent storage

setenv  - set environment variables

sleep   - delay execution for some time

test    - minimal test like /bin/sh

tftpboot- boot image via network using TFTP protocol

usb     - USB sub-system

version - print monitor version

printenv

printenv

      - print values of all environment variables

printenv name ...

      - print value of environment variable 'name'

 

printenv 命令打印环境变量。

可以打印全部环境变量,也可以只打印参数中列出的环境变量。

 

17、protect

protect on  start end

      - protect Flash from addr 'start' to addr 'end'

protect on  N:SF[-SL]

      - protect sectors SF-SL in Flash bank # N

protect on  bank N

      - protect Flash bank # N

protect on  all

      - protect all Flash banks

protect off start end

       - make Flash from addr 'start' to addr 'end' writable

protect off N:SF[-SL]

     - make sectors SF-SL writable in Flash bank # N

protect off bank N

     - make Flash bank # N writable

protect off all

     - make all Flash banks writable

 

protect 命令是对 Flash 写保护的操作,可以使能和解除写保护。

第 1 个参数 on 代表使能写保护; off 代表解除写保护。

第 2 、 3 参数是指定 Flash 写保护操作范围,跟擦除的方式相 同。

 

18、rarpboot

rarpboot [loadAddress] [bootfilename]

 

rarboot 命令可以使用 TFTP 协议通过网络启动映像。也就是把指定的文件下载到指定地址,然后执行。

第 1 个参数是映像文件下载到的内存地址。

第 2 个参数是要下载执行的映像文件。

 

19、run

run var [...]

      - run the commands in the environment variable(s) 'var'

run 命令可以执行环境变量中的命令,后面参数可以跟几个环境变量名。

 

20、setenv

setenv name value ...

      - set environment variable 'name' to 'value ...'

setenv name

      - delete environment variable 'name'

 

setenv 命令可以设置环境变量。

第 1 个参数是环境变量的名称。

第 2 个参数是要设置的值,如果没有第 2 个参数,表示删除这个环境变量。

 

21、sleep

sleep N

      - delay execution for N seconds (N is _decimal_ !!!)

sleep 命令可以延迟 N 秒钟执行, N 为十进制数。

 

22、tftpboot

tftpboot [loadAddress] [bootfilename]

tftpboot 命令可以使用 TFTP 协议通过网络下载文件。按照二进制文件格式下载。另外使用这个命令,必须配置好相关的环境变量。例 如 serverip 和 ipaddr 。

第 1 个参数 loadAddress 是下载到的内存地址。

第 2 个参数是要下载的文件名称,必须放在 TFTP 服务器相应的目录下。

这些 U-Boot 命令为嵌入式系统提供了丰富的开 发和调试功能。在 Linux 内核启动和调试过程中,都可以用到 U-Boot 的命令。但是一般情况下,不需要使用全部命令。比如已经支持以太网接口,可以通过 tftpboot 命令来下载文

*********************************************************************************************************************************************

printenv
setenv serverip 192.168.1.108
setenv ipaddr 192.168.1.118
setenv ethaddr 08:08:08:08:12:27
setenv netmask 255.255.255.0
setenv gatewayip 192.168.1.1
setenv bootcmd tftp 30800000 uImage-2.6.26-9g24x0.bin;tftp 31000000 ramdisk-2.6.26-9g24x0.bin;bootm 30800000
setenv bootcmd tftp 30800000 uImage-2.6.26-9g24x0.bin;bootm 30800000
setenv bootargs noinitrd root=/dev/nfs rw nfsroot=192.168.1.108:/nfsboot/rootfs ip=192.168.1.118:192.168.1.108::255.255.255.0 console=ttySAC0,115200 init=/linuxrc mem=64M
setenv bootargs root=/dev/ram0 rw initrd=0x31000000,0x1000000 console=ttySAC0,115200 init=/linuxrc mem=64M

(1) 查看u-boot的环境变量信息
(2) 设置TFTP服务器的IP地址
(3) 设置本机IP地址
(4) 设置本机MAC地址
(5) 设置本机子域掩码
(6) 设置网关IP地址
(7) 设置默认启动命令下载uImage内核,ramdisk根文件系统并启动uImage内核
(8) 设置默认启动命令下载uImage内核,并启动uImage内核
(9) 设置默认内核启动命令行参数,用于NFS根文件系统启动
(10) 设置默认内核启动命令行参数,用于RAMDISK根文件系统启动


 nand info
nand device 0
nand bad
setenv autostart yes
nboot 3100000 0 100000

(1) 查看Nand的信息
(2) 查看Nand设备0的信息
(3) 查看Nand的块块
(4) 设置自动启动,让nboot有效调用启动参数和bootm命令
(5) nboot启动nand的 device设备0上100000的uImage,启动地址为SDRAM的3100000

tftp 32000000 uImage 
nand erase 0x100000   0x200000
nand write 0x32000000 0x100000 0x200000
nand read  0x31000000 0x100000 0x200000
bootm 31000000

(1) 从网口下载uImage 到SDRAM的0x32000000处
(2) 从1M处开始擦写Nand Flash,擦写2M大小的空间
(3) 将SDRAM中的0x32000000处开始的内容uImage,烧写到Nand Flash的0x100000处开始的2M空间内,掉电能保存。
(4) 将Nand Flash的0x100000处开始的2M空间内容uImage,拷贝到SDRAM中0x31000000处开始的地方
(5) 启动uImage

fli
(1) 查看nor flash的信息

protect off all
erase  80000  1fffff 
tftp 32000000 uImage
cp.b 32000000 80000  180000
cp.b 80000 31000000  180000
bootm 31000000

(1) 命令打开nor flash写保护
(2) 从80000 (前512K留给U-BOOT及参数存储空间)处开始擦写nor Flash后面全部,(擦写1M5大小的空间)
(3) 从网口下载uImage 到SDRAM的0x32000000处
(4) 将SDRAM中的0x32000000处开始的内容uImage,烧写到nor Flash的80000处开始的1M5空间内,掉电能保存。
(5) 将nor Flash的80000处开始的1M5空间内容uImage,拷贝到SDRAM中0x31000000处开始的地方
(6) 启动uImage

protect off all
erase  0  5ffff
tftp 32000000 u-boot-fs2410.bin.lcd.bf2
cp.b 32000000 0  5ffff

(1) 命令打开nor flash写保护
(2) 从0处开始擦写nor Flash 384KB 大小的空间
(3) 从网口下载u-boot-fs2410.bin.lcd.bf2 到SDRAM的0x32000000处
(4) 将SDRAM中的0x32000000处开始的内容u-boot-fs2410.bin.lcd.bf2,烧写到nor Flash的0处开始的384KB空间内,掉电能保存。

常用UBUNTU的包管理命令。

dpkg -l | less
dpkg -L abcd
dpkg -S abcdef
dpkg -i   abcd.deb
apt-cache search  abcd
apt-cache show  abcd
apt-get install abcd
apt-get remove  abcd
apt-get--purge remove  abcd
apt-get source abcd

(1) 列出系统中dpkg跟踪到的所有的包
(2) 列出abcd包中包括的文件
(3) 列出abcdef命令属于的软件包
(4) 手动安装abcd.deb软件包
(5) 列出包含abcd字符内容的所有包
(6) 列出abcd包的详细信息
(7) 网络下载安装abcd软件包
(8) 卸载abcd软件包
(9) 完全卸载abcd软件包
(10)网络下载abcd软件包的源码










原创粉丝点击