|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编写驱动前,理所当然的,我们应事先将环境搭建好,废话不多说,直奔主题。
- y& v- n! J1 W0 i) l
: Q2 U/ w6 F$ I1 Y U) U9 t/ @5 [' l9 A环境的搭建:
. Z- b( Y x, d, F, [( Y9 D9 A9 u2 Q& T$ T0 s$ I d' P* I9 e& N
一、开发板使用TQ2440
' p, }% g/ k; N* g; M0 H, c. ^
& b9 r* v+ f: o) U t I这个没什么好说,去购买一块开发板即可。4 U4 m3 T6 c' t* \. `- m
: F4 r) I& R# S# W% u4 x2 w) [/ k2 L
二、linux的版本为linux2.6.30.4(以后再使用linux.3.4或更高)7 }9 F+ E; m( t% I9 B# V# k/ V
0 ~# P2 K6 Y: Y1 V0 S% e5 [( h
linux直接使用天嵌公司提供的zImage_Q43_2.6.30.4_20100531.bin
6 @+ a5 r) ^# }5 m# F) f- ]1 {. g7 e
' w4 f6 z6 p( o! C1 t1 A三、搭建uboot环境参数
- h0 c/ ]' U+ m- B6 d* c5 @
2 k8 ^+ C0 u! L- m8 j1 i; P6 ]0 B烧写uboot、linux镜像就不多说了,参考天嵌使用手册即可。这里要说一下uboot的环境参数,因为我们在开发驱动肯定要使用NFS文件系统。要想使用NFS文件系统,需要设置以下几个东西:
9 { S, r6 k, x b3 r3 Z/ i/ E0 ^9 |5 @
1.前提已经将uboot、zImage烧写到NAND FLASH
! S- S0 ]& |3 N, i8 X0 \4 F$ O5 Y1 i; H* h6 b/ U3 X [! N0 ~0 P
2.在NOR FLASH启动方式下(当然NOR FLASH要烧写有uboot),在uboot的菜单栏下,选择0设置uboot环境参数,具体如何设置,请看图解:
2 f7 Y! ^$ C( v% t- K, i. Y0 r$ f3 w# C
a. 在NOR FLASH启动方式下,在uboot的菜单栏中选择0设置uboot环境参数7 I5 f- I: B) g5 x
5 I' d1 Y0 M; N5 v5 n4 L0 M$ s- l
1 A" f& ]- E% h8 i# h1 l% X
% D- u7 C% l* `8 }9 U$ p
9 T+ H& }6 u0 q4 \b.选择1,设置为NFS启动方式,具体参考如下图所示
5 y4 w9 y# t3 j4 c. J
% w; P4 e2 Y, @+ l
* W/ \/ T4 u/ `$ Y; c8 P
& h0 z( e0 o. a1 F
4 s* I7 N, N; V, m, Xc.设置完成后,切忌要输入 s ,将环境参数保存到NAND FLASH中,否则功亏一篑。2 e( V( X; b2 C
: }" u7 p) o8 q3 r( _
$ N, ^7 }* S" i. y3 D
1 X) B7 z0 V, X, W) ~. C w7 A& G3 y" T; a" g. W
d.设置完成后,回到uboot的菜单栏后,两次输入q后进入uboot命令行,查看一下uboot的启动参数
' ^3 m9 B$ O% F- c e: |7 V
9 ?% m4 Y9 T' I: R/ g
! r% ] K3 z/ s1 F% R8 ?" |! q
6 w+ W* }8 r( y: {+ ]
6 j. d7 X* k) |6 W7 O3 o/ s发现启动参数为:
% u% W& a5 X' G2 U- ^1 x& [3 l" E8 Y' U# B( m0 K7 v
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
3 }1 ~" R1 U! _, F7 r7 s
$ N) n: H6 l9 z" P% c8 N% ~, T并测试开发板能够与linux服务器进行网络通信。: v2 H. U+ S8 }2 _" N7 Q& M3 R
. f0 ]2 ~8 o5 K4 U! p- z* |
4 G: j/ k1 B5 ?' v
ping测试注意事项:
; w3 e& M, Q+ q, g# Z7 [4 {
* z; Z- {$ @ V& F5 @1.确保linux服务器能与windows之间互ping通4 c" U" k0 Q# f5 n
# G# w3 o( B" H2 @9 t& \1 N
2.windows使用wifi无线网络时,开发板不能只用交叉网线与电脑相连接,这样开发板最终不能与linux服务器之间互ping通,必须将网线一端连至开发板,另一端连至路由器或者交换机。( G6 A/ S- @, u$ T
. E. a$ U) q" ?3 H" K, o$ i5 t2 w( ^, J: \( P6 P
IP地址设置的注意事项:
3 A& h, v, N% I, e: R
5 e( l+ V5 G- P! o: C6 n X如发现在uboot菜单栏中设置ip地址无效,即在uboot的命令行下发现ip并没有真正得到设置,那么需要手工进行设置,如何手工进行设置? K' L n1 g- g: }) p! O3 k+ k1 N& u
7 {1 B$ I) X& i
EmbedSky> set ipaddr 192.168.1.110
0 a! |, h. N& S* M- v) n! D& hEmbedSky> set serverip 192.168.1.123& h& R6 G7 I# v$ e
EmbedSky> save
# A7 B" J) _$ U
: o/ e! Z) w: I& a4 A& S ? N6 i4 F! J) Q
四、linux服务器的环境搭建* |% \$ S, T' h/ N
$ Z) o B# Y4 [6 H4 |0 ^3 j% M
1.设置NFS文件系统共享目录
' d2 j3 w: J' d7 `* I: ?
8 s5 ^) D3 Z# {; w9 w5 f' W4 d在/etc/exports文件里添加如下内如:
, l I8 k* P9 S6 b2 \9 {5 t$ U7 F8 p3 m# a/ M
/usr/src/root_2.6.30.4 *(rw,sync,no_root_squash)7 l% s T" s: C0 x6 d% w
6 G) J5 Q6 p- N" ]- R$ G: g7 U2.开启NFS服务器
; [8 U. R# o+ D' K. e. V9 G0 w* v4 z9 S
/etc/init.d/nfs restart7 _& a* K/ r. W
- ]" P% P H7 w" S+ {' [2 O: ^
正常的启动界面如下: u+ S' q+ ?6 Y
# U0 s6 g. y! f8 ~* ?; ^
6 X* {$ J2 h, u& @$ z
; D, u+ S1 _; g5 w
, J+ W) J' f" ^4 D9 }# _# E$ ^$ M五、解决error
) B8 Z1 u+ Y' |- W# {; R& I, N4 I$ |1 z Z8 y; l
8 S/ ~1 S* {, Q4 v! ?8 ~, s: M
BUG1:
- J1 L6 S; p7 `2 W! ]5 P! {! {( ^. H! O0 V. _4 i, y
9 Y: I# \1 C X; A) u! a% y4 X- ?1 w3 g* W
/ P2 @6 p# h$ a8 {5 J! J$ DIP-Config: Complete:, K' [% B7 r' Y' H$ y
device=eth0, addr=192.168.1.110, mask=255.255.255.0, gw=192.168.1.110,* ~4 Y* @$ Z/ p/ _! E* M. V/ h; a
host=SKY2440, domain=, nis-domain=embedsky.net,
/ Z. Y( H7 P0 s0 Z& p8 V! W) \3 r bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=4 V L! `3 n" o# C( }( Z3 z
Looking up port of RPC 100003/2 on 192.168.1.123
. `4 o/ [) F% L* C4 Z$ X, X) f
3 _6 g8 b* d* h7 |& [5 w9 N' \. w9 P" {1 }& M% |8 W: X
如果开发板启动卡在了如上界面所示,那么表示无法挂接NFS文件系统,可能的原因:
1 G" x. F5 k2 ^1 e- m$ z6 d2 ~
$ B' w. o5 Y* z- o: o. i+ T) H% s/ n1.开发板的网络有问题,开发板不能与linux服务器互ping通
4 j9 _- K, h) S2 ~9 R% A! X' |* C
7 C% x* D! u3 s2.linux服务器没有开启NFS服务器
) {7 h* L- ~- d6 [5 f" Z$ ]; t+ Q# J* I" f
3.NFS文件系统的共享路径有误- q! s/ V' M B( x. Y8 V8 G$ }5 n
+ c4 E6 r8 x6 Y8 F+ \0 p4.防火墙没有关闭
7 A! s7 y+ E1 {
4 ~6 Q+ C0 r1 q. M3 L3 c* U! M* n! X8 `7 k x4 ^
BUG2:
- q% ~7 Y+ [# K( p# W$ T& z
) R! c9 u! E+ r- B0 K! `6 K% h能够启动文件系统,但是30s后,linux又自动重启?
% z6 W* O! X( E- {% ` _
5 r. l& @# R! Z- q; v0 C8 Z4 x2 V原因(很明显是看门狗的原因):
/ R7 P1 k( _4 u. Q% @+ I: K
' ?/ J$ f, a& R) Y" [1 G7 s- h因为天嵌制作的zImage内核里, 没有进行喂狗,而使用的文件系统大部分是我自己制作的,里面并没有喂狗程序,所以我们要拷贝天嵌的EmbedSky_wdg到自制文件系统的sbin目录,并修改etc/init.d s/rcS
6 g9 `. M: r% t; v5 L- K7 l2 Q7 e* Z+ y6 Z4 E- ~: F# w- \ m; J; ~
在etc/init.d s/rcS中添加一句:
( z" w4 L7 {& |% E" C* P! Y! J; q! |6 ]
EmbedSky_wdg &
+ j, E6 g# X9 W; w: `8 {5 T, P' x4 z: H
表示启动看门狗,自动喂狗,这样linux就不会自动重启了。
! s% t, g. {3 K' Z( H+ |( S J; I" u$ u! F) K
* n. u. F2 T; T- ~& x4 |2 B
|
|