天嵌 ARM开发社区

 找回密码
 注册
查看: 10291|回复: 33

Linux下使用DNW工具通过USB下载镜像

[复制链接]
haichang417 发表于 2010-7-27 19:10:09 | 显示全部楼层 |阅读模式
本帖最后由 haichang417 于 2010-7-27 19:15 编辑

本人Linux是Fedora 13,也是最近安装的(以前用Ubuntu,因为配置环境太麻烦了,总有意想不到的问题出现)。因为我是非虚拟机安装,又懒的总插拔网线,所以想用USB下载镜像,毕竟不可能每次编译完了,又重启进win去下载吧。。。
        在网上找到一个dnw for Linux。共享给大家。。。(源码在附件里)
       
        (secbulk目录下是PC端USB驱动, dnw目录是下载工具)

1.首先解压缩文件:
  1. # tar xvf dnw_for_linux.tar.gz
复制代码
2.然后切换到下面的目录,编译usb驱动模块:
  1. # cd dnw_for_linux/secbulk
  2. # make -C /lib/modules/2.6.33.6-147.fc13.i686/build/ M=/home/lhc/Desktop/dnw_for_linux/secbulk/ modules
复制代码
注意:相应路径要替换成你机器的路径。/lib/modules/2.6.33.6-147.fc13.i686/build/目录中“2.6.33.6-147.fc13.i686”是当前启动内核版本,如果你是多内核要注意了(不确定可以终端uname -r命令查看内核版本)。
       
3.编译完成后,会生成secbulk.ko文件:
  1. # ls
  2. Makefile       Module.symvers  secbulk.ko     secbulk.mod.o
  3. modules.order  secbulk.c       secbulk.mod.c  secbulk.o
复制代码
4.加载模块到Linux内核:
  1. # insmod ./secbulk.ko        (注意要在root权限下)
  2. # dmesg        (查看是否加载成功)
  3. secbulk:secbulk loaded
  4. usbcore: registered new interface driver secbulk        (看到这样两行就说明成功了)
复制代码
5.下面开始编译dnw工具
  1. # cd ../dnw
  2. # gcc -o dnw dnw.c
复制代码
(编译完成,会看到dnw可执行文件)

6.将文件copy到/usr/local/bin目录
  1. # cp dnw /usr/local/bin
复制代码
(这样就可以在shell下面直接使用dnw命令了)

使用方法如下:
1.在minicom下,从Nor Flash启动TQ2440,选择3功能:
  1. [3] Download Linux Kernel (zImage.bin) to Nand Flash
复制代码
2.此时,打开另一个终端:
  1. # su
  2. # dnw work/linux-2.6.30.4/zImage.bin
  3. file name : work/linux-2.6.30.4/zImage.bin
  4. file size : 2305544 bytes
  5. Writing data...
  6. 100%     2305554 bytes     OK        (此时就将zImage镜像下载到开发板了)
复制代码
3.再看下minicom的输出信息
  1. Enter your selection: 3                                                         
  2. USB host is connected. Waiting a download.                                      
  3.                                                                                 
  4. Now, Downloading [ADDRESS:30000000h,TOTAL:2305554]                              
  5. RECEIVED FILE SIZE: 2305554 (562KB/S, 4S)                                       
  6.                                                                                 
  7. NAND erase: device 0 offset 0x200000, size 0x300000                             
  8. Erasing at 0x4e0000 -- 100% complete.                                          
  9. OK                                                                              
  10.                                                                                 
  11. NAND write: device 0 offset 0x200000, size 0x232e08                             
  12.                                                                                 
  13. Writing data at 0x432800 -- 100% complete.                                      
  14. 2305544 bytes written: OK
复制代码
(到此烧写完毕!!!!可以重启验证下)

        不过每次开机都要加载一次那个.ko模块,大家可以自己将它写到开机脚本里,省去了每次都要手动加载的麻烦!
        (第二次发新帖咯,,,有什么问题希望大家多多交流,THKS Everyone)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1 +10 收起 理由
dongdonggo + 10 很给力!

查看全部评分

 楼主| haichang417 发表于 2010-7-27 19:19:12 | 显示全部楼层
本帖没有针对谁的意思阿,就是想分享给大家。。。我也是菜鸟一只。。。
jzshi 发表于 2010-8-13 15:48:59 | 显示全部楼层
看样子Linux下用DNW的并不太多,不过还是很有用的。
anqi8955 发表于 2010-8-13 16:08:45 | 显示全部楼层
dnw还是很有用的,如果你不能用jtag只能用这个了
 楼主| haichang417 发表于 2010-8-13 22:41:29 | 显示全部楼层
本帖最后由 haichang417 于 2010-8-13 22:45 编辑

谢谢大家!还有个问题提醒一下,就是尽量不要升级系统的内核,因为这个模块是编译到内核的,如果升级了内核,需要重新编译usb模块。
guowenmoon 发表于 2010-8-22 17:13:15 | 显示全部楼层
很好很强大!谢谢楼主啦  !!!
我也是装了双系统用,之前就是没有dnw for linux 很麻烦  嘿嘿  只好在虚拟机上弄了
不过现在少用了,之前那个都做过了,现在有没有再去做镜像
zhaixingchen 发表于 2010-8-25 10:22:03 | 显示全部楼层
本帖没有针对谁的意思阿,就是想分享给大家。。。我也是菜鸟一只。。。
haichang417 发表于 2010-7-27 19:19

谢谢楼主分享,这么好的事为何这么敏感啊
天嵌_support1 发表于 2010-8-25 10:37:08 | 显示全部楼层
1# haichang417


很好阿!多谢分享!
feixue2588 发表于 2010-9-4 13:49:19 | 显示全部楼层
thanku:):victory::victory::victory:
lishiyong110 发表于 2010-9-5 13:21:00 | 显示全部楼层
真的是非常好的东西 thanks
 楼主| haichang417 发表于 2010-9-5 22:17:06 | 显示全部楼层
7# zhaixingchen

呵呵,没有。只是见论坛里有人说不存在linux下的dnw工具,给他证明下是存在的。。
simple_do 发表于 2010-9-11 13:21:52 | 显示全部楼层
楼主帮忙研究下linux的网络下载 我怎么都ping不通Linux
天嵌_support1 发表于 2010-9-11 16:22:38 | 显示全部楼层
12# simple_do

看看用户手册的

5.1.12 网络设置实验
hnk 发表于 2010-9-12 16:00:07 | 显示全部楼层
[root@localhost secbulk]# make -C /lib/modules/2.6.18-164.el5/build/ M=/root/Desktop/dnw_for_linux/secbulk/ modules
make: Entering directory `/usr/src/kernels/2.6.18-164.el5-i686'
  CC [M]  /root/Desktop/dnw_for_linux/secbulk/secbulk.o
/root/Desktop/dnw_for_linux/secbulk/secbulk.c: In function ‘secbulk_write’:
/root/Desktop/dnw_for_linux/secbulk/secbulk.c:58: 警告:比较不相关的指针时缺少类型转换
/root/Desktop/dnw_for_linux/secbulk/secbulk.c: 在顶层:
/root/Desktop/dnw_for_linux/secbulk/secbulk.c:184: 错误:初始值设定项里有未知的字段 ‘supports_autosuspend’
/root/Desktop/dnw_for_linux/secbulk/secbulk.c:184: 警告:初始值设定周围缺少花括号
/root/Desktop/dnw_for_linux/secbulk/secbulk.c:184: 警告:(在 ‘secbulk_driver.dynids’ 的初始化附近)
 楼主| haichang417 发表于 2010-9-17 19:29:51 | 显示全部楼层
14# hnk


可能因为你的内核版本比较低,建议升级到最新内核再编译。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-20 09:55 , Processed in 1.031250 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表