|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 h& n. d; Y- {) ]2 l, P一直在Windows下开发,某些bug总是使我不能全心全意的信任Windows,从开发嵌入式开始,一直就想把开发环境转移到Linux环境下,特别是下载程序的时候,不过确实有Linux的开发环境,就拿下载程序来说,Linux下的minicom和dnw真的是很好用,同时也可以学习源代码。下面教你如何下载、安装、使用dnw。
+ r8 a& P; _2 |
: ?5 z: D3 K6 L1 c" o3 T3 B1. dnw由两部分构成:USB驱动和下载工具,USB驱动便是secbulk文件夹,下载工具是DNW文件夹
# l$ S# r2 z& t* R( w
# `/ `; y& g- i0 W* ^2 E2. 安装dnw
5 B7 T& p. z8 L1 R4 V. |6 z% r5 S$ N
解压缩,之后会看到dnw_linux文件夹,进入该文件夹, Q1 K+ d' s; {
, L4 c X5 i" Y9 Q6 D $ cd dnw_linux
$ a1 ~, |0 A% y+ T$ t8 C5 r3 C0 w4 D) v: N5 p. n" a' }
$ ls
& M; [# R" a5 q2 z) P4 h7 ^% C
6 u$ `; u1 P7 W% j6 r2 E& D& a $ /dnw /secbulk y) Z! ^/ [- m* A% O
) H/ z+ R' }$ `8 L7 y
6 _1 H$ e' q) T" B# H6 D, H: e 2.1 首先修改、编译和安装驱动
% Q6 F1 l3 U5 C8 \ a: s6 J
2 N8 `( n9 E8 O 进入secbulk文件夹,输入编译命令,编译成模块。(我自己修改了Makefile,因此大家只需make就可编译,make clean 就可清除编译。修改后的Makefile如下:
& ?# c; g' v( I1 I5 `& H" S1 y9 a) ^2 y, |4 m5 P7 X
obj-m := secbulk.o
. d" }7 |. \7 I. x4 ]% A: }KDIR := /lib/modules/`uname -r`/build8 g. [" J. U; E ^/ F5 f
PWD := $(shell pwd)6 Z5 [; ?6 e5 k5 m
3 n L8 d1 Q2 [+ n2 \' g6 S
default:6 ?/ E8 J( D, z" i" U
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
_8 }: w* t5 @clean:1 P! `) i7 i, |; |1 e
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
. c" D) v3 ?; i" F- G: T- D6 b0 r6 ^ rm -RF *.order *.symvers8 ^7 t1 u7 P9 H9 l; K& r4 y
在修改secbulk.c中代码,将0x5432改为0x04e8(不同的flash要在那个表单中加入一些设备相关的信息类似ID号,在程序加载的时候自动读取芯片内部ID和这个相比较,没有注册的设备是不会被系统支持的,可以通过lsusb获得idProduct和idVendor,需要在插上板子,并准备下载时此时设备连上时lsusb,0x04e8:0x1234),代码如下:3 i ?1 r M9 }1 ?3 J9 S- D2 M- K& l
! c# k" b& L! L1 ?4 t- t3 i$ a
static struct usb_device_id secbulk_table[]= {
" t( j% C: k2 E1 U: D: ?& C { USB_DEVICE(0x04e8, 0x1234)},
% I, r. ^5 m/ @" \/ |# p { }# J. t8 l( y$ J2 O: d! b, w; |% k
};4 O- Z$ J' c/ @; R6 u3 j: P
2 i% ?+ p, @- g
至此,代码修改完毕!
# T" n4 |# ]9 }7 b. P; ] V. w# }
$ make
# o, h0 ?3 {4 q9 B3 g8 m2 ~# r/ ~9 Z! g, q
之后在文件夹中会有secbulk.ko模块文件,如下图所示:% s N& _0 H! i! F6 Q6 w
: p' G( }6 q; |, P. o: d
0 b; o# P! q% p5 L
1 I- e; D/ a8 V+ @9 u6 `0 l 加载该模块到内核(注意:需要root权限)
$ y" B! j0 ~4 x4 L3 ^# G A% r/ }2 d, b
$ sudo insmod secbulk.ko
; ]3 w$ z9 I6 S* k) m1 ]4 K- E* A5 {7 p
8 b& S2 M* \6 u) m$ p7 ~2 P8 z& W9 ^7 K
& m/ [' f5 i: @3 S O. A- B/ ?
9 @1 K/ }( \% ]" }' x. `" {+ H
9 D2 N4 \% K0 a1 I. u7 B6 z |
|