终于摆脱windows能在纯净的linux开发了

原文: http://www.arm9home.net/read.php?tid-7398.html


因为dnw和jlink的关系,不得不在windows里装linux的虚拟机进行开发。而因为自己的pc太差,不能用vmware,我用的是virtualbox。虽然性能什么还可以,但有时候会突然崩溃,感觉还是不够稳定。

今天终于解决了这两大问题。

1.dnw下载程序的问题。
   在arm9home 里网络达人 hulifox008 开发了linux版 的dnw2,自己用了一下,速度很快。而且不是三星dnw的图形界面,很爽。
  想想自己对usb应该说也是半个专家了,怎么就不去开发一个这样的玩意呢?看看 hulifox008 写的代码就一个文件,很短啊 。当然他好像是调用了libusb的库的。之前的版本好像复杂一点。有空要好好看看。

  hulifox008 的帖子:http://www.arm9home.net/read.php?tid-1502.html

发生的问题:
编译之前按作者说明要装libusb和libusb-dev。但因为 apt-get 弄不到 前者,所以只装了后者,发现也行。

2.jlink的问题。
之前网上很多人说jlink只能用在windows下,自己买板子的时候那个卖家甚至也是这么对我说的。
  幸亏我一次在 帖子“请教JLINK V7支持Linux下用openOCD吗(http://www.ourdev.cn/bbs /bbs_content.jsp?bbs_sn=3263282&bbs_page_no=1&search_mode=4& search_text=crifan&bbs_id=9999)?”里看到 网友 jordonwu的话 ,顺着他的话,找到了 segger 网站(http://www.segger.com/cms/jlink-software.html ),其中Beta software version for Linux 是也!
我在ubuntu下试了下,用起来除了jlnkGDBserver是command界面,其他和 windows版的无异。

发生的问题:按照README的步骤,还是要装libusb,之前dnw安装的时候没装看来还是躲不掉的,欠债总归要还得。没办法下了 源代码进行编译。一路成功,但是运行的时候发生了 如下错误:
./JLinkExe: error while loading shared libraries: libjlinkarm.so.0: cannot open shared object file: No such file or directory。
我一开始以为是 动态加载库没有进去的关系,所以把当前路径也加到 了LD_LIBRARY_PATH这个变量中去,发现还是不行。(参考:http://blog.csdn.net/wwwsq/archive/2006/09/21/1256577.aspx [Linux] 如何让linux加载当前目录的动态库)
因为原来提供的文件 里没有 libjlinkarm.so.0,倒是有 libjlinkarm.so.0.0. 又怀疑是 要做个软连接libjlinkarm.so.0,好像还是不行。
最后网上查了查,按照 http://www.segger2.com/index.php?page=Thread&postID=1032 帖子里的说法,把后者改名为前者就ok了。 这个网址也是讲这个问题:http://www.droidream.com/

3.看代码的问题。
windows上有source insight 。好用啊。最近发现linux也有这样的工具---KScope,简直就是linux上的source insight 。它用的也是基于Cscope引擎来做的,但比同样基于它的chrowser好用很多,要么是我不会用的关系。KScope的用法就不说了,因为和 source insight是一样的。
安装的时候倒是出现了如下错误:
kscope: error while loading shared libraries: libkateinterfaces.so.0: cannot open shared object file: No such file or directory。
怎么办,还是放狗。呵呵。
http://packages.debian.org/lenny/i386/kate/download下载kate_3.5.9.dfsg.1-6_i386.deb。
然后:
$ar x kate_3.5.9.dfsg.1-6_i386.deb
$tar xzf data.tar.gz
$cp usr/lib/libkateinterfaces.so.0.0.0 /usr/local/lib/libkateinterfaces.so.0
$cp usr/lib/libkateutils.so.0 /usr/local/lib/libkateutils.so.0
$ldconfig

原文我写在:http://blog.chinaunix.net/u3/97851/showart_2292744.html


华丽的分割线========================================================================

在linux中dnw下载

原文: http://shundacao.blog.163.com/blog/static/1340404812010102123259108/

从做完就在搞这个问题,一共有三种方案,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来调用


分割线==================================

嵌入式学习计划-->

http://shundacao.blog.163.com/blog/static/134040481201011114442492/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值