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

来源:互联网 发布:达内 测计网络营 编辑:程序博客网 时间:2024/05/16 11:52

*使用 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界面















0 0
原创粉丝点击