一.网络下载烧写 tftpboot
二.linux下的DNW,win7下的DNW无法使用
第一种方式
1.设置开发板ip,及其服务器IP在同一段
set ipaddr 192.168.1.X
set serverip 192.168.1.X 与上面不同
save
2.从服务器下载文件 烧写内核
tftp 30000000 uImage
3.mtdpart 显示开发板分区
nand erase kernel 擦除分区
nand write.jffs2 30000000 kernel .jffs2为校验码
烧写文件系统
tftp 30000000 fs_qtopia.yaffs2
nand erase root
mtdpart
nand write.yaffs 30000000 00260000 2f76b40 //文件系统大小
用NFS下载同理 kernel
nfs 30000000 192.168.1.X:/work/nfs_root/uImage (cat /etc/export 目录下挂载了nfs文件系统)
nand erase kernel
nand write.jffs2 30000000 kernel
用NFS下载 文件系统
nfs 30000000 192.168.1.X:/work/nfs_root/fs_qtopia.yaffs2 (cat /etc/export 目录下挂载了nfs文件系统)
nand erase root
nand write.yaffs 30000000 00260000 2f76b40
二.linux 下的 DNW下载
把linux下的DNW放到/bin目录
sudo chmod +x +s /bin/dnw
如果使用虚拟机,则让虚拟机处于前台,在连接USB设备
lsusb查询usb设备,确定已经识别
在u-boot界面输入K
然后在linux下执行dnw arch/arm/boot/uImage
附上u-boot常用命令
尽管Uboot提供了丰富的命令集,但不同的单板所支持的命令并不一定一样(可配置),help命令可以用于查看当前单板做支持的命令。
U-Boot提供了更加周详的命令帮助,通过help命令还能查看每个命令的参数说明。由于研发过程的需要,有必要先把U-Boot命令的用法弄清晰。接下来,根据每一条命令的帮助信息,解释一下这些命令的功能和参数。
1、bootmdKNLinux联盟
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环境变量给内核)。
dKNLinux联盟
2、bootp
bootp [loadAddress] [bootfilename]
bootp命令通过bootp请求,需求DHCP服务器分配IP地址,然后通过TFTP协议下载指定的文件到内存。
第1个参数是下载文件存放的内存地址。
第2个参数是要下载的文件名称,这个文件应该在研发主机上准备好。
3、cmp
cmp [.b, .w, .l] addr1 addr2 count
- compare memory
cmp命令能比较2块内存中的内容。.b以字节为单位;.w以字为单位;.l以长字为单位。注意:cmp.b中间不能保留空格,需要连续敲入命令。
第1个参数addr1是第一块内存的起始地址。
第2个参数addr2是第二块内存的起始地址。
第3个参数count是要比较的数目,单位按照字节、字或长字。
4、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分别以字节、字、长字为单位。
5、crc32
crc32 address count [addr]
- compute CRC32 checksum [save at addr]
crc32命令能计算存储数据的校验和。
第1个参数address是需要校验的数据起始地址。
第2个参数count是要校验的数据字节数。
第3个参数addr用来指定保存结果的地址。
6、echo
echo [args..]
- echo args to console; c suppresses newline
echo命令回显参数。
dKNLinux联盟
7、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的参数即可。
8、flinfo
flinfo
- print information for all FLASH memory banks
flinfo N
- print information for FLASH memory bank # N
flinfo命令打印全部Flash组的信息,也能只打印其中某个组。一般嵌入式系统的Flash只有一个组。
9、go
go addr [arg ...]
- start application at address ’addr’
passing ’arg’ as arguments
go命令能执行应用程式。
第1个参数是要执行程式的入口地址。
第2个可选参数是传递给程式的参数,能不用。
10、minfo
iminfo addr [addr ...]
- print header information for application image starting at
address ’addr’ in memory; this includes verification of the
image contents (magic number, header and payload checksums)
iminfo能打印程式映像的开头信息,包含了映像内容的校验(序列号、头和校验和)。
第1个参数指定映像的起始地址。
可选的参数是指定更多的映像地址。
11、loadb
loadb [ off ] [ baud ]
- load binary file over serial line with offset ’off’ and baudrate ’baud’
dKNLinux联盟
loadb命令能通过串口线下载二进制格式文件。
dKNLinux联盟
12、loads
loads [ off ]
- load S-Record file over serial line with offset ’off’
loads命令能通过串口线下载S-Record格式文件。
13、mw
mw [.b, .w, .l] address value [count]
- write memory
dKNLinux联盟
mw命令能按照字节、字、长字写内存,.b .w .l的用法和cp命令相同。
第1个参数address是要写的内存地址。
第2个参数value是要写的值。
第3个可选参数count是要写单位值的数目。
14、nfs
nfs [loadAddress] [host ip addr:bootfilename]
nfs命令能使用NFS网络协议通过网络启动映像。
15、nm
nm [.b, .w, .l] address
- memory modify, read and keep address
nm命令能修改内存,能按照字节、字、长字操作。
参数address是要读出并且修改的内存地址。
16、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命令来下载文件,那么更有必要使用串口下载的loadb吗?反过来,如果研发板需要特别的调试功能,也能添加新的命令。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
U-Boot 的常用命令的用法
进入U-Boot 控制界面后,可以运行各种命令,比如下载文件到内存,擦除、读写Flash,
运行内存、NOR Flash、NAND Flash 中的程序,查看、修改、比较内存中的数据等。
使用各种命令时,可以使用其开头的若干个字母代替它。比如tftpboot 命令,可以使用t、
tf、tft、tftp 等字母代替,只要其他命令不以这些字母开头即可。
当运行一个命令之后,如果它是可重复执行的(代码中使用U_BOOT_CMD 定义这个命
令时,第3 个参数是1),若想再次运行可以直接输入回车。
U-Boot 接收的数据都是十六进制,输入时可以省略前缀0x、0X。
下面介绍常用的命令。
***********************************************************
(1)帮助命令help。
运行help 命令可以看到U-Boot 中所有命令的作用,如果要查看某个命令的使用方法,
运行“help 命令名”,比如“help bootm”。
可以使用“?”来代替“help”,比如直接输入“?”、“? bootm”。
***********************************************************
(2)下载命令。
U-Boot 支持串口下载、网络下载,相关命令有:loadb、loads、loadx、loady 和tftpboot、nfs。
前几个串口下载命令使用方法相似,以loadx 命令为例,它的用法为“loadx [ off ][ baud ]”。“[]”表示里面的参数可以省略,off 表示文件下载后存放的内存地址,baud 表示使
用的波特率。如果baud 参数省略,则使用当前的波特率;如果off 参数省略,存放的地址为
配置文件中定义的宏CFG_LOAD_ADDR。
tftpboot 命令使用TFTP 协议从服务器下载文件,服务器的IP 地址为环境变量serverip。
用法为“tftpboot [loadAddress] [bootfilename]”,loadAddress 表示文件下载后存放的内存地址,bootfilename 表示要下载的文件的名称。如果loadAddress 省略,存放的地址为配置文件中定
义的宏CFG_LOAD_ADDR;如果bootfilename 省略,则使用开发板的IP 地址构造一个文件
名,比如开发板IP 为192.168.1.17,则默认的文件名为C0A80711.img。
nfs 命令使用NFS 协议下载文件,用法为“nfs [loadAddress] [host ip addr:bootfilename]”。
“loadAddress、bootfilename”的意义与tftpboot 命令一样,“host ip addr”表示服务器的IP 地址,默认为环境变量serverip。下载文件成功后,U-Boot 会自动创建或更新环境变量filesize,它表示下载的文件的长度,可以在后续命令中使用“$(filesize)”来引用它。
********************************************************
(3)内存操作命令。
常用的命令有:查看内存命令md、修改内存命令md、填充内存命令mw、复制命令cp。
这些命令都可以带上后缀“.b”、“.w”或“.l”,表示以字节、字(2 个字节)、双字(4 个字
节)为单位进行操作。比如“cp.l 30000000 31000000 2”将从开始地址0x30000000 处,复制
2 个双字到开始地址为0x31000000 的地方。
md 命令用法为“md[.b, .w, .l] address [count]”,表示以字节、字或双字(默认为双字)
为单位,显示从地址address 开始的内存数据,显示的数据个数为count。
mm 命令用法为“mm[.b, .w, .l] address”,表示以字节、字或双字(默认为双字)为单位,
从地址address 开始修改内存数据。执行mm 命令后,输入新数据后回车,地址会自动增加,
按“Ctrl+C”键退出。
mw 命令用法为“mw[.b, .w, .l] address value [count]”,表示以字节、字或双字(默认为双
字)为单位,往开始地址为address 的内存中填充count 个数据,数据值为value。
cp 命令用法为“cp[.b, .w, .l] source target count”,表示以字节、字或双字(默认为双字)
为单位,从源地址source 的内存复制count 个数据到目的地址的内存。
******************************************************
(4)NOR Flash 操作命令。
常用的命令有查看Flash 信息的flinfo 命令、加/解写保护命令protect、擦除命令erase。
由于NOR Flash 的接口与一般内存相似,所以一些内存命令可以在NOR Flash 上使用,比如
读NOR Flash 时可以使用md、cp 命令,写NOR Flash 时可以使用cp 命令(cp 根据地址分辨
出是NOR Flash,从而调用NOR Flash 驱动完成写操作)。
直接运行“flinfo”即可看到NOR Flash 的信息,有NOR Flash 的型号、容量、各扇区的
开始地址、是否只读等信息。
对于只读的扇区,在擦除、烧写它之前,要先解除写保护。最简单的命令为“protect off
all”,解除所有NOR Flash 的写保护。
erase 命令常用的格式为“erase start end”,擦除的地址范围为start~end;“erase start +len”,擦除的地址范围为start~(star+tlen?1),“erase all”,表示擦除所有NOR Flash。
*******************************************************
(5)NAND Flash 操作命令。
NAND Flash 操作命令只有一个:nand,它根据不同的参数进行不同操作,比如擦除、
读取、烧写等。
“nand info”查看NAND Flash 信息。
“nand erase [clean] [off size]”擦除NAND Flash。加上“clean”时,表示在每个块的第一
个扇区的OOB 区加写入清除标记;off、size 表示要擦除的开始偏移地址的长度,如果省略
off 和size,表示要擦除整个NAND Flash。
“nand read[.jffs2] addr off size”从NAND Flash 偏移地址off 处读出size 个字节的数据
存放到开始地址为addr 的内存中。是否加后缀“.jffs”的差别只是读操作时的ECC 校验方
法不同。
“nand write[.jffs2] addr off size”把开始地址为addr 的内存中的size 个字节数据写到NAND
Flash 的偏移地址off 处。是否加后缀“.jffs”的差别只是写操作时的ECC 校验方法不同。
“nand read.yaffs addr off size”从NAND Flash 偏移地址off 处读出size 个字节的数据(包
括OOB 区域),存放到开始地址为addr 的内存中。
“nand write.yaffs addr off size”把开始地址为addr 的内存中的size 个字节数据(其中有
要写入OOB 区域的数据)写到NAND Flash 的偏移地址off 处。
“nand dump off”将NAND Flash 偏移地址off 的一个扇区的数据打印出来,包括OOB 数据。
************************************************************
(6)环境变量命令。
“printenv”命令打印全部环境变量,“printenv name1 name2?”打印名字为name1、
name2、?的环境变量。
“setenv name value”设置名字为name 的环境变量的值为value。
“setenv name”删除名字为name 的环境变量。
上面的设置、删除操作只是在内存中进行,“saveenv”将更改后的所有环境变量写入NOR
Flash 中。
**************************************************************
(7)启动命令。
不带参数的“boot”、“bootm”命令都是执行环境变量bootcmd 所指定的命令。
“bootm [addr [arg…]]”命令启动存放在地址addr 处的U-Boot 格式的映象文件(使用
U-Boot 目录tools 下的mkimage 工具制作得到),[arg…]表示参数。如果addr 参数省略,映
象文件所在地址为配置文件中定义的宏CFG_LOAD_ADDR。
“go addr [arg…]”与bootm 命令类似,启动存放在地址addr 处的二进制文件,[arg...]表
示参数。
“nboot [[[loadAddr] dev] offset]”命令将NAND Flash 设备dev 上偏移地址off 处的映象文件复制到内存loadAddr 处,然后,如果环境变量autostart 的值为“yes”,就启动这个映象。
如果loadAddr 参数省略,存放地址为配置文件中定义的宏CFG_LOAD_ADDR;如果dev 参
数省略,则它的取值为环境变量bootdevice 的值;如果offset 参数省略,则默认为0