您的位置:首页 > 运维架构 > Linux

JZ2440如何烧写裸板程序,在 Linux 下使用 dnw 和 u-boot 烧写系统 和 用Tftp 下载

2015-04-09 11:46 246 查看
*使用
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.
准备工作:
JLink 的
USB 口接到电脑上,
JLink 的
JTAG 口用排线和开发板的
JTAG 口相

连,开发板设为 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。



下面以例子说明如何烧写系统:



① 烧写内核:

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



OpenJTAG> set ipaddr 192.168.1.12

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


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)



出现这个下载成功

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)



开始烧写步骤
烧写内核


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 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


Load address: 0x30000000

Loading: #################################################################

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

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


done

Bytes transferred = 49769280 (2f76b40 hex)


OpenJTAG> nand erase root



OpenJTAG> nand write.yaffs 30000000 0x00260000 $(filesize)



下一步重启即可看见QT界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: