|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编写驱动前,理所当然的,我们应事先将环境搭建好,废话不多说,直奔主题。
/ R" Y" _ S' B$ a5 b/ Z; H
: G0 e* \* A* `% Q, l7 s2 a+ M环境的搭建:8 _# W, g& j) Q4 {* m5 {1 B3 S- \
0 @$ R9 d' I: D- c# K) H
一、开发板使用TQ2440
5 k! _5 z- m* z E# t
) Z/ w" c4 f# n+ Q这个没什么好说,去购买一块开发板即可。
K2 `3 h2 @0 Q4 A+ H' K9 H- w
9 A; F! f* j7 _0 M$ \. O1 S二、linux的版本为linux2.6.30.4(以后再使用linux.3.4或更高)
( z# |0 S( c, y
i; C S/ p6 u; p: X: Blinux直接使用天嵌公司提供的zImage_Q43_2.6.30.4_20100531.bin
% Y% @' ~, _, z3 p8 i
" D' m7 o+ M7 ?; C# d三、搭建uboot环境参数
% u) b2 G7 Z( T3 Q& c- S7 R# W. f
( x) ]4 k% q+ F+ y, C% f; o9 _烧写uboot、linux镜像就不多说了,参考天嵌使用手册即可。这里要说一下uboot的环境参数,因为我们在开发驱动肯定要使用NFS文件系统。要想使用NFS文件系统,需要设置以下几个东西:
0 @& n: p/ j# u& a
% n* J" Z) R, B3 q/ o* }6 C# t1.前提已经将uboot、zImage烧写到NAND FLASH- O# a; G! K( [ Z5 w/ p, Z2 L4 { z; h
$ \: S* p2 I1 u* @9 }5 T/ n
2.在NOR FLASH启动方式下(当然NOR FLASH要烧写有uboot),在uboot的菜单栏下,选择0设置uboot环境参数,具体如何设置,请看图解:
0 [3 l8 i) N# X2 v
% _( {+ H! N- t: H+ x. z: ^a. 在NOR FLASH启动方式下,在uboot的菜单栏中选择0设置uboot环境参数
+ D6 \. O R$ j& W& y4 |$ r& _$ ]- W& G5 t
: O) r' c$ y( B$ E# Y' ^ a
( |* B# p7 U2 y4 @0 Y j q2 Q2 ^+ h0 O5 H2 n) f* Z) Z
b.选择1,设置为NFS启动方式,具体参考如下图所示
8 Z: k! a* V! N6 D. ?! ?$ t5 ^/ A! \
" o) f1 f( i2 I) G# |2 x
3 D& O1 M& O8 Y8 `: {$ J0 ~" M$ m. N8 g' [' u" W
c.设置完成后,切忌要输入 s ,将环境参数保存到NAND FLASH中,否则功亏一篑。 H0 k) u+ K7 U2 x) n; l/ y6 W
+ |3 m& `, I$ u; x: f4 S
7 ]1 ` G8 A2 P
* r' p( ]* K2 f+ j# v" f- V3 S
# H; y! `& I2 t$ t w9 X# y5 O
d.设置完成后,回到uboot的菜单栏后,两次输入q后进入uboot命令行,查看一下uboot的启动参数; |# m1 ]: b3 A! k% C
[) y1 b$ k. B* g% h( N" l
8 W. c( d; i- H9 H: S2 P+ y7 N
6 I, R/ _8 q, l4 X+ w/ M
+ r6 \2 r& x/ A+ Y2 q* S. H( {; ?
发现启动参数为:! s% e6 C& k( n! m
( o3 s! ^! T8 y5 \, u
bootargs: console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.123:/usr/src/root_2.6.30.4 ip=192.168.1.110:192.168.1.123:192.168.1.110:255.255.255.0:SKY2440.embedsky.net:eth0 ff
- ~/ K& J/ x5 Z5 k' g( B
: X1 k) \; X6 H9 O% c8 w) ?并测试开发板能够与linux服务器进行网络通信。
6 u4 j' s2 ?5 ~. n, Y! n2 G
6 F4 `9 F0 m* _" V2 X; z, Z, K( }( ^. c# u7 c: H2 f5 E
ping测试注意事项:
% q3 r) o. u. A3 o, T4 y3 z) f2 I& x& b9 u2 P3 ^
1.确保linux服务器能与windows之间互ping通9 p/ h( O% r4 p
$ f& J* M; k. z6 n# K4 a4 g
2.windows使用wifi无线网络时,开发板不能只用交叉网线与电脑相连接,这样开发板最终不能与linux服务器之间互ping通,必须将网线一端连至开发板,另一端连至路由器或者交换机。
: k3 A% J1 J: ^/ c+ S- c H& V7 x8 E. ^7 d9 e% b
1 C! h9 ?4 N3 L* [& o2 } ]; u9 U/ hIP地址设置的注意事项:/ Y* Z+ m* M' M% p6 [. Q
3 V8 _1 A$ ]) }3 {如发现在uboot菜单栏中设置ip地址无效,即在uboot的命令行下发现ip并没有真正得到设置,那么需要手工进行设置,如何手工进行设置?
3 L1 m H% O7 E
! ~( }/ L/ q( L7 Z% ~EmbedSky> set ipaddr 192.168.1.1101 F2 f; ^" ^( m1 G
EmbedSky> set serverip 192.168.1.123
) a; k* ^) W \3 q4 H* N$ GEmbedSky> save* _! g0 i& E! [. w9 H
$ k* G) m) B0 g7 f3 d. W3 W8 ~9 I9 K
四、linux服务器的环境搭建
9 u+ X' m: I: F. v& F4 F
0 r, f: x6 U& q }" Q% A1.设置NFS文件系统共享目录$ y; A) A. K4 `% J$ l
* ~& r0 O9 \5 e
在/etc/exports文件里添加如下内如:% o/ L. X1 w+ P, \" t, c" M
4 k3 k% E% x! \8 O* t7 ~/usr/src/root_2.6.30.4 *(rw,sync,no_root_squash)
) `7 L* U- w' l4 M5 E7 u/ S$ r
2.开启NFS服务器
+ B# g& \2 |* x- w# I# d1 t3 X
y j& d! i( g, V# m/etc/init.d/nfs restart
! ?% s) F9 V* L" U* k7 Q- H$ O4 t8 U* D% G; H0 Q0 }+ U/ G/ P
正常的启动界面如下:
! _- n% B1 T3 r u* E8 ~8 L
7 o. I1 E/ Z4 a8 Z; N- _: G
- @( N# E; q% O; H% Y
; U; T& m6 U1 e* b* ^# E9 a6 y) w$ }/ c+ g' i- Z* Z8 ~& }3 u( P
五、解决error5 v2 s0 e0 M% z G2 b
! x2 E' O+ [8 F! Z3 T
; W, |1 G: t( Z2 ?
BUG1:
: Q( z5 Y! [0 o8 ?7 o5 Q. K1 a2 F$ d* N, t2 Q. |6 O
6 m! _9 @- `+ T. _" p' b; O. l6 @
( n; i' X: e. n6 V
6 V; } T) \* H; z5 pIP-Config: Complete:: _: H; E) j, q
device=eth0, addr=192.168.1.110, mask=255.255.255.0, gw=192.168.1.110,/ g# F/ t. M5 I* w
host=SKY2440, domain=, nis-domain=embedsky.net,* l( s* D; Y8 m9 f) D
bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=6 V4 t0 m' ` k- {2 K4 l( Q& L& T2 s9 X
Looking up port of RPC 100003/2 on 192.168.1.123
# A. ?& v8 x6 L, r' L2 U6 o8 I4 u* u# h: `* t
7 b! H; C# y) s; ^' D
如果开发板启动卡在了如上界面所示,那么表示无法挂接NFS文件系统,可能的原因:
% ~% u. G8 v6 q) G& e
/ [- _1 W0 P: `1.开发板的网络有问题,开发板不能与linux服务器互ping通
. A/ ~! N6 N6 g) h+ X+ D& Y- m/ U" w) {0 B/ w$ U; P( j
2.linux服务器没有开启NFS服务器
' G6 X- }' w' M& B2 U4 o8 N `
3.NFS文件系统的共享路径有误" E/ }; ~- q1 k0 E9 u, T! B7 n7 g
$ @* n2 V0 Q U2 G
4.防火墙没有关闭
8 \/ v- ]- ` v5 j& g$ p. J" y, `! k/ a1 x- a
3 E% Y3 O3 m$ _" [% K& aBUG2:- O, A; e# K; M! U0 a
) {/ u ^/ n& L
能够启动文件系统,但是30s后,linux又自动重启?
8 y6 S, C) I+ ~% _% l9 i6 v: X4 f3 s. `0 v% U! U8 S8 a( g
原因(很明显是看门狗的原因):
; v4 A9 k+ t: P; D/ ^* ~: U4 h
# A; \2 N5 u3 B0 U) Z因为天嵌制作的zImage内核里, 没有进行喂狗,而使用的文件系统大部分是我自己制作的,里面并没有喂狗程序,所以我们要拷贝天嵌的EmbedSky_wdg到自制文件系统的sbin目录,并修改etc/init.d s/rcS
( |2 p& {0 y* C+ W/ o1 g9 g- g
% C9 k, Y# v# J; D8 C2 x在etc/init.d s/rcS中添加一句:: R( W% U5 k5 Z( ^1 t
8 \& n+ i& |( p# ]EmbedSky_wdg &
% n. J0 K% H) J# p8 I. Q6 A: w! f& F i7 A7 m+ A. ~
表示启动看门狗,自动喂狗,这样linux就不会自动重启了。
~+ p) c/ {( }) z% L i- a2 F# ]8 v+ Q+ l
0 G! G" l( _ g |
|