linux下使用dnw烧写及其出现问题的解答

来源:本站
导读:目前正在解读《linux下使用dnw烧写及其出现问题的解答》的相关信息,《linux下使用dnw烧写及其出现问题的解答》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《linux下使用dnw烧写及其出现问题的解答》的详细说明。
简介:从做完就在搞这个问题,一共有三种方案,dnw和dnw2还有usb2ram。

第一种需要加载驱动,后面两种需要安装libusb-dev.其中第二种的烧写速度很快,我都能听到电流声.但是也很不稳定.经常出现的提示是:

"usb_bulk_write failed: Resource temporarily unavailable"

从提示的信息来看是烧写的文件大于容量了.但是实际情况没有,原因不明.有人说是每次烧写都要重新插拔一次usb.

usb2ram提示的信息是找不到设备,原因不明

========================================

使用dnw2经常出现的错误提示是:

Target usb device found!

Cannot claim interface: Device or resource busy

========================================================

我后来还是使用的第一种方法,加载驱动:

方法是:

1. 下载Linux下DNW的PC端USB驱动和写入工具

文件名: dnw_linux.zip

下载后把后缀名改成.tgz

#或者搜索 linux dnw

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

==========================

使用dmesg查看是否成功加载驱动很重要,如果没有这步,会提示说"Can not open /dev/secbulk0 "

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

$sudo insmod ./secbulk.ko 为加载模块进内核

开机的时候不会自动加载,这样每次都要先加载才可以使用,此时将其加入开机脚本,使其得到自动加载,编辑/etc/init.d/rc.local 在最后加上 insmod /所在路径/secbulk.ko。

#调用dnw时只能在当前目录使用./dnw执行,对此情况,将dnw添加到/usr/local/sbin中,这样可以在任何目录,使用 sudo dnw filename来调用。

提醒:《linux下使用dnw烧写及其出现问题的解答》最后刷新时间 2024-03-14 01:03:11,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《linux下使用dnw烧写及其出现问题的解答》该内容的真实性请自行鉴别。