在学习嵌入式系统移植构建的过程中,如果使用的是win7或者win8下平台进行烧写,会遇到USB下载驱动兼容,从而导致无法使用dnw工具进行烧写。这里我以mini2440开发板为例(mini2440的Nor Flash芯片中默认安装的supervivi程序),总结一下我在学习过程中的无法使用dnw烧写开发板几种解决方案。

mini2440开发板(去除LCD显示器)

mini2440开发板(去除LCD显示器)

总体来说,分为两种:

  • 1.使用网络下载
  • 2.使用Linux下的dnw工具。

下面是我个人总结几种方案:

1.使用JTag 或者 Jlink将Nor flash烧写u-boot,然后使用u-boot的网络下载(tftp/nfs)进行烧写。

烧写uboot方法可以参考mini2440开发板附带光盘资料。

烧写完成之后,通过TFTP或者NFS对Nand Flash烧写。烧写步骤(具体文件可以使用光盘自带的bootloader/kernel/fs,并放到对应目录下)如下:

  1. 1.1 TFTP
  2. bootloader:
  3. tftp 0x30000000 u-boot.bin
  4. nand erase 0x0
  5. nand write.jffs2 0x30000000 0x0 0x100000
  6. kernel:
  7. tftp 0x30000000 uImage
  8. nand erase 0x100000
  9. nand write.jffs2 0x30000000 0x100000 0x300000
  10. fs:
  11. tftp 0x30000000 fs_qtopia.jffs2
  12. nand erase 0x400000
  13. nand write.yaffs 0x30000000 0x400000 $(filesize)
  14. 1.2 NFS
  15. bootloader:
  16. nfs 0x30000000 192.168.1.18:/work/nfs_root/u-boot.bin
  17. nand erase 0x0
  18. nand write.jffs2 0x30000000 0x0 0x100000
  19. kernel:
  20. nfs 0x30000000 192.168.1.18:/work/nfs_root/uImage
  21. nand erase 0x100000
  22. nand write.jffs2 0x30000000 0x100000 0x300000
  23. fs:
  24. nfs 0x30000000 192.168.1.18:/work/nfs_root/fs_qtopia.jffs2
  25. nand erase 0x400000
  26. nand write.yaffs 0x30000000 0x400000 $(filesize)
  • 优点:方便,省心,我在很长一段时间内采用这种方法。
  • 缺点:文件系统一般比较大,对于有的文件系统可能大于我们的SDRAM大小,比如我这款开发板,SDRAM为64MB,而光盘附带的一个文件系统为90多MB,显然不能采用这种方法烧写。

2.借助一台xp平台机子借助Nor flash中自带的supervivi通过dnw向NandFlash烧写好uboot之后,然后从nandflash启动,使用nandflash的uboot烧写kernel和fs。

方法同上。

  • 优点:在学习裸板程序时推荐这种方法,可以使用loadb命令,通过串口kermit协议使用超级终端或者SecureCRT发送二进制文件烧写,使用go命令执行烧写到SDRAM中二进制文件。
  • 缺点:需要借助其他机子,特别是对于使用笔记本的朋友们来说不方便。

3.使用Linux下的dnw,前提条件是我们在机子上安装了vmware workstation虚拟机。

Linux下dnw文件下载:http://www.kuaipan.cn/file/id_22375181884326192.htm

下载后将dnw文件放到/usr/bin或者/bin等PATH环境变量指定的目录中,并且赋予可执行权限,建议赋予s权限,特别是ubuntu Linux用户。

我们可以从Norflash启动,然后将虚拟机软件置于前台(关键步骤),就是当前桌面为虚拟机桌面,然后再连接usb线到我们的电脑上,这样,usb会自动连接到虚拟机中的Linux,这样是不需要安装驱动的。如果没有,可以在虚拟机菜单栏VM->Removable Device中找到该设备选择连接虚拟机。但是这种方法有时不如第一种方法有效,推荐先将虚拟机桌面置于当前桌面,然后再连接USB传输线。

然后使用supervivi,选择相应选项后,通过如下命令进行传输烧写。

supervivi启动界面

supervivi启动界面

  1. dnw 文件名称

比如烧写bootloader,在supervivi界面中选择v,然后使用如下命令烧写:

  1. dnw u-boot.bin

烧写成功后会看到如下提示:

  1. [root@localhost ~]# dnw u-boot.bin
  2. DNW usb device found!
  3. Size of file: 137892 byte(s)
  4. Address of bootloader to receive data: 0x30000000
  5. Tx: 137902/137902, Percentage: 100.0%, Speed: 174.8KB/s, Time: 0.8S
  6. [root@localhost ~]#

这时我们关闭开发板,然后选择Nand Flash启动,重新上电后可以看到Nand Flash中已经烧写成功uboot。接下来既可以选择通过网络,也可以继续选择Linux下的dnw烧写kernel和fs。

  • 优点:对于笔记本用户来说特别方便,不需要借助台式机的并口,使用Jtag烧写supervivi。也不需要借助xp平台机子。
  • 缺点:需要熟悉使用Linux,注意要将虚拟机软件置于前台。同时推荐超级终端可以使用Linux下的minicom,这样省去在虚拟机和实体机之间的切换。

总结:上述几种方法,最重要的是烧写Nand Flash中的bootloader,建议使用第三种方法,十分便捷。

方法三参考自韦东山老师的资料。由于我也算是一个嵌入式系统移植的菜鸟,如果有什么不正确的地方,希望通过搜索引擎搜索到的朋友们可以给我指出。也欢迎嵌入式爱好者朋友们和我交流。邮箱地址:xiaofei9670#foxmail.com(把#换成@)

win7/win8系统下无法使用dnw通过USB传输线烧写的几种解决方案
Tagged on:     

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.