常用u-boot命令详解(全) 2

(8) 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
reset,以初始化USB控制器,获取设备信息。

我将一个4G的kingstonU盘(可引导盘)插入 mini2440,然后读取他的头512 字节(MBR): 

[u-boot@MINI2440]# usb reset
(Re)start USB...
USB: scanning bus for devices... 2
USB Device(s) found
       scanning bus for storage devices... 1 Storage
Device(s) found
[u-boot@MINI2440]# usb
tree

Device Tree:
  1 Hub (12 Mb/s, 0mA)
  | OHCI Root Hub
  |
  +-2 Mass Storage (12 Mb/s, 100mA)
       Kingston DT 101 II 0019E02CB6EB5B8B1B120051

[u-boot@MINI2440]# usb
info
1: Hub, USB Revision 1.10
- OHCI Root Hub
- Class: Hub
- PacketSize: 8 Configurations: 1
- Vendor: 0x0000 Product 0x0000 Version 0.0
   Configuration: 1
   - Interfaces: 1 Self Powered 0mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 1
     - Class Hub
     - Endpoint 1 In Interrupt MaxPacket 2 Interval 255ms

2: Mass Storage, USB Revision 2.0
- Kingston DT 101 II 0019E02CB6EB5B8B1B120051
- Class: (from Interface) Mass
Storage
- PacketSize: 64 Configurations: 1
- Vendor: 0x0951 Product 0x1613 Version 1.0
   Configuration: 1
   - Interfaces: 1 Bus Powered 100mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 2
     - Class Mass Storage, Transp. SCSI, Bulk
only
     - Endpoint 1 In Bulk MaxPacket 64
     - Endpoint 2 Out Bulk MaxPacket 64

[u-boot@MINI2440]# usb
storage
  Device 0: Vendor: Kingston Rev: PMAP Prod: DT
101 II
            Type: Removable Hard Disk
            Capacity: 3875.0 MB = 3.7 GB (7936000
x 512)
[u-boot@MINI2440]# usb
dev 0

USB device 0:
    Device 0: Vendor: Kingston Rev: PMAP Prod: DT
101 II
            Type: Removable Hard Disk
            Capacity: 3875.0 MB = 3.7 GB (7936000
x 512)
... is now current device
[u-boot@MINI2440]# usb
part 0
print_part of 0

Partition Map for USB device 0 -- Partition Type: DOS

Partition Start Sector Num Sectors Type
    4 63 7935937 c
[u-boot@MINI2440]# usb read 0x30008000
0 200

USB read: device 0 block # 0, count 512 ... .........................
512 blocks read: OK
[u-boot@MINI2440]# md.b
0x30008000 200

30008000: fa 31 c0 8e d8 8e c0 8e d0 bc 00 7c fb fc 89 e6
.1.........|....

30008010: bf 00 06 b9 00 01 f3 a5 ea dc 06 00 00 10 00 01
................

30008020: 00 00 7c 00 00 00 00 00 00 00 00 00 00 80 3f 00
..|...........?.

30008030: ff 00 ed 01 1e 0e 1f 3a 16 10 00 74 06 1f ea 36
.......:...t...6

30008040: e7 00 f0 3d fb 54 75 05 8c d8 fb eb 1d 80 fc 08
...=.Tu.........

30008050: 75 1b e8 81 00 8a 36 13 00 fe ce 8b 0e 15 00 86
u.....6.........

30008060: cd c0 e1 06 0a 0e 11 00 31 c0 f8 eb 65 80 fc 02
........1...e...

30008070: 72 cb 80 fc 04 77 c6 60 80 cc 40 50 be 00 00 c7
r....w.`..@P....

30008080: 04 10 00 30 e4 89 44 02 89 5c 04 8c 44 06 66 31
...0..D..\..D.f1

30008090: c0 66 89 44 0c 88 f0 f6 26 11 00 88 cf 88 eb c0
.f.D....&.......

300080a0: ef 06 81 e1 3f 00 01 c8 48 89 c7 a1 13 00 f7 26
....?...H......&

300080b0: 11 00 f7 e3 01 f8 81 d2 00 00 89 44 08 89 54 0a
...........D..T.

300080c0: 58 30 c0 8a 16 10 00 e8 0c 00 88 26 03 00 61 a1
X0.........&..a.

300080d0: 02 00 1f ca 02 00 9c ff 1e 22 00 c3 80 fa 8f 7f
........."......

300080e0: 04 88 16 2d 06 be 87 07 e8 8d 00 be be 07 31 c0
...-..........1.

300080f0: b9 04 00 f6 04 80 74 03 40 89 f5 81 c6 10 00 e2
......t.@.......

30008100: f2 48 74 02 cd 18 bf 05 00 be 1d 06 c7 44 02 01
.Ht..........D..

30008110: 00 66 8b 46 08 66 89 44 08 b8 00 42 8a 16 2d 06
.f.F.f.D...B..-.

30008120: cd 13 73 0d 4f 74 49 30 e4 8a 16 2d 06 cd 13 eb
..s.OtI0...-....

30008130: d8 a1 fe 7d 3d 55 aa 75 37 fa 66 a1 4c 00 66 a3
...}=U.u7.f.L.f.

30008140: 3f 06 be 13 04 8b 04 48 89 04 c1 e0 06 8e c0 31
?......H.......1

30008150: ff be 1d 06 b9 60 00 fc f3 a5 c7 06 4c 00 17 00
.....`......L...

30008160: a3 4e 00 fb 8a 16 2d 06 89 ee fa ea 00 7c 00 00
.N....-......|..

30008170: be aa 07 e8 02 00 eb fe ac 20 c0 74 09 b4 0e bb
......... .t....

30008180: 07 00 cd 10 eb f2 c3 53 74 61 72 74 20 62 6f 6f
.......Start boo
30008190: 74 69 6e 67 20 66 72 6f 6d 20 55 53 42 20 64 65
ting from USB de
300081a0: 76 69 63 65 2e 2e 2e 0d 0a 00 42 6f 6f 74 20 66
vice......Boot f
300081b0: 61 69 6c 65 64 00 00 00 ea eb d4 ca 00 00 00 00
ailed...........

300081c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................

300081d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................

300081e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 01
................

300081f0: 01 00 0c fe 7f ec 3f 00 00 00 c1 17 79 00 55 aa
......?.....y.U.

(9) SD卡(MMC)指令

SD卡的使用命令比较简单,只有初始化和设备信息的显示,读写是通过文件系统命令实现的。
mmc init [dev] - 初始化MMC子系统
mmc device [dev] - 查看和设置当前设备
使用和USB类似,在所有的命令使用前,必须先插入SD卡,然后使用:mmc init,以初始化MMC 控制器,获取设备信息。
我在mini2440中插入1GB SD卡:

[u-boot@MINI2440]# mmc
init
mmc: Probing for SDHC ...
mmc: SD 2.0 or later card found
trying to detect SD Card...
Manufacturer: 0x00, OEM "roduct
name: "
", revision 0.0
Serial number:
7864775
Manufacturing date: 11/2006
CRC:
0x4f, b0 = 1
READ_BL_LEN=6, C_SIZE_MULT=7, C_SIZE=4095
size = 0
SD Card detected RCA: 0x2 type: SD
mmc1 is available
[u-boot@MINI2440]# mmc device
mmc1 is current device

(10) FAT文件系统指令

fatinfo:显示文件系统的相关信息
格式:fatinfo <interface> <dev[:part]>
Interface:代表接口,如usb、mmc;
dev:代表设备编号,如0、1……;
part:代表存储设备中的分区,如1、2……。
fatload:从FAT32文件系统中读取二进制文件到SDRAM。
格式:fatload <interface> <dev[:part]>  <addr> <filename> [bytes]
Interface、dev和part同上;
addr:代表写入SDRAM的地址;
filename:代表存储设备中的文件名;
bytes:代表从存储设备中读取的文件大小,可不填;如果填的数据比文件小,就只读取bytes字节,如果填的数据比文件大,也只读取文件的大小。
fatls:列出FAT32文件系统中目录里的文件。
格式:fatls <interface> <dev[:part]> [directory]
Interface、dev和part同上;
directoryr:代表所要查看的目录,可不填,默认为/。
这些指令基本上要和U盘或者SD卡同时使用,主要用于读取这些移动存储器上的FAT32分区。
使用范例:

[u-boot@MINI2440]# usb
part 0
print_part of 0

Partition Map for USB device 0 -- Partition Type: DOS

Partition Start Sector Num Sectors Type
    4 63 7935937 c
[u-boot@MINI2440]# fatinfo
usb 0:4
Interface: USB
  Device 0: Vendor: Kingston Rev: PMAP Prod: DT 101
II
            Type: Removable Hard Disk
            Capacity: 3875.0 MB = 3.7 GB (7936000
x 512)
Partition 4: Filesystem: FAT32 "7600_16385_"
[u-boot@MINI2440]# fatls
usb 0:4

            boot/
            efi/
            sources/
            support/
            upgrade/
       43 autorun.inf
   383562 bootmgr
   111880 setup.exe
   256220 u-boot.bin

4 file(s), 5 dir(s)

[u-boot@MINI2440]# fatls
usb 0:4 /boot/
            ./
            ../
            fonts/
            zh-cn/
   262144 bcd
  3170304 boot.sdi
     1024 bootfix.bin
    97280 bootsect.exe
     4096 etfsboot.com
   485440 memtest.exe

6 file(s), 4 dir(s)
[u-boot@MINI2440]# fatload
usb 0:4 0x30008000 u-boot.bin
reading u-boot.bin
........................

256220 bytes read
[u-boot@MINI2440]# fatload
usb 0:4 0x30008000 u-boot.bin 200

reading u-boot.bin

512 bytes read

(11) 系统引导指令

boot  和bootd  都是运行ENV”bootcmd”中指定的指令。

bootm 指令是专门用于启动在SDRAM中的用U-boot的mkimage工具处理过的内核映像。
格式:bootm [addr [arg ...]]
addr 是内核映像所在的SDRAM中的地址
当启动的是Linux内核时,'arg' 可以使 initrd 的地址。

[u-boot@MINI2440]# setenv
bootcmd tftp\;bootm
[u-boot@MINI2440]# saveenv
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x6000000000002 -- 0% complete.
Writing to Nand... done
[u-boot@MINI2440]# boot
dm9000 i/o: 0x20000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.100; our IP address is
192.168.1.101
Filename 'zImage.img'.
Load address: 0x30008000
Loading: T #################################################################
     #################################################################
     ##########################
done
Bytes transferred = 2277540 (22c0a4 hex)
## Booting kernel from Legacy Image at 30008000 ...
   Image Name: tekkaman
   Created: 2010-03-29 12:59:51
UTC
   Image Type: ARM Linux Kernel Image (uncompressed)
   Data Size: 2277476 Bytes = 2.2 MB
   Load Address: 30008000
   Entry Point: 30008040
   Verifying Checksum ... OK
   XIP Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.33.1 (tekkaman@MAGI-Linux) (gcc
version 4.3.2(crosstool-NG-1.6.1-tekkaman) ) #5
Mon Mar 29 20:58:50 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
(略)

U-Boot 2009.11 ( 4月 04 2010 - 12:09:25)

modified by tekkamanninja (tekkamanninja@163.com)
Love Linux 

I2C: ready
DRAM: 64 MB
Flash: 2 MB
NAND: 128 MiB
Video: 240x320x16 20kHz 62Hz
In: serial
Out: serial
Err: serial
Net: dm9000
U-Boot 2009.11 ( 4月 04 2010 - 12:09:25)
modified by tekkamanninja
(tekkamanninja@163.com)
Love Linux 
Hit any key to stop autoboot: 0
[u-boot@MINI2440]# bootd
dm9000 i/o: 0x20000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.100; our IP address is
192.168.1.101
Filename 'zImage.img'.
Load address: 0x30008000
Loading: T #################################################################
     #################################################################
     ##########################
done
Bytes transferred = 2277540 (22c0a4 hex)
## Booting kernel from Legacy Image at 30008000 ...
   Image Name: tekkaman
   Created: 2010-03-29 12:59:51
UTC
   Image Type: ARM Linux Kernel Image (uncompressed)
   Data Size: 2277476 Bytes = 2.2 MB
   Load Address: 30008000
   Entry Point: 30008040
   Verifying Checksum ... OK
   XIP Kernel Image ... OK
OK

Starting kernel ...
(略)

12)EEPROM 读写指令eeprom  - I2C 接口的EEPROM 读写指令
格式:
eeprom read  addr off cnt
eeprom write addr off cnt
第一个参数addr 是要写入或读出的数据在SDRAM中的存放地址;
第二个参数off 是在EEPROM中的偏移;
第三个参数cnt 是读写的数据字节数。
使用范例:

[u-boot@MINI2440]# md.b
0x30008000 2
30008000: aa aa ..
[u-boot@MINI2440]# eeprom read 0x30008000
10 2

EEPROM @0x50 read: addr 30008000 off 0010 count 2 ... done
[u-boot@MINI2440]# md.b
0x30008000 2
30008000: ff ff ..
[u-boot@MINI2440]# mm.b
0x30008000
30008000: ff ? aa
30008001: ff ? 55
30008002: aa ? q
[u-boot@MINI2440]# md.b
0x30008000 2
30008000: aa 55 .U
[u-boot@MINI2440]# eeprom write 0x30008000
10 2

EEPROM @0x50 write: addr 30008000 off 0010 count 2 ... done
[u-boot@MINI2440]# eeprom read 0x30008010
10 2

EEPROM @0x50 read: addr 30008010 off 0010 count 2 ... done
[u-boot@MINI2440]# md.b
0x30008010 2
30008010: aa 55 .U

(13)设置和读取RTC指令

date    - 设置和读取RTC
格式:
date [MMDDhhmm[[CC]YY][.ss]]
MM:月份
DD:日期
hh:小时
mm 分钟
CC:年份的前两个数字
YY:年份的后两个数字
ss:秒数
使用范例:

[u-boot@MINI2440]# date
Date: 1980-00-06 (Thursday) Time: 20:30:25
[u-boot@MINI2440]# date
041100582010.20
Date: 2010-04-11 (Sunday) Time: 0:58:20

(14)脚本运行指令

run var [...]
var :ENV中的脚本名 
使用范例:

[u-boot@MINI2440]# setenv
a_run_test echo $bootfile \; version
[u-boot@MINI2440]# run
a_run_test

zImage.img

U-Boot 2009.11 ( 4&aelig;œˆ 04
2010 - 12:09:25)

(15)系统重启指令

reset
- 重启CPU

[u-boot@MINI2440]# reset
resetting ...

U-Boot 2009.11 ( 4&aelig;œˆ 04
2010 - 12:09:25)

modified by tekkamanninja (tekkamanninja@163.com)
Love Linux 

I2C: ready
DRAM: 64 MB
Flash: 2 MB
NAND: 128 MiB
Video: 240x320x16 20kHz 62Hz
In: serial
Out: serial
Err: serial
Net: dm9000
U-Boot 2009.11 ( 4&aelig;œˆ 04
2010 - 12:09:25)
modified by tekkamanninja
(tekkamanninja@163.com)
Love Linux 
Hit any key to stop autoboot: 0
[u-boot@MINI2440]#

四、U-boot的使用(四)

下载与烧写

使用U-boot将映像文件烧写到板上的Flash,一般步骤是:
(1)通过网络、串口、U盘、SD卡等方式将文件传输到SDRAM;
(2)使用Nand Flash或Nor Flash相关的读写命令将SDRAM中的数据烧入Flash。
下面是烧写范例:
如果使用 SD卡和U盘形式更新U-boot,那么首先SD卡和U盘中必须有FAT32文件系统,并在里面存放了u-boot.bin 文件。
1) 通过SD卡烧入Nand Flash:

[u-boot@MINI2440]# mmc init
mmc: Probing for SDHC ...
mmc: SD 2.0 or later card found
trying to detect SD Card...
Manufacturer:
0x00, OEM "roduct
name:
"
", revision 0.0
Serial number:
7864775
Manufacturing date: 11/2006
CRC:
0x4f, b0 = 1
READ_BL_LEN=6, C_SIZE_MULT=7, C_SIZE=4095
size = 0
SD Card detected RCA: 0x2 type: SD
mmc1 is available
[u-boot@MINI2440]# fatload mmc 1 0x30008000 u-boot.bin
reading u-boot.bin

256220 bytes read
[u-boot@MINI2440]# nand erase 0 0x40000

NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x2000000000004 --
0% complete.
OK
[u-boot@MINI2440]# nand write 0x30008000 0 0x40000

NAND write: device 0 offset 0x0, size 0x40000
Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK

2) 通过U盘烧入Nor Flash:

[u-boot@MINI2440]# usb start
(Re)start USB...
USB:
scanning bus for devices... 2 USB Device(s) found

scanning bus for storage devices... 1 Storage Device(s) found
[u-boot@MINI2440]# usb storage

Device 0
: Vendor: Kingston Rev: PMAP Prod: DT 101 II

Type: Removable Hard Disk

Capacity: 3875.0 MB = 3.7 GB (7936000 x 512)
[u-boot@MINI2440]# usb part 0
print_part of 0

Partition Map for USB device 0
--
Partition Type: DOS

Partition
Start Sector
Num Sectors
Type


4

63

7935937
c

[u-boot@MINI2440]# fatload usb 0:4 0x30008000 u-boot.bin
reading u-boot.bin
........................

256220 bytes read
[u-boot@MINI2440]# protect off all
Un-Protect Flash Bank # 1
[u-boot@MINI2440]# erase 0x0 0x3ffff
Erasing sector
0 ... ok.
Erasing sector
1 ... ok.
Erasing sector
2 ... ok.
Erasing sector
3 ... ok.
Erased 4 sectors
[u-boot@MINI2440]# cp.b 0x30008000 0x0
0x3ffff

Copy to Flash... done

3) 通过TFTP服务烧入Nand Flash:

[u-boot@MINI2440]# tftpboot 30008000 192.168.1.100:u-boot.bin
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.101
Filename 'u-boot.bin'.
Load address: 0x30008000
Loading: T ##################
done
Bytes transferred = 256220 (3e8dc hex)
[u-boot@MINI2440]# nand erase 0 0x40000
NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x2000000000004 --
0% complete.
OK
[u-boot@MINI2440]# nand write 0x30008000 0 0x40000

NAND write: device 0 offset 0x0, size 0x40000
Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK

4) 通过NFS 服务烧入Nand Flash:

[u-boot@MINI2440]# nfs 30008000 192.168.1.100:/home/tekkaman/development/share/u-boot.bin
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
File transfer via NFS from server 192.168.1.100; our IP address is 192.168.1.101
Filename '/home/tekkaman/development/share/u-boot.bin'.
Load address: 0x30008000
Loading: ###################################################
done
Bytes transferred = 256220 (3e8dc hex)
[u-boot@MINI2440]# nand erase 0 0x40000
NAND erase: device 0 offset 0x0, size 0x40000
Erasing at 0x2000000000004 --
0% complete.
OK
[u-boot@MINI2440]# nand write 0x30008000 0 0x40000

NAND write: device 0 offset 0x0, size 0x40000
Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK

内核引导

内核的引导步骤如下:
(1)用U-boot的mkimage工具处理内核映像zImage。
(2)通过网络、串口、U盘、SD卡等方式将处理过的内核映像传输到SDRAM的一定位置(一般使用0x30008000)
(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
不压缩(一般使用这个,因为zImage是已经被bzip2压缩过的自解压内核) 
gzip 用gzip的压缩方式
bzip2 用bzip2的压缩方式
-a 指定映象在内存中的加载地址,映象下载到内存中时,要按照用mkimage制作映象时,这个参数所指定的地址值来下载
-e
指定映象运行的入口点地址,这个地址就是-a参数指定的值加上0x40(因为前面有个mkimage添加的0x40个字节的头)
-n
指定映象名
-d 指定制作映象的源文件

以下是制作内核映像的命令示例:
mkimage -n 'tekkaman' -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage
zImage.img

以下是使用范例:
1) 通过SD卡引导内核:
首先SD卡中必须有FAT32文件系统,并在里面存放了处理过的内核映像文件。

[u-boot@MINI2440]# mmc init

mmc: Probing for SDHC ...
mmc: SD 2.0 or later card found
trying to detect SD Card...
Manufacturer:
0x00, OEM "roduct
name:
"
", revision 0.0
Serial number:
7864775
Manufacturing date: 11/2006
CRC:
0x4f, b0 = 1
READ_BL_LEN=6, C_SIZE_MULT=7, C_SIZE=4095
size = 0
SD Card detected RCA: 0x2 type: SD
mmc1 is available
[u-boot@MINI2440]# fatload mmc 1 30008000 zImage.img
reading zImage.img

2277540 bytes read
[u-boot@MINI2440]# bootm 30008000
## Booting kernel from Legacy Image at 30008000 ...

Image Name:
tekkaman

Created:
2010-03-29
12:59:51 UTC

Image Type:
ARM Linux Kernel Image (uncompressed)

Data Size:
2277476 Bytes =
2.2 MB

Load Address: 30008000

Entry Point:
30008040

Verifying Checksum ... OK

XIP Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.33.1 (tekkaman@MAGI-Linux) (gcc version 4.3.2 (crosstool-NG-1.6.1-tekkaman) ) #5 Mon Mar 29 20:58:50 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
(略)

2) 通过TFTP服务引导内核:

[u-boot@MINI2440]# tftpboot 0x30008000 192.168.1.100:zImage.img 
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
TFTP from server 192.168.1.100; our IP address is 192.168.1.101
Filename 'zImage.img'.
Load address: 0x30008000
Loading: T #################################################################

#################################################################

##########################
done
Bytes transferred = 2277540 (22c0a4 hex)
[u-boot@MINI2440]# bootm 30008000
## Booting kernel from Legacy Image at 30008000 ...

Image Name:
tekkaman

Created:
2010-03-29
12:59:51 UTC

Image Type:
ARM Linux Kernel Image (uncompressed)

Data Size:
2277476 Bytes =
2.2 MB

Load Address: 30008000

Entry Point:
30008040

Verifying Checksum ... OK

XIP Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.33.1 (tekkaman@MAGI-Linux) (gcc version 4.3.2 (crosstool-NG-1.6.1-tekkaman) ) #5 Mon Mar 29 20:58:50 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
(略)

3) 通过NFS服务引导内核:

[u-boot@MINI2440]# nfs 30008000 192.168.1.100:/home/tekkaman/development/share/zImage.img
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
File transfer via NFS from server 192.168.1.100; our IP address is 192.168.1.101
Filename '/home/tekkaman/development/share/zImage.img'.
Load address: 0x30008000
Loading: #################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#######################################################
done
Bytes transferred = 2277540 (22c0a4 hex)
[u-boot@MINI2440]# bootm 30008000
## Booting kernel from Legacy Image at 30008000 ...

Image Name:
tekkaman

Created:
2010-03-29
12:59:51 UTC

Image Type:
ARM Linux Kernel Image (uncompressed)

Data Size:
2277476 Bytes =
2.2 MB

Load Address: 30008000

Entry Point:
30008040

Verifying Checksum ... OK

XIP Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.33.1 (tekkaman@MAGI-Linux) (gcc version 4.3.2 (crosstool-NG-1.6.1-tekkaman) ) #5 Mon Mar 29 20:58:50 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
(略)

4) 通过Nand Flash引导内核:
   首先要将处理过的内核映像文件烧入Nand Flash的一定位置(由内核分区表决定)。以后每次启动时用Nand Flash的读取命令先将这个内核映像文件读到内存的一定位置(由制作内核映像时的-a参数决定),再使用bootm命令引导内核。
内核映像文件的烧入:

[u-boot@MINI2440]# nfs 30008000 192.168.1.100:/home/tekkaman/development/share/zImage.img
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 08:08:11:18:12:27
operating at 100M full duplex mode
Using dm9000 device
File transfer via NFS from server 192.168.1.100; our IP address is 192.168.1.101
Filename '/home/tekkaman/development/share/zImage.img'.
Load address: 0x30008000
Loading: #################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#######################################################
done
Bytes transferred = 2277540 (22c0a4 hex)
[u-boot@MINI2440]# nand erase 0x80000 0x300000

NAND erase: device 0 offset 0x80000, size 0x300000
Erasing at 0x36000001800000 --
0% complete.
OK
[u-boot@MINI2440]# 
nand write 30008000 0x80000 300000 

NAND write: device 0 offset 0x80000, size 0x300000

Writing at 0x36000000020000 -- 100% is complete. 3145728 bytes written: OK


内核引导: 
[u-boot@MINI2440]# 
nand read 30008000 0x80000 300000

NAND read: device 0 offset 0x80000, size 0x300000

3145728 bytes read: OK
[u-boot@MINI2440]# bootm 30008000
## Booting kernel from Legacy Image at 30008000 ...

Image Name:
tekkaman

Created:
2010-03-29
12:59:51 UTC

Image Type:
ARM Linux Kernel Image (uncompressed)

Data Size:
2277476 Bytes =
2.2 MB

Load Address: 30008000

Entry Point:
30008040

Verifying Checksum ... OK

XIP Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.
Linux version 2.6.33.1 (tekkaman@MAGI-Linux) (gcc version 4.3.2 (crosstool-NG-1.6.1-tekkaman) ) #5 Mon Mar 29 20:58:50 CST 2010
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440

时间: 2024-10-22 22:06:45

常用u-boot命令详解(全) 2的相关文章

常用的linux命令详解

Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有价值的宝藏.有些Linux命令很少人知道,但不管你是新手还是高级用户,它们都非常方便有用. 这篇文章的目的是介绍一些少有人知的Linux命令,它们一定会高效地帮你管理你的桌面/服务器. 1. Ctrl+x+e命令 这个命令对于管理员和开发者非常有用.为了使每天的任务自动化,管理员需要通过输入vi.v

scp命令详解(全)_linux shell

svn 删除所有的 .svn文件 复制代码 代码如下: find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解   名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录. 把计 -a 尽可能将档案状态.权限等资料都照原状予以复制. -r 若 sourc

HBase shell基础和常用命令详解

http://www.aliyun.com/zixun/aggregation/13713.html">HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务. 1. 简介 HBase是一个分布式的.面向列的

hbase shell基础和常用命令详解_linux shell

HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务. 1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase

【区块链】量子链命令行qtum-cli全命令详解

量子链命令行qtum-cli全命令详解 == Blockchain == callcontract "address" "data" ( address ) 调用智能合约 getaccountinfo "address" 获取账户信息 getbestblockhash 获取最长链的hash getblock "blockhash" ( verbose ) 获取块的信息 getblockchaininfo 获取区块的信息 { &

Linux 中 CURL常用命令详解_linux shell

下载单个文件,默认将输出打印到标准输出中(STDOUT)中 curl http://www.centos.org 通过-o/-O选项保存下载的文件到指定的文件中: -o:将文件保存为命令行中指定的文件名的文件中 -O:使用URL中默认的文件名保存文件到本地 # 将文件下载到本地并命名为mygettext.html curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html # 将文件保存到本地并命名

ps 命令详解

(转)Linux下PS命令详解 整理自:http://blog.chinaunix.net/space.php?uid=20564848&do=blog&id=74654 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令.要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是

弹出窗口的命令详解

多种弹出窗口的命令详解,非常详细,对你会有帮助的. 1.window.open(pageURL,name,parameters) pageURL 为弹出窗口路径; name 为弹出窗口名称,也可以是系统自带的比如:_self, _blank,_top,_parent ...  ; parameters 为窗口参数(各参数用逗号分隔) ; 各项参数 其中yes/no也可使用1/0,pixel value为具体的数值,单位象素. 参数 取值范围 说明  alwaysLowered yes/no 指定

linux yum命令详解

yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载.安装.yum提供了查找.安装.删除某一个.一组甚至全部软件包的命令,而且命令简洁而又好记. yum的命令形式一般是如下:yum [options] [command] [package ...] 其中的[opt

VirtualBox下配置串口以及stty命令详解(原创)

虚拟机于主机通过串口通信  我们需要先配置一下宿主机器上的virtualbox. 1. 在串口栏中勾选 []启用串口(E) 2. 端口编号选择COM1 3. 端口模式选择Host Pipe 4. 勾选 []创建通道(C) 5. Port/File Path: 填上 /tmp/serial. 也就是说我们在宿主机器的/tmp/中创建了serial的通道文件 此外,我们还要在宿主机器上设定一下串口.在此之前需要安装minicom软件 1. 运行minicom -s命令 2. CTRL+A调出配置界面