|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
编写驱动前,理所当然的,我们应事先将环境搭建好,废话不多说,直奔主题。3 f: @5 h. c5 d, ^; _9 D. |
- C+ ?; x4 ~$ ?1 }9 |# g* H环境的搭建:* n* X7 k. K6 w; _
& Y* b* z( _9 K2 ~6 @7 ^3 x- |: I
一、开发板使用TQ2440
( Y8 j T# Z4 d/ H
' w, K9 g6 D. L/ a这个没什么好说,去购买一块开发板即可。
0 M5 F/ Y8 P* g3 S* T
, _! |. c0 r- b$ R9 [二、linux的版本为linux2.6.30.4(以后再使用linux.3.4或更高)
8 m3 |3 x& X# e; ^1 }5 z4 A
1 }- c) y/ c- ]linux直接使用天嵌公司提供的zImage_Q43_2.6.30.4_20100531.bin
" I$ G8 {- z8 }3 \- c [+ t# h3 o, y0 @
三、搭建uboot环境参数6 M6 k G2 L7 s6 }0 [
7 f* a$ b S3 x6 L" B烧写uboot、linux镜像就不多说了,参考天嵌使用手册即可。这里要说一下uboot的环境参数,因为我们在开发驱动肯定要使用NFS文件系统。要想使用NFS文件系统,需要设置以下几个东西:
- | y/ g) P& O+ W A2 z& Q g% e- k) q
1.前提已经将uboot、zImage烧写到NAND FLASH
* D7 N$ u% f" N: d
' R( l! a2 L4 B2.在NOR FLASH启动方式下(当然NOR FLASH要烧写有uboot),在uboot的菜单栏下,选择0设置uboot环境参数,具体如何设置,请看图解:
8 W5 ]: F$ P: r- ^' }* d" ^# |2 l9 [5 s% _ Y7 T) R. X
a. 在NOR FLASH启动方式下,在uboot的菜单栏中选择0设置uboot环境参数0 d3 x- }4 X. @. P4 b( p- Y8 d- G
. I$ k. j4 Y4 C: l& `$ y
. z2 b% o. u" ?" R* n$ Z$ {
# ^" q/ ~) f; V2 N6 M4 X" U3 ]2 @7 I2 P" H
b.选择1,设置为NFS启动方式,具体参考如下图所示
+ Q1 @% t" D% g) }' v6 F( J& T
$ C* i6 M6 o* q" }
# D" F: D. {. j" w1 h
# z- G$ C7 d. }3 H) z: n R. N$ I; q9 ?% \3 U
c.设置完成后,切忌要输入 s ,将环境参数保存到NAND FLASH中,否则功亏一篑。! z% V3 ?3 x" @+ |
1 d, ~! z9 `5 s5 V# I3 M/ A& T- R
/ ~! l6 x0 X0 U( e- @$ j' Z& U. B# k+ O% V8 j
/ p( s/ ^' b! U$ y2 _: w$ I- p7 J8 kd.设置完成后,回到uboot的菜单栏后,两次输入q后进入uboot命令行,查看一下uboot的启动参数
, H+ ^' x: [/ I. K: b W
" b8 {7 I# G$ D; r0 R6 M9 C/ U
! Q& h1 n3 ^$ v8 \! \. c: c/ L0 E! z/ z1 x
; W" a9 g+ J* R4 ~8 k3 g2 v发现启动参数为:
! `1 b3 J& M6 f& j4 E
8 W* O& ~8 l& \0 M! l7 hbootargs: 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- T0 ~; J/ S5 ^' G9 ^ y$ P
/ `7 ], v+ B) i) ]0 \
并测试开发板能够与linux服务器进行网络通信。
3 s3 ~# o) o& T& D W( w6 s
9 P' m# u! n; X0 I
3 { J9 l+ @% Hping测试注意事项:
1 a; [0 ] o. x; \
/ z# g) c- {7 P# S1.确保linux服务器能与windows之间互ping通
5 u+ k( s: k& X% C6 u0 l9 r- J
: P' T! Z0 I" w) m, M2 L8 T2.windows使用wifi无线网络时,开发板不能只用交叉网线与电脑相连接,这样开发板最终不能与linux服务器之间互ping通,必须将网线一端连至开发板,另一端连至路由器或者交换机。$ v8 ]( t" u5 N9 O- g7 @6 g
/ `' P. I4 e- H1 k* k
* Q' d( D/ [5 U3 _; W) ]IP地址设置的注意事项:
9 E6 b! z5 e- \$ x6 d2 d
2 S* H9 G0 k6 \如发现在uboot菜单栏中设置ip地址无效,即在uboot的命令行下发现ip并没有真正得到设置,那么需要手工进行设置,如何手工进行设置?3 s* [3 \3 G4 a( d, p$ k
( a l! r) S; R- \; _! g- d; sEmbedSky> set ipaddr 192.168.1.110" D! K3 F8 J: [: G; r
EmbedSky> set serverip 192.168.1.123
) S4 X6 y2 C. v, QEmbedSky> save7 `0 H% T- O% U
2 ] c# _' D0 K: x- U; {/ U- k
8 J: X8 b& L7 I- f7 O四、linux服务器的环境搭建, e6 R: u+ B9 |3 w* F7 a' T* h
/ Y0 o. M9 k3 Q8 I% q/ ~
1.设置NFS文件系统共享目录
V2 \# x& |) c' }( B& _2 b
8 j6 ]; g/ Q/ [* z$ D& W在/etc/exports文件里添加如下内如:+ f' j% L* V* ]7 [- u
0 C4 U! S# p7 g: l* g% H) ~
/usr/src/root_2.6.30.4 *(rw,sync,no_root_squash)
; `2 \. k! Q4 ]
: [; S( A( p0 W4 Q! ]2.开启NFS服务器, {3 o# n2 O0 d
8 n6 f$ ^/ o; p/ _6 s3 q+ O9 n, _0 d/etc/init.d/nfs restart
( t5 R4 t/ j# p3 Q& @+ M$ f0 t4 F, }, N+ u
正常的启动界面如下:& i1 V4 \! |6 L+ ?7 s' s
1 c$ [# G% @7 O/ n) U5 S
% |+ v1 M" d" B% A* U2 C0 j/ v" l& j( T+ C7 m" @, ^
9 V; ~. Y/ _3 {" ^5 I五、解决error! `( A$ [9 z; X9 E
5 O' Q- T8 [5 `' ?/ s9 A# y; s% w
1 u8 |% e, Q. J( [# f* ^BUG1:5 K% |. }9 d: v
$ [) ?- |6 L$ l K2 m3 F7 D
' W; c5 `( U' @8 A, y. t4 ~/ X G7 I3 o, f( l, w+ B
, R1 s L+ W6 |" c7 W6 yIP-Config: Complete:2 R# w/ F/ j; y( ~
device=eth0, addr=192.168.1.110, mask=255.255.255.0, gw=192.168.1.110,
/ S& s$ G) B u1 e' m0 w- W: b host=SKY2440, domain=, nis-domain=embedsky.net,- Q6 u: g: Q$ B1 Z
bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=
9 S: N! _0 ] W9 l; A' X7 SLooking up port of RPC 100003/2 on 192.168.1.123
$ e9 I' U {! U. a
( r# e# q, y, U$ j+ x: x" U* K) ^0 i) ~- z9 B
如果开发板启动卡在了如上界面所示,那么表示无法挂接NFS文件系统,可能的原因:
/ t1 T( L4 x7 G# F7 i+ Y$ I
7 i# r8 Z- [* P3 e5 a8 |1.开发板的网络有问题,开发板不能与linux服务器互ping通
$ i, G8 Z" u, b# a1 ^- ~) j( r" q+ D% H2 x7 O! J x+ V
2.linux服务器没有开启NFS服务器
& B' o! H1 n) O" Z) F/ Y, K- D8 R$ T7 n4 z/ y7 [9 T
3.NFS文件系统的共享路径有误5 ~; e# q: d2 B' H5 x4 w
9 j& e5 r( ? O; B- h: v4.防火墙没有关闭
7 q+ Z; p3 t. ^1 [7 W% M8 X' a& U, B. A- N, q
% u5 a1 n; |2 Q. D( l9 m
BUG2:8 T7 }% D; P8 L& G5 v( y6 U9 p
* h) @) h. u+ G0 R. |) p2 D
能够启动文件系统,但是30s后,linux又自动重启?0 E) P+ I. }8 E D5 J! l
4 ^2 A& M% [ k2 W3 d" F- Z2 ~1 B1 D
原因(很明显是看门狗的原因):
' m- f2 S% ]0 I) N% @/ }3 S& _/ R) v j% v6 N/ {
因为天嵌制作的zImage内核里, 没有进行喂狗,而使用的文件系统大部分是我自己制作的,里面并没有喂狗程序,所以我们要拷贝天嵌的EmbedSky_wdg到自制文件系统的sbin目录,并修改etc/init.d s/rcS
: U. M% t3 Y( D/ Q' W/ |3 e# I/ l
7 |0 C- R6 E O9 J, D4 z在etc/init.d s/rcS中添加一句:! E# ?, M& q! i5 w& `( j% @: ?
9 Q' Z- r! v% p
EmbedSky_wdg &( ]/ t! E1 ]( n" R. y
& M: `- u4 [$ t& G' _
表示启动看门狗,自动喂狗,这样linux就不会自动重启了。% H7 |9 `+ B' a
) x. R0 y- ?/ ?' y- n
& }5 X8 S. \7 K. D6 R5 m8 Q |
|