|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编写驱动前,理所当然的,我们应事先将环境搭建好,废话不多说,直奔主题。" l' \- ]. a% |6 u" R2 y5 B
7 t( H# g% i8 c# V9 R1 h: M环境的搭建:
9 z& R/ F5 @( I* D) ?
$ s6 R' i6 e( E# o9 x1 F% t, N一、开发板使用TQ2440
. H; h% t. B) g/ M, G# ~0 ~) L3 d( n5 d3 i
这个没什么好说,去购买一块开发板即可。
2 S3 `$ O5 B& Y/ | n( Y Y6 o; }# j9 n9 b: L7 @) H
二、linux的版本为linux2.6.30.4(以后再使用linux.3.4或更高)
+ ?, o; g* n2 a3 K4 q, }- T: p' i' \* a1 b6 \) @# a
linux直接使用天嵌公司提供的zImage_Q43_2.6.30.4_20100531.bin7 H( P' q7 f8 l0 z0 D
! a d; M# k$ ]! c三、搭建uboot环境参数
$ W! | Z. J- Z- t0 O' Y; k6 S- k9 u5 `
烧写uboot、linux镜像就不多说了,参考天嵌使用手册即可。这里要说一下uboot的环境参数,因为我们在开发驱动肯定要使用NFS文件系统。要想使用NFS文件系统,需要设置以下几个东西:
/ n& ]9 q7 M" {6 [' g8 ?" l6 U" a' \! g, ]1 M
1.前提已经将uboot、zImage烧写到NAND FLASH
4 p5 {6 X! q# i2 l1 H- o7 X/ d9 j5 V: h7 R
2.在NOR FLASH启动方式下(当然NOR FLASH要烧写有uboot),在uboot的菜单栏下,选择0设置uboot环境参数,具体如何设置,请看图解:
' T8 e7 T% Z( M* s# @! ]/ o4 h+ s/ y/ t2 U
a. 在NOR FLASH启动方式下,在uboot的菜单栏中选择0设置uboot环境参数9 s/ X4 a) ?1 ^- d+ Q( w& s# p
3 Y) i1 a7 I. _9 ^% d* c( O+ ~
0 U% T. H& u4 _ v* a& R1 r
" U8 S! `, _' D, v. b Y1 L2 i2 ] X, T( f4 i
b.选择1,设置为NFS启动方式,具体参考如下图所示; K! L( s- t& j5 g( n
/ I+ U; C2 ^3 X( I- m% ~
( V1 i+ {4 g! q- ~
* y. G) [1 l$ n$ {/ e @" J% {$ b9 ]$ y7 U% t
c.设置完成后,切忌要输入 s ,将环境参数保存到NAND FLASH中,否则功亏一篑。
0 _' e V: \2 H4 X- c i: T
* h$ g# u& {+ {3 q
+ j# y r5 h) y/ |" D6 Q$ h _( M ~1 A0 y) y( k$ ^: @
* d3 e8 S2 u1 E8 M- S7 h/ y6 s
d.设置完成后,回到uboot的菜单栏后,两次输入q后进入uboot命令行,查看一下uboot的启动参数7 ]& _1 K' T3 |0 R- V k4 n
2 @$ X2 u# ^% b0 r) m6 C6 ?' i
% y& \: B: o9 D* D" b, ~5 G
3 j6 d0 P! \5 U2 ]: z0 E5 Q U+ x+ {: c5 L5 u
发现启动参数为:
: {* A% d$ w5 V7 Q& O0 l5 F& k
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+ _# h8 R8 G$ _ w; [
! [2 C7 W9 M7 Q+ I! J
并测试开发板能够与linux服务器进行网络通信。
; [1 s! Y; c" |3 k6 S) F3 \$ ?) d J3 C1 e) T, S8 N8 R+ E
) F7 Q4 ]+ X/ {. X. Q0 U# Wping测试注意事项:
* n" P& h( a5 y4 K. s/ t
0 B8 ^: {2 ]! G& `# q1.确保linux服务器能与windows之间互ping通' W" H4 k7 l& `
5 r6 Y" i' U0 E; }* w2 c7 j2.windows使用wifi无线网络时,开发板不能只用交叉网线与电脑相连接,这样开发板最终不能与linux服务器之间互ping通,必须将网线一端连至开发板,另一端连至路由器或者交换机。
; n7 \; U9 I0 j* t) R/ Y( d3 H$ V( m( n
# d& T# ?* M. m6 [: XIP地址设置的注意事项:
2 P9 _$ }9 x) B0 r5 t( ]. Y
2 J& `2 o; N; T; Z0 B5 j如发现在uboot菜单栏中设置ip地址无效,即在uboot的命令行下发现ip并没有真正得到设置,那么需要手工进行设置,如何手工进行设置?5 |$ J7 z$ x: _( u4 S
/ o5 a4 p; H+ {EmbedSky> set ipaddr 192.168.1.110+ g" e+ Q/ S/ _2 J8 \: h& V
EmbedSky> set serverip 192.168.1.1238 o' l. x' Z! M( X5 [
EmbedSky> save
4 \& i3 N. I! I; I5 ]6 J6 U/ ]1 P8 M
% Q1 u( K/ G9 c, L3 M
四、linux服务器的环境搭建
2 D- C ~ x" s, _, l! S' V e
/ v A& _: z3 J* |5 B* `1.设置NFS文件系统共享目录
2 K) B( F Z8 i
/ z# N! [; O3 m在/etc/exports文件里添加如下内如:
. A4 A% I! W$ ^5 g& S
! N/ w. Z& Y2 C( L4 D9 }/usr/src/root_2.6.30.4 *(rw,sync,no_root_squash). e+ T. G" D8 E7 E
+ x- K i! U- G& Z# a
2.开启NFS服务器# R$ G5 s6 _0 _: h$ B
" ?3 Z1 u$ n5 W, p$ p7 ]
/etc/init.d/nfs restart
2 l0 m" H" ]! B$ U7 H2 l
( b; U+ E& O8 P$ H正常的启动界面如下:' I+ l* }' C5 R
, H1 T M2 r1 y; j. J; g
2 |: C; S( X, n4 q0 p/ P" B0 N9 k$ E4 w
1 }5 c& X/ n! M5 b$ b
五、解决error
`. A0 q3 N$ m% j
' b: O# A* C3 Y7 x; l# s4 o7 N5 i; s- s; I+ K$ x' i
BUG1:
, q7 C+ T$ [! e+ r, f, y
: E! s$ U4 Z( {8 r8 r P8 u1 h
) V% h3 W9 O) ^' e' f6 v! {3 F2 o$ V
R. |5 i0 B7 h
IP-Config: Complete:, f. p$ Y1 |( ~+ X
device=eth0, addr=192.168.1.110, mask=255.255.255.0, gw=192.168.1.110,0 I% Y8 y: k; P9 j$ N) S
host=SKY2440, domain=, nis-domain=embedsky.net,
/ r. C- K% y& I* ^/ M4 S! \/ m/ o, G bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=3 l9 T7 ~. c( Z
Looking up port of RPC 100003/2 on 192.168.1.123
: V+ D! Q5 O3 \: X! G% s3 D2 M
3 h+ l. O4 C+ y% G
0 j6 u/ {% q. W+ [+ R# Q如果开发板启动卡在了如上界面所示,那么表示无法挂接NFS文件系统,可能的原因:
6 m) E$ x% r3 X) B5 p* W4 N
" N5 s' f& w, k1.开发板的网络有问题,开发板不能与linux服务器互ping通, h+ O3 Y; P1 w! m6 B# M
# V/ g; ?% _; G$ Y: z5 {2.linux服务器没有开启NFS服务器
; {$ D5 |& _" J( M" x; m9 ~4 ]
; H$ i. W: F2 p% _3 I* C3.NFS文件系统的共享路径有误
( n- {% @5 C y4 ?" I8 ^! H
. E% | }* G6 z6 k4.防火墙没有关闭1 G1 R5 V9 u3 s4 Z: G: ]" r9 q
) f/ ]) ?: s Q+ i( e5 D$ q9 h
0 }' s9 z8 [, {0 h2 B0 [. \
BUG2:
8 F" X% O$ g- J3 O) P
# }5 M1 K+ w( K( E, j能够启动文件系统,但是30s后,linux又自动重启?0 H+ o& X4 S' U
M D' r! y) x! I: m; q
原因(很明显是看门狗的原因):
& o$ W. n: S& a* T o: P5 U" |% ]7 {/ ^
因为天嵌制作的zImage内核里, 没有进行喂狗,而使用的文件系统大部分是我自己制作的,里面并没有喂狗程序,所以我们要拷贝天嵌的EmbedSky_wdg到自制文件系统的sbin目录,并修改etc/init.d s/rcS
. Z4 y, e/ D# j) }2 G5 _: O6 O9 O$ Y. M' a" l2 N+ O
在etc/init.d s/rcS中添加一句:
0 X4 P( u5 m' ?
?% x# O" R* ?/ K8 o% ^5 b: P* IEmbedSky_wdg &. J$ P ^4 H& t
, e/ K M8 m; O& ? [% s8 i5 \
表示启动看门狗,自动喂狗,这样linux就不会自动重启了。
1 B5 ?) u9 h k, S
) c9 C" d, E( E; ]: l l1 s. G7 `5 J: f* N
|
|