EDA365电子论坛网

标题: linux驱动环境搭建 [打印本页]

作者: uqHZau    时间: 2020-4-22 09:40
标题: linux驱动环境搭建
编写驱动前,理所当然的,我们应事先将环境搭建好,废话不多说,直奔主题。
1 _7 e1 |. A* a' M' o# o0 r9 E" w9 t
环境的搭建:
( v" }0 d1 `# u* k0 @3 c# Y
0 ]6 R* T: b0 T' C6 Q; X  {9 r' F一、开发板使用TQ2440
6 I1 B3 ~4 p9 N
8 \# y+ D% a! ]1 T4 k  p" |这个没什么好说,去购买一块开发板即可。
' ^) e* M) J; w( ~- J$ V
9 d8 F. w- L0 p( r; B# K二、linux的版本为linux2.6.30.4(以后再使用linux.3.4或更高), ^! p" h; R) [" S+ k5 s! G
# K$ @9 S' @5 K8 U1 D
linux直接使用天嵌公司提供的zImage_Q43_2.6.30.4_20100531.bin
5 |7 V  y" k) o7 l
: `# U% ~- ^0 c2 z三、搭建uboot环境参数
2 @: ^/ o5 X- `1 _5 q, L/ f0 e, K( p- [$ v& ^. w/ B' y: I: G$ C
烧写uboot、linux镜像就不多说了,参考天嵌使用手册即可。这里要说一下uboot的环境参数,因为我们在开发驱动肯定要使用NFS文件系统。要想使用NFS文件系统,需要设置以下几个东西:, X; T' I$ D* q  w. G# J

9 p- X: x- j8 d) b1.前提已经将uboot、zImage烧写到NAND FLASH/ a! C% {. ^% D
1 A, r6 G0 m: _1 o
2.在NOR FLASH启动方式下(当然NOR FLASH要烧写有uboot),在uboot的菜单栏下,选择0设置uboot环境参数,具体如何设置,请看图解:
: J& U8 s% r  c; S& j; m- [5 g
4 h# `/ \) j9 c' ~; I2 O7 _a.  在NOR FLASH启动方式下,在uboot的菜单栏中选择0设置uboot环境参数
5 B  d+ f% t  t; M: T( }" G4 x

; P3 L+ t4 h& }9 n. [
& n2 w5 C8 E6 E% }" f. J; N6 B" l9 {, P
b.选择1,设置为NFS启动方式,具体参考如下图所示
. Q# u3 R0 N* G. A9 T7 z6 u) i  T& W% `

' Y7 \; P+ B& P0 K/ x+ `, Z' F+ \$ C% b9 Y& n9 O" P# {

4 u( U7 H/ d$ t9 |- Qc.设置完成后,切忌要输入 s ,将环境参数保存到NAND FLASH中,否则功亏一篑。. J5 r) C: w7 i- N% h! ?1 }1 T' W3 T
0 w' W& u# o1 ]  y! c
. L2 e. m! V& k. A) Z- P  W" m$ Z0 A

% ?, p' ?9 |' H# i0 [1 K
% ], S/ j- |5 F$ xd.设置完成后,回到uboot的菜单栏后,两次输入q后进入uboot命令行,查看一下uboot的启动参数
6 K5 i& f- k8 _/ v1 J% H
' [& }/ o& B- t4 m- z% f% p7 I8 d
! c7 i* C$ d9 I6 D( R$ C) I3 p3 [0 N0 S' {% o1 \1 ^
$ u7 c$ D& j9 ?1 l( v0 E9 b
发现启动参数为:
: n: P* J( d- U1 {5 ^6 s4 _
+ M/ n6 w4 e- G; }% |6 x9 M& T. ~- fbootargs: 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:eth0ff1 i1 N  k9 o& Z; [
5 J; Z% }/ r& [; H% U: V" }# h# i
并测试开发板能够与linux服务器进行网络通信。
* C- Q) ?/ {# @1 r* p; n) x& Z- P
" K8 O0 z* I& q- Q, z0 _1 P' o* G
ping测试注意事项:
/ N9 A* V  E. p, e4 }7 s
, ~8 D+ W% V5 W! Z1 P, i1.确保linux服务器能与windows之间互ping通) @; K4 W; {$ }! m2 x2 O5 \# S

/ p: R# k. _' v2 _4 f2.windows使用wifi无线网络时,开发板不能只用交叉网线与电脑相连接,这样开发板最终不能与linux服务器之间互ping通,必须将网线一端连至开发板,另一端连至路由器或者交换机。  U; q& C, P' g/ ]6 R2 L/ J* B2 R
& l: Z* l: S4 Q
; Z4 Z, J& o5 j) b
IP地址设置的注意事项:9 n5 |) H# v- a; ]& o
, F5 y7 t7 P& [1 T" J: H
如发现在uboot菜单栏中设置ip地址无效,即在uboot的命令行下发现ip并没有真正得到设置,那么需要手工进行设置,如何手工进行设置?( @9 l: c8 s* t* n
9 u) u3 q$ Y" q0 a& `7 g3 {0 I# W1 M
EmbedSky> set ipaddr 192.168.1.110
9 e5 U/ H: S8 D% ~, OEmbedSky> set serverip 192.168.1.1235 r1 B  L& p9 u
EmbedSky> save
8 m9 n' m0 o8 M- ?" ?7 i1 m) |
- p9 u) x2 k' O1 z: h1 C9 M/ l* d/ R  E) U- h
四、linux服务器的环境搭建. @% T" F  v' s3 l* e  ?/ T5 j! X! g6 N
9 X- n8 x1 R9 j8 c9 V
1.设置NFS文件系统共享目录
8 ], f1 z, A* r$ s( S6 C4 d# v8 U7 n9 \/ s" Y& Z- g
在/etc/exports文件里添加如下内如:& i& d1 \8 U2 B" \5 [+ P& A
: u5 p  V4 v" v1 U3 Z
/usr/src/root_2.6.30.4  *(rw,sync,no_root_squash)
! Z, d: k6 |9 j; F$ u( H
  D: J2 ^4 d/ h3 e5 B3 y/ u1 P2.开启NFS服务器
7 G8 Q) {  p9 H7 O
; U& }  W; |" q0 d7 Z" z/etc/init.d/nfs restart4 U  B& P0 F! k( M- k3 S# J
  l4 I* ]( H9 ]4 o2 x$ V3 w* _6 r
正常的启动界面如下:
/ n3 t: m: y. [, U' t: |# B2 M' _* F: s% m

9 Y) {' e3 Y/ `' ]; _: o1 A- U$ E/ B: G! z0 p; t
9 N& p. ~6 r( O
五、解决error
& h5 N4 x7 g* c6 S
8 s7 D6 [* y. k! p& {! A/ V( _
% Q+ W7 e3 b2 A: N) |BUG1:
1 u( q' W6 y2 |+ b  Y% e" l1 y( W& f( m8 r% e7 K5 c
+ s- J! W* `/ F' t! ?1 ?2 c' @5 k

2 B$ K+ c* F7 G% i/ H# T6 H% M9 Q8 W8 k+ `4 @- {# _% l' ~
IP-Config: Complete:
2 z3 u" p4 S1 F2 _1 l7 L     device=eth0, addr=192.168.1.110, mask=255.255.255.0, gw=192.168.1.110,
- Z' B& m5 v0 V" ~8 C, y/ [     host=SKY2440, domain=, nis-domain=embedsky.net,
% G/ q- o) {- |. u: O; |" R     bootserver=192.168.1.123, rootserver=192.168.1.123, rootpath=+ y: U" S: R/ H. I  W1 n
Looking up port of RPC 100003/2 on 192.168.1.123
: Z0 O4 a8 J5 w9 e, b& l! q" c& L% u( Z2 Z7 K8 _1 ]7 j
$ n7 J9 w% `. s. \' {/ ]9 j+ f% C
如果开发板启动卡在了如上界面所示,那么表示无法挂接NFS文件系统,可能的原因:" ?0 z6 E) }3 ?3 V  p3 k6 J

! A7 b" E3 @( u8 I1.开发板的网络有问题,开发板不能与linux服务器互ping通& J5 a' o' D* U8 ?" B% `
; r+ s+ }1 _2 M  c/ e9 W: i
2.linux服务器没有开启NFS服务器
( |9 V. z; L" [. _2 U2 F# q+ p: D1 N3 D& D, S
3.NFS文件系统的共享路径有误/ a+ n- U5 }2 I- D  `
# a" s9 T+ b& ]" W5 b
4.防火墙没有关闭* A) t( A' m2 n; ?0 g4 q
( \1 U1 w: S$ K  I$ R$ D

# i( Q4 M5 Z: P3 vBUG2:
9 w% e  x- e* G% k1 s6 e4 U% r' e
能够启动文件系统,但是30s后,linux又自动重启?& r3 M2 k1 L9 A; Q% Y
& ?3 G7 s! w0 L9 K! Q+ ~
原因(很明显是看门狗的原因):3 J0 H+ ~+ A2 Z+ F8 }
4 c$ g( b6 s1 q9 Q+ L$ V
因为天嵌制作的zImage内核里, 没有进行喂狗,而使用的文件系统大部分是我自己制作的,里面并没有喂狗程序,所以我们要拷贝天嵌的EmbedSky_wdg到自制文件系统的sbin目录,并修改etc/init.d s/rcS                                    & e' ^' E0 w+ n( J

* B- m4 z0 n/ s. |% [( o在etc/init.d s/rcS中添加一句:
3 j! ~5 _* K- \/ G0 G: c
  T7 @& M  S0 H. k/ w  V/ \EmbedSky_wdg &
+ F0 Z: {- W6 V( k6 g" q5 w3 ?+ @1 k& L" W9 o8 O8 B% R
表示启动看门狗,自动喂狗,这样linux就不会自动重启了。2 d" J0 V( a' d' H
- N; P$ s3 Z. D1 Y" K) Y! r

0 [" S# R3 K* E" k8 G
作者: ExxNEN    时间: 2020-4-22 13:27
linux驱动环境搭建




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2