主题 : 摆脱DNW蓝屏死机 - 在LINUX环境下使用USB + vivi 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 412
精华: 1
发帖: 6
金钱: 75 两
威望: 17 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2008-03-28
最后登录: 2017-09-13
楼主  发表于: 2008-04-03 23:26

 摆脱DNW蓝屏死机 - 在LINUX环境下使用USB + vivi

管理提醒: 本帖被 qq2440 执行置顶操作(2009-12-07)
我学习ARM刚起步~~在烧写内核时遇到点麻烦
在LINUX下怎么用USB电缆给板子传文件阿,我用串口传文件系统,50多M的东西,慢死了~

我已经抛弃WINDOWS很久~不想再回去了

(注: PC端DNW工具已更新,最新版工具无需加载secbulk USB驱动,基于libusb实现,下载速度更稳定,详细内容见http://www.arm9home.com/bbs/read.php?tid-1502.html
以下为旧版基于secbulk USB驱动实现)
[ 此帖被kasim在2009-09-27 12:05重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5407
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11054 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2008-04-04 08:30
引用楼主eckert于2008-04-03 23:26发表的 如何在LINUX环境下使用USB电缆 :
我学习ARM刚起步~~在烧写内核时遇到点麻烦
在LINUX下怎么用USB电缆给板子传文件阿,我用串口传文件系统,50多M的东西,慢死了~

我已经抛弃WINDOWS很久~不想再回去了


很高兴看到有人抛弃Windows:)
在Linux下用通过USB下载文件系统的image需要bootload端和PC端都支持某种USB驱动,就像目前WIndows下安装的SEC S3C2410X驱动。目前友善之臂提供的SuperVIVI只支持这种USB驱动(从三星开发的USBMon移植而来),PC端也只有Windows平台下的支持。如果你熟悉USB驱动,你可以试着把Windows下的SEC S3C2410X驱动(光盘的USB驱动目录下)移植到Linux(或者找到Linux版)下,这样可以不用修改Bootloader。

另外,OpenMoko开发了一个支持S3C2410/2440 USB的U-Boot(http://wiki.openmoko.org/wiki/U-boot#Device_Firmware_Upgrade),和PC端工具DFU(http://wiki.openmoko.org/wiki/USB_DFU)。我前一阶段已经把这个U-Boot移植到了QQ2440上,源代码补丁在https://opencsbc.svn.sourceforge.net/svnroot/opencsbc/trunk/target/u-boot/patches/


感谢hulifox008,现在我们可以在Linux环境下适用DNW + vivi USB下载。使用方法如下:

(注: PC端DNW工具已更新,最新版工具无需加载secbulk USB驱动,基于libusb实现,下载速度更稳定,详细内容见http://www.arm9home.com/bbs/read.php?tid-1502.html
以下为旧版基于secbulk USB驱动实现)

1. 下载Linux下DNW的PC端USB驱动和写入工具
下载地址: http://arm9home.com/bbs/job.php?action=download&pid=tpc&tid=817&aid=86
文件名: dnw_linux.zip
下载后把后缀名改成.tgz

2. 编译PC端USB驱动和写入工具
2.1 解压缩
$ tar xzvf /path/to/dnw_linux.tgz
dnw_linux/
dnw_linux/secbulk/
dnw_linux/secbulk/Makefile
dnw_linux/secbulk/secbulk.c
dnw_linux/dnw/
dnw_linux/dnw/dnw.c

其中secbulk.c是PC端USB驱动, dnw.c是写入工具

2.2 编译并加载secbulk.c内核模块
$cd secbulk
$make -C /lib/modules/`uname -r`/build M=`pwd` modules

编译成功后在当前目录下可以看到secbulk.ko
alex@alex-desktop:~/project3/qq2440/dnw_linux/dnw_linux/secbulk$ ls
Makefile  Module.symvers  secbulk.c  secbulk.ko  secbulk.mod.c  secbulk.mod.o  secbulk.o

用insmod命令加载模块,这需要root权限
$sudo insmod ./secbulk.ko

加载后用dmesg命令可以看到模块已经成功加载
[  238.007970] secbulk:secbulk loaded
[  238.009101] usbcore: registered new interface driver secbulk

2.3 编译dnw写入工具
$cd dnw
$gcc -o dnw dnw.c
编译成功后生成可执行档dnw


3 使用DNW下载
3.1 启动开发板,进入Supervivi,并将开发板和PC用USB电缆连接,此时用dmesg命令可以看到secbulk驱动加载:
[  283.677772] usb 1-1: new full speed USB device using uhci_hcd and address 2
[  284.084835] usb 1-1: configuration #1 chosen from 1 choice
[  284.140430] secbulk:secbulk probing...
[  284.140482] secbulk:bulk out endpoint found!

3.2 此时可以用supervivi进行USB下载,vivi上步骤请参考用户手册,当出现“USB host is connected. Waiting a download.”时,在PC端Linux上用dnw工具写入要下载的文件
$sudo ./dnw /path/to/what/you/want/download

写入完成后提示成功
100%    xxxxxxx bytes    OK


再次感谢hulifox008,玩Linux我们就需要这种DIY精神, 和Window蓝屏死机说再见吧!
[ 此帖被kasim在2009-04-12 10:30重新编辑 ]
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 412
精华: 1
发帖: 6
金钱: 75 两
威望: 17 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2008-03-28
最后登录: 2017-09-13
2楼  发表于: 2008-04-04 09:40
谢谢kasim那么快的回复!
本人水平有限,要移植驱动还得学习一段时间。

看了老外的DFU介绍,似乎可行,我去试试先~
级别: 新手上路
UID: 412
精华: 1
发帖: 6
金钱: 75 两
威望: 17 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2008-03-28
最后登录: 2017-09-13
3楼  发表于: 2008-04-04 11:10
无奈了~~
下载dfu_util的二进制文件版本,运行显示 cannot execute binary file
然后下载dfu_util源码版本,配置./configure 时报错 configure: error: *** Required libusb >= 0.1.4 not installed ***

我 装有libusb0.1.12 莫非不向下兼容0.1.4版本的?
我的系统是Fedora7

自己水平还是不够阿~
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5407
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11054 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2008-04-04 11:45
引用第3楼eckert于2008-04-04 11:10发表的  :
无奈了~~
下载dfu_util的二进制文件版本,运行显示 cannot execute binary file
然后下载dfu_util源码版本,配置./configure 时报错 configure: error: *** Required libusb >= 0.1.4 not installed ***

我 装有libusb0.1.12 莫非不向下兼容0.1.4版本的?
.......


编译源代码需要的是libusb对应的头文件和.pc文件,在我用的ubuntu上包含在libusb-dev包里,Fedora 7我不清楚需要安装哪个package
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 412
精华: 1
发帖: 6
金钱: 75 两
威望: 17 点
贡献值: 0 点
综合积分: 32 分
注册时间: 2008-03-28
最后登录: 2017-09-13
5楼  发表于: 2008-04-04 11:50
谢谢~我继续研究~
级别: 侠客
UID: 944
精华: 3
发帖: 71
金钱: 22760 两
威望: 4838 点
贡献值: 20 点
综合积分: 202 分
注册时间: 2008-06-27
最后登录: 2017-07-16
6楼  发表于: 2008-11-04 20:57
我正在尝试在linux下编写模拟windows的secbulk驱动。配合supervivi,在linux下能烧写内核和文件系统。目前的情况来看,windows下的dwn程序就是把代写入的文件加上一个头和一个checksum的尾部,将整个数据通过bulk out pipe 传输给2440。头部包括一个写入地址和一个文件大小。正在尝试中,大家有什么想法,欢迎哦。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5407
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11054 分
注册时间: 2008-01-16
最后登录: 2014-11-22
7楼  发表于: 2008-11-05 07:45
支持DIY!
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 2285
精华: 0
发帖: 1
金钱: 10 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2008-11-07
最后登录: 2010-05-25
8楼  发表于: 2008-11-08 22:06
引用第1楼kasim于2008-04-04 08:30发表的  :


很高兴看到有人抛弃Windows:)
在Linux下用通过USB下载文件系统的image需要bootload端和PC端都支持某种USB驱动,就像目前WIndows下安装的SEC S3C2410X驱动。目前友善之臂提供的SuperVIVI只支持这种USB驱动(从三星开发的USBMon移植而来),PC端也只有Windows平台下的支持。如果你熟悉USB驱动,你可以试着把Windows下的SEC S3C2410X驱动(光盘的USB驱动目录下)移植到Linux(或者找到Linux版)下,这样可以不用修改Bootloader。

.......

请问你的补丁文件是uboot-qq2440.patch吗?对应的U-Boot是哪个版本呢?该如何patch,请指教,多谢。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5407
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11054 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2008-11-09 09:14
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."