(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)
功能:以不同的协议从串口获取文件.。
格式基本都为:
load? [ off ] [ baud ]
第
1个参数是下载到SDRAM的地址,如果不填,就是用默认配置:CONFIG_SYS_LOAD_ADDR
第2个参数是波特率,一般不填,用默认
的115200.
在windows下的超级终端可以用这些协议发送文件,但是在ubuntu下基本只能用kermit协议。一下使用C-kermit来发送一个文件到
mini2440。
[u-boot@MINI2440]#
loadb ## Ready for binary (kermit) download to 0x30008000 at
115200 bps...
|
上面已经启动了U-boot的kermit传输协议,这时按下 Ctrl + \ , 再按 c,
切换到C-kermit的命令行模式,输入命令:send <文件路径>,回车。
[u-boot@MINI2440]#
loadb ## Ready for binary (kermit) download to 0x30008000 at
115200 bps...
(Back
at MAGI-Linux) ---------------------------------------------------- C-Kermit 8.0.211, 10 Apr
2004, for Linux Copyright (C)
1985, 2004, Trustees of Columbia
University in the City of New
York. Type ? or HELP for
help. (/home/tekkaman/桌面/) C-Kermit>send /home/tekkaman/development/share/zImage.img
|
C-kermit就开始传送,并且显示一个传送界面,并动态显示传送进度。
C-Kermit 8.0.211, 10 Apr 2004,
MAGI-Linux
Current
Directory: /home/tekkaman/��~L�~]� Communication
Device: /dev/ttyUSB0 Communication
Speed: 115200 Parity: none RTT/Timeout: 01 / 02 SENDING: /home/tekkaman/development/share/zImage.img => zImage.img File Type:
BINARY File
Size: 2277540 Percent
Done: 19 /////////-
...10...20...30...40...50...60...70...80...90..100 Estimated Time
Left: 00:03:35 Transfer Rate, CPS: 8536 Window Slots: 1 of 1 Packet Type: D Packet Count:
557 Packet Length:
1000 Error Count: 0 Last Error: Last
Message:
X to cancel
file, Z to cancel group, <CR> to resend last packet, E to send Error
packet, ^C to quit
immediately, ^L to refresh
screen.
|
传送完毕后,输入c ,回到U-boot的串口界面。
[u-boot@MINI2440]#
loadb ## Ready for binary (kermit) download to 0x30008000 at
115200 bps...
(Back
at MAGI-Linux) ---------------------------------------------------- C-Kermit 8.0.211, 10 Apr
2004, for Linux Copyright (C)
1985, 2004, Trustees of Columbia
University in the City of New
York. Type ? or HELP for
help. (/home/tekkaman/桌面/) C-Kermit>send /home/tekkaman/development/share/zImage.img (/home/tekkaman/桌面/) C-Kermit>c Connecting
to /dev/ttyUSB0,
speed 115200 Escape character:
Ctrl-\ (ASCII
28, FS):
enabled Type the escape character followed by C to get back, or followed by ?
to see other options. ---------------------------------------------------- ## Total Size
= 0x0022c0a4 = 2277540 Bytes ## Start Addr =
0x30008000
|
(4)网络命令
只要你的网卡驱动没问题,那么你就可以通过网络来传输文件到开发板,这可比串口快多了。你可以直接用交叉网线连接开发板和电脑,也可以用普通直连网线连接
路由器,再连到电脑,不过记得配置好网络,关闭防火墙哦。
先测试网络是否通了,现在开发板使用ping
命令,看看是否可以ping通电脑:
[u-boot@MINI2440]#
ping 192.168.1.100 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 host 192.168.1.100 is
alive
|
如果出现:
[u-boot@MINI2440]#
ping 192.168.1.100 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 ping failed; host 192.168.1.100 is not alive
|
这样无法ping通的事,可能是:
1、U-boot网卡驱动有问题
2、U-boot网络协议延时配置有问题
3、网络参数配
置问题,比如IP等,Host和Target都有可能有问题。Host最好关闭IPv6。
实在找不到原因,用Wireshark抓包看看。
如果网络畅通,下面就可以使用下面的命令从tftp目录或者nfs目录下载文件到SDRAM了。
命令:
dhcp -
boot image via network using DHCP/TFTP protocol
rarpboot- boot image
via network using RARP/TFTP protocol
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
这
几个命令的格式都是:<指令> [目的SDRAM地址] [[主机IP:]文件名]
注意:
要使用dhcp、rarpboot或 bootp 等功能要路由器或Host的支持。
如果没有输入[目的SDRAM地址],
系统就是用编译时定义的CONFIG_SYS_LOAD_ADDR作为目的SDRAM地址
如果tftpboot和nfs命令没有定义[主机
IP:],则使用ENV中的serverip
其它命令必需定义[主机IP:],否则会使用提供动态IP服务的主机IP作为[主机IP:]。
使用范例:
[u-boot@MINI2440]# nfs 0x30008000 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]# tftp 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]# dhcp 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 BOOTP broadcast 1 BOOTP broadcast 2 DHCP
client bound to address 192.168.1.101 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: ################## done Bytes transferred = 256220 (3e8dc
hex) [u-boot@MINI2440]# bootp 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 BOOTP broadcast 1 BOOTP broadcast 2 DHCP
client bound to address 192.168.1.101 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: ################## done Bytes transferred = 256220 (3e8dc
hex) [u-boot@MINI2440]# rarpboot 192.168.1.100:u-boot.bin
|
我的路由器没有开rarp协议,所以rarpboot 无法使用,要使用dhcp或 bootp 也是要路由或Host支持的。
(5)Nand
Flash操作指令
常用的Nand Flash指令如下:
指令 |
功能 |
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 偏移地址处的块为坏块 |
使用范例:
[u-boot@MINI2440]# nand info
Device 0: NAND 128MiB 3,3V 8-bit, sector size 128 KiB [u-boot@MINI2440]# nand device 0 Device 0: NAND 128MiB 3,3V 8-bit... is now
current device [u-boot@MINI2440]#
nand read 0x30008000 0x60000
200000
NAND read: device 0 offset 0x60000, size 0x200000 2097152 bytes read: OK [u-boot@MINI2440]# nand bad
Device 0 bad blocks: 030a0000 030c0000 030e0000 07ee0000 [u-boot@MINI2440]#
nand markbad 0x500000 block 0x00500000 successfully
marked as bad [u-boot@MINI2440]# nand bad
Device 0 bad blocks: 00500000 030a0000 030c0000 030e0000 07ee0000 [u-boot@MINI2440]#
nand scrub
NAND scrub: device 0 whole chip Warning: scrub option will erase all factory set bad There is no
reliable way to recover them. Use
this command only for testing purposes if you are sure of what you are
Really scrub
this NAND flash? <y/N> Erasing at
0x2f4000008000000 -- 0% complete. NAND
128MiB 3,3V 8-bit: MTD Erase failure:
-5
NAND 128MiB 3,3V 8-bit: MTD
Erase failure: -5
NAND 128MiB 3,3V 8-bit: MTD
Erase failure: -5 Erasing at 0x7ea000008000000
-- 0%
complete. NAND 128MiB 3,3V 8-bit: MTD
Erase failure: -5 Erasing at 0x7fe000008000000
-- 0%
complete. OK [u-boot@MINI2440]#
nand bad
Device 0 bad blocks: 030a0000 030c0000 030e0000 07ee0000 [u-boot@MINI2440]#
nand dump 0x8000 Page 00008000 dump: ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff (略) OOB: ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [u-boot@MINI2440]# tftp
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 write
0x30008000 0 40000
NAND write:
device 0 offset 0x0, size
0x40000 Writing at 0x2000000020000 -- 100% is complete. 262144 bytes written: OK [u-boot@MINI2440]# nand dump 0x8000 Page
00008000 dump: 00 00
53 e1 01 00 00 2a 15 40 e0 e3 19 00 00 ea (略) 60 30 97 e5 03 00 54 e1 f6 ff ff ba 00 40 a0 e3 OOB: ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff 65 a9 6b f3 ff 33 fc
30 f3 33 cf 33 0f f0 ff 00 cc 0f 59 55 57 96 a5 5b
|
nboot 指令也是一条Nand Flash 读取指令,它是将Nand Flash 的 offset
偏移地址的内核映像读取到SDRAM的loadAddr位置。它会自动读取到内核映像(使用mkimage处理过的)的结束,所以不用给出读取大小。
格
式:nboot loadAddr dev offset
使用范例:
[u-boot@MINI2440]# tftp 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]# nand erase 0x100000 300000
NAND
erase: device 0 offset
0x100000, size 0x300000
Erasing
at 0x3e000001800000 -- 0% complete.
OK
[u-boot@MINI2440]#
nand write 0x30008000
0x100000 300000
NAND write:
device 0 offset 0x100000,
size 0x300000
Writing at 0x3e000000020000 -- 100% is complete. 3145728 bytes written: OK
[u-boot@MINI2440]#
nand device 0
Device 0:
NAND 128MiB 3,3V 8-bit... is now current device
[u-boot@MINI2440]# nboot
30008000 0 0x100000
Loading from NAND 128MiB 3,3V 8-bit,
offset 0x100000
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
[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
(略)
阅读(2128) | 评论(0) | 转发(1) |