*使用 JLink 烧写 Nor Flash
JLink 只支持烧写 Nor Flash,不支持烧写 Nand Flash。要烧写 Nand Flash 只能按这几步
操作:
1. 开发板设为 Nor Flash 启动(开发板有选择 Nor Flash 或 Nand Flash 启动的开关)
2. 接好 JLlink 后, 用 JLink 的软件 J-Flash 烧写百问网特制的 u-boot.bin 到 Nor Flash 上去
3. 重启开发板,在串口里操作 u-boot 烧写 Nand Flash
下面烧写
操作:
1. 开发板设为 Nor Flash 启动(开发板有选择 Nor Flash 或 Nand Flash 启动的开关)
2. 接好 JLlink 后, 用 JLink 的软件 J-Flash 烧写百问网特制的 u-boot.bin 到 Nor Flash 上去
3. 重启开发板,在串口里操作 u-boot 烧写 Nand Flash
下面烧写
1. 准备工作: JLink 的 USB 口接到电脑上, JLink 的 JTAG 口用排线和开发板的 JTAG 口相
连,开发板设为 Nor Flash 启动并上电
2. 启动 J-Flash。
在 J-Flash 里操作:
1.选择菜单“ File -> Open -> Open Project…”,打开附件里的 s3c2440.jflash。
连,开发板设为 Nor Flash 启动并上电
2. 启动 J-Flash。
在 J-Flash 里操作:
1.选择菜单“ File -> Open -> Open Project…”,打开附件里的 s3c2440.jflash。
2.选择菜单“ Target -> Connect”。
3. 选择菜单“ File -> Open”,打开要烧写的二进制文件,比如 u-boot.bin,并且在“ Start
address”里输入 0。
4. 选择菜单“ Target -> Auto”即可自动烧写。
*在 Linux 下使用 dnw 和 u-boot 烧写系统
在 Linux 下使用 dnw 无需安装驱动, 将光盘 linux/tools 目录下的 dnw 文件复制到主机
/usr/bin 目录下,如下修改属性即可:
sudo chmod +x /usr/bin/dnw
dnw 命令本身的使用方法为(注意:要发送成功,单板必须运行具有 USB 下载功能的
bootloader):
sudo dnw <file> [address]
这个命令将文件<file>通过 USB 口发送到单板上, [address]是可选项,默认值是
0x30000000, 它表示这个文件想存放到 SDRAM 的位置; bootloader 会自己决定把文件保存
在 SDRAM 哪里,是否使用[address]取决于 bootloader。
在 Linux 下使用 dnw 无需安装驱动, 将光盘 linux/tools 目录下的 dnw 文件复制到主机
/usr/bin 目录下,如下修改属性即可:
sudo chmod +x /usr/bin/dnw
dnw 命令本身的使用方法为(注意:要发送成功,单板必须运行具有 USB 下载功能的
bootloader):
sudo dnw <file> [address]
这个命令将文件<file>通过 USB 口发送到单板上, [address]是可选项,默认值是
0x30000000, 它表示这个文件想存放到 SDRAM 的位置; bootloader 会自己决定把文件保存
在 SDRAM 哪里,是否使用[address]取决于 bootloader。
下面以例子说明如何烧写系统:
① 烧写内核:
a. 在 u-boot 菜单界面输入“ k”;
b. 在主机上执行 sudo dnw uImage_4.3;
c. 在 u-boot 界面即可看到下载、烧写的提示信息。
② 烧写 YAFFS 文件系统映象:
a. 在 u-boot 菜单界面输入“ y”;
b. 在主机上执行 sudo dnw fs_qtopia_ts.yaffs2;
c. 在 u-boot 界面即可看到下载、烧写的提示信息。
③ 烧写 JFFS2 文件系统映象:
a. 在 u-boot 菜单界面输入“ j”;
b. 在主机上执行 sudo dnw fs_qtopia_ts.jffs2;
c. 在 u-boot 界面即可看到下载、烧写的提示信息。
④ 下载文件的 SDRAM 并运行:
a. 在 u-boot 菜单界面输入“ d”;
b. 在主机上执行 sudo dnw leds_0x31000000.bin 0x31000000;
c. 在 u-boot 界面即可看到下载、运行信息: u-boot 会把接收到的文件放在步骤 b 设置的地
址里,然后跳转去执行它。
⑤ 更新 u-boot:
a. 在 u-boot 菜单界面输入“ n”;
b. 在主机上执行 sudo dnw u-boot.bin;
c. 在 u-boot 界面即可看到下载、烧写的提示信息。
*用Tftp 下载(在linux 下安装了Tftp 服务)
a 打开windows下Tftp 软件 选择 PC机IP地址和源文件路径。
b 在 串口下 输入q-》print 查看 开发板和服务器IP
命令:
bootargs=noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0
bootdelay=2
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
netmask=255.255.255.0
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
ipaddr=192.168.1.12
serverip=192.168.1.100
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bootloader
filesize=0
bootcmd=nand read.jffs2 0x30007FC0 kernel; bootm 0x30007FC0
bootdelay=2
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
netmask=255.255.255.0
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
ipaddr=192.168.1.12
serverip=192.168.1.100
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bootloader
filesize=0
OpenJTAG> set ipaddr 192.168.1.12
OpenJTAG> set serverip 192.168.1.101
OpenJTAG> save
OpenJTAG> set serverip 192.168.1.101
OpenJTAG> save
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done
OpenJTAG> tftp 30000000 uImage_4.3
Erasing Nand...Writing to Nand... done
OpenJTAG> tftp 30000000 uImage_4.3
ERROR: resetting DM9000 -> not responding
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
TFTP from server 192.168.1.101; our IP address is 192.168.1.12
Filename 'uImage_4.3'.
Load address: 0x30000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#####################################
done
Bytes transferred = 1848732 (1c359c hex)
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
TFTP from server 192.168.1.101; our IP address is 192.168.1.12
Filename 'uImage_4.3'.
Load address: 0x30000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#####################################
done
Bytes transferred = 1848732 (1c359c hex)
出现这个下载成功
OpenJTAG> mtdpart(显示有哪些分区)
device nand0 <nandflash0>, # parts = 4
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: kernel 0x00200000 0x00060000 0
3: root 0x0fda0000 0x00260000 0
active partition: nand0,0 - (bootloader) 0x00040000 @ 0x00000000
defaults:
mtdids : nand0=nandflash0
mtdparts: mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
device nand0 <nandflash0>, # parts = 4
#: name size offset mask_flags
0: bootloader 0x00040000 0x00000000 0
1: params 0x00020000 0x00040000 0
2: kernel 0x00200000 0x00060000 0
3: root 0x0fda0000 0x00260000 0
active partition: nand0,0 - (bootloader) 0x00040000 @ 0x00000000
defaults:
mtdids : nand0=nandflash0
mtdparts: mtdparts=nandflash0:256k@0(bootloader),128k(params),2m(kernel),-(root)
开始烧写步骤
烧写内核
OpenJTAG> nand erase kernel
NAND erase: device 0 offset 0x60000, size 0x200000
Skipping bad block at 0x00140000
Erasing at 0x240000 -- 100% complete.
OK
OpenJTAG> nand write.jffs2 30000000 kernel
NAND erase: device 0 offset 0x60000, size 0x200000
Skipping bad block at 0x00140000
Erasing at 0x240000 -- 100% complete.
OK
OpenJTAG> nand write.jffs2 30000000 kernel
NAND erase: device 0 offset 0x60000, size 0x200000
Skipping bad block at 0x00140000
Erasing at 0x240000 -- 100% complete.
OK
OpenJTAG> nand write.jffs2 30000000 kernel
NAND write: device 0 offset 0x60000, size 0x200000
Bad block at 0x140000 in erase block from 0x140000 will be skipped
Writing data at 0x27f800 -- 100% complete.
2097152 bytes written: OK
Skipping bad block at 0x00140000
Erasing at 0x240000 -- 100% complete.
OK
OpenJTAG> nand write.jffs2 30000000 kernel
NAND write: device 0 offset 0x60000, size 0x200000
Bad block at 0x140000 in erase block from 0x140000 will be skipped
Writing data at 0x27f800 -- 100% complete.
2097152 bytes written: OK
烧写内核成功
烧写 YAFFS 文件系统映象:
OpenJTAG> tftp 30000000 fs_qtopia.yaffs2
ERROR: resetting DM9000 -> not responding
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
TFTP from server 192.168.1.101; our IP address is 192.168.1.12
Filename 'fs_qtopia.yaffs2
ERROR: resetting DM9000 -> not responding
dm9000 i/o: 0x20000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:00:3e:26:0a:5b
could not establish link
TFTP from server 192.168.1.101; our IP address is 192.168.1.12
Filename 'fs_qtopia.yaffs2
Load address: 0x30000000
Loading: #################################################################
#################################################################
#################################################################
Loading: #################################################################
#################################################################
#################################################################
done
Bytes transferred = 49769280 (2f76b40 hex)
Bytes transferred = 49769280 (2f76b40 hex)
OpenJTAG> nand erase root
OpenJTAG> nand write.yaffs 30000000 0x00260000 $(filesize)
下一步重启即可看见QT界面