EDA365电子论坛网

标题: 全志A40i网卡软件问题排查 [打印本页]

作者: 罗罗诺亚    时间: 2023-7-28 11:21
标题: 全志A40i网卡软件问题排查
01问题分析
8 H1 F0 Q' T# z% @, L! S6 S' v
1 h" G4 b. i! |& \' J
问题描述1——) t: \# y- J9 z0 ^
" Y( W1 K7 f) l, w
以太网初始化报错 No phy found
/ b  ]6 W# |5 I8 z4 z6 [( \

- l/ F  V7 Q: D8 I, y在执行ifconfig eth0 up命令时,出现"No phy found"异常log。
* E! c# V( D" S& t8 l. l: H
! f! w8 S0 Q0 ~* y' C, Y/ r! A
9 |! F0 |' ~- @8 w! j; u! v

1 \0 K  ?/ k( u4 X; H
7 e# w7 u# e/ ]" n

) E% S/ [1 d, l" \5 P0 B! V: L4 @, H; ?, B
6 ?) ^9 ]  S% r# M
问题分析:1 y/ B+ z( P4 o- q& [( F

& e. l' y$ a, O+ A: g* C出现"No phy found",常见原因是供给phy使用的25M时钟异常,导致phy工作不正常,gmac驱动通过mdio接口也读不到phy的设备信息。
% q$ f6 J1 _; f7 |7 i2 ?. ]

5 F2 `: [2 ~& n
/ ?6 B5 q- h& b0 J% w3 t! w% A2 Q) h% v4 a
/ W  M; p$ i# l, z" b1 h, t
或者MDIO引脚配置不正确或者phy地址不正确;再就是MDIO没做上拉电阻,GMAC读取不到phy设备信息,用示波器量一下MDIO波形是否正确;再或是phy芯片复位失败,需要更换phy芯片复位上拉电阻。
" y+ Z" L! ~4 Z! X; Y9 S
$ _- V; B6 ]$ Y7 y$ _: k- C

3 C! [* D* o7 p& F
2 d/ m! H4 t- N8 y: n

: Q: F  I9 `0 a# o9 t- r" q

$ N. _6 U/ v+ L/ A" m# i( H
- R: g- J8 l* L

' O; h0 q4 z# G" A' R& a2 j排查步骤:6 C1 S. @( T2 r% `$ P# v. x! }
1 f. V, a) k* ~, n- }& D/ }  j
(1) 检查phy供电是否正常;7 m6 M5 c! M9 q: n0 P2 f/ C

% |+ Q% h* ~% G5 g. p& j8 p(2) 检查phy使用的25M时钟(Soc ephy25M或外部晶振)是否正常;  g/ |: Z( F" U$ y8 J- u

$ t7 \1 C4 _- F) q; m(3) 检查phy-mode是否按板级实际情况配置(mii/rmii/rgmii);6 W( M# E  F$ V% P( v

+ |: F- |( x3 u" \9 r(4) 检查MDIO是否有上拉电阻;
5 j/ K3 d/ X2 @0 @8 h) J

$ j4 ]+ @9 c& t6 t5 b0 Z2 w9 o(5) 检查MDIO引脚配置是否正确;/ {2 i( _! f5 w7 q6 z3 w" u
# A2 W' _9 |. a% V" t
(6) eMAC phy地址是否和硬件一致;6 @% u8 k- |% c8 V; p' O

& X9 F. n2 U" ~/ u4 {! {7 P8 \& [(7) 检查复位上拉电阻是否和原理参考方案一致。
6 ?& \$ G. b  V" O

0 \* Z+ }* e6 |" f2 `: u; _* V
5 F$ u6 m+ W0 X/ a
( x2 j! M1 ^3 X: S! Q; _1 s% c
+ g) q) g. ?1 E7 y
MDIO通讯正常验证:  }. s- ^, x4 e) h
1 f. V7 M& Z! S( ]6 ~& n
使用phytool工具读取0x02 0x03寄存器 是否正确读取PHY芯片ID,读取成功,代表MDIO通讯正常。
! F& j2 |/ `6 L% Z1 k3 ?# B; w( ^8 o

& ^4 [0 B, E7 g) O1 Y( A. q+ }
$ v/ y( A) c8 i' n: e
; I2 d0 w6 T0 [+ A  C2 `; Z+ Q
5 m4 \9 [0 [8 M0 K! W0 I* B. C

- u2 i2 c' l/ D" `7 b3 a问题描述2——
: {& P) f% l9 J8 D/ U# J5 D& ~3 B
9 ?* z' j5 U1 Z9 M
以太网初始化报错NO SUCN DEVICE
9 }$ m0 Q" e1 F. \( N

  c8 X. C; i+ ^执行ifconfig -a/ifconfig eth0/ifconfig eth0 up命令,找不到eth0设备。
7 H* o/ r2 |3 {; Z) {, s" x
8 u; Q; c  w5 |4 s+ i! h' j  K' G
0 T3 K8 ^% t: c1 S. x7 h
  B. ]& N+ e/ b* A1 v

2 k. o  _& K* K
/ C  w$ |' d7 S& C- d7 k$ h1 i

' x9 ?4 l7 Q4 ~! F" e问题分析:
! W4 L0 F; ]: R4 q" R) d) e

8 z8 y' I+ T6 @6 H: X: @) k以太网模块配置未生效或存在GPIO冲突。% v6 K) ~$ ]( T' a4 y5 \( x
& j" W5 S; S( J* `' R! p4 P

( ^2 S( B& ~5 k; y0 E8 F. t. a! P, ]" a0 S+ t/ E
' Z( |9 p# x; @/ K3 o* p
排查步骤:# B6 ~4 l2 \6 u6 M" `# K
+ N& B1 |1 [5 U$ }* t  D; F
步骤1:抓取内核启动log,搜索"gmac"关键字段,检查gmac驱动是否probe成功;
, ^# t# L8 N. F; }7 h
" a, ]- E7 M; l9 b* w% `" O
步骤2:若内核启动log显示mac控制器probe失败,常见原因是GPIO资源冲突导致。2 ~& U0 `0 E4 u; i

# L8 h3 O% v" Q- T3 W% `3 `" ~  `. H: {! T/ z

8 f; G4 ~/ Q4 A4 L4 E; }
! k" A0 H- k) Q
解决方法:' t$ E9 v" [5 k3 Z) {
) u! s8 u) {- d& M# b
GPIO冲突会有报错信息,根据报错信息,查看GPIO冲突引脚。
4 l: j8 x# y& X* }# D  O

2 z- F( t4 t' c# P% ?$ w查看以太网模块是否配置。! }! M0 B0 S9 B2 e- ^9 J& r6 j
% B9 E+ H. e) a: I- j; H
* q) y3 c( ~1 r. P4 s* l

6 G6 n! L0 p1 h
" }9 ]0 \( a1 r3 K' u6 r+ k) E5 l3 n
) q6 c. F' }% j

+ z  Q) C; U+ h1 Q% O
( C5 c9 J2 F2 H) U3 w2 P& g

3 }: g) u1 `5 p3 P问题描述3——
5 ]) n  g5 J) f* k$ U

0 [8 S! U8 t- t  E3 u0 d$ _以太网初始化报错Initialize hardware error
2 R9 |8 B9 a6 Z& }/ p

7 i5 o" n) M/ s) z/ Q. [# A7 y执行ifconfig eth0 up命令,出现"Initialize hardware error"异常log。" q0 R5 G; y) M3 u
9 r1 ^+ K) V1 @, s. A' z9 X6 B
问题分析:
7 \  P0 w/ R; s" p  s; t

- S0 e9 \+ R! a6 ~$ p出现"Initialize hardware error",一般是由于phy没有输出RX CLK至MAC控制器,导致MAC控制器内部soft reset失败,常见原因是phy供电异常或25M时钟异常;或者是检查数据引脚的时钟是否正确,RMILL RX CLK TX CLK 是否是正确时钟。! c9 l9 T5 |; t- n/ ]. L
9 s* D" Z! _0 P3 i# I- i
) `" e$ a0 I# ~" W! r0 d$ h

( b" U$ M4 Z, N( F2 E6 F/ |, u

& g1 w$ Y6 D. R

: o& G) H7 {5 Q7 X7 O
- B; B; i' P6 Q2 @9 n3 R  A
' R, X+ W" i! h4 f# D3 V, y
% ]; u  a0 l& f) ^

" I3 \) q" w1 b2 ]

0 L. |( U7 L) H
, N" H8 X6 ~6 I8 P$ G& Y- H3 H
% J8 t4 G3 V( Y( l, V
排查步骤:8 _$ V! Q# S. e0 e# M! x

* V7 ^5 C5 j" m3 C( \$ g用示波器抓取rx_clk时钟波形,查看是否保持25M时钟稳定,如果出现25M/2.5M 来回跳动。即MAC与phy未link成功。
" H, P  E$ A) i0 h0 _* }$ _! H& t

' S; g8 c) E+ l# p! [+ B2 F
! {$ m( r+ i( O1 B: S8 d2 H* d' H$ A5 }6 O# X8 B" y

2 w3 W7 S  B  s( B* f) w1 }; e解决方法:
% E' V2 i9 Z# Z# p% w# ]1 K# z' Z9 B
/ w" j4 R( l1 ^! g4 q
软件上可通过在phy复位之后,设置寄存器0 固定为100M全双工,可link成功。目前可这样解决问题:
+ L; f9 p! e$ |" j" K- D& e/ f. U

. }. w+ L% q/ g; @/ _2 [/ E0 O# [
在drivers/net/ethernet/allwinner/sunxi-gmac.c 中 geth_phy_init函数中 phy_connect_direct 之前加入phy_write(phydev, 0x0, 0x2100)。$ t- e6 a5 b5 g% y. \
" ^! s1 N/ ^  U/ u# S4 C5 S
6 n9 M7 |1 M- p8 Q

9 R$ e, \* j5 w! H- y4 d以上是我们在OKA40i-C开发板的使用过程中常见网卡设计问题,有些可能是因为大家在参考方案时出现了配置问题,或者是因为芯片输出的信号不正常导致。大家在参考OKA40i-C开发板的双网口方案时,可以查看本文章整理的问题点,说不定就是您现在项目中遇见的bug。" v# B. I# _! C
% J2 k4 f; s' A' N7 n
( P$ F: v9 w+ U& g/ U/ M
: W( Q7 T* Q: F2 z" j! y6 h

! A: ~( v# A9 C& U# m接下来,小编将给大家介绍一些常用的网卡软件问题对应的排查手段。
7 u; U$ Z) z) T) l4 T9 g6 V

0 H  R3 Y9 W+ p8 X. Z! c0 L" x9 A" R) U3 c, [5 P' p% x9 `# x
  `& J$ [: f0 P  Q) t
02排查手段
# M# l+ p9 L% Q8 y! E* n2 {% Q( h. d

- `0 k+ x  H- X5 z这些排查手段可以帮助您在调试phy时有一个基本的调试思路,提到的一些工具可以帮助您快速定位并且解决网卡问题。
8 V) }0 r7 Y& j0 l

* q$ E/ [4 j9 ~7 m0 j8 A
0 p. _$ h9 p0 M: _
, {5 [0 U# R& G( u
(1) 检查menuconfig及dts以太网配置是否打开;
$ M6 B! I" p2 j% m$ j, u
/ F9 ~3 Y( w  R& O' A5 g
(2) 检查phy-mode配置是否与PHY和GMAC之间的物理接口匹配,如rgmii、rmii等;. `8 C! l1 u( m; G2 t4 d
2 _3 N9 p) U( ]9 O8 K
(3) 检查GPIO配置是否正确,如IO复用功能、驱动能力等;
3 c' n5 D4 C6 o( Y  N8 m

; S# e; G+ c1 d! a(4) 使用phytool工具读取phy ID 验证MDIO是否正确。" R# |2 b2 u4 x9 l
4 u- m; n7 S# J; s

) y( |& N) S' d+ {( Z' s. A; w

1 ~5 v$ A3 a+ `  G) R' c如下图示例,能够正常读取JL11x1的phy ID则代表MDIO通讯正常。3 B2 x! I% E, q: A0 E

8 n3 s# I, P+ N! h/ k, _9 Q4 ~
! h' D0 A' W6 a, M8 w5 W" u

* Q6 s$ d0 G# t0 u" L0 L+ |5 Y* k使用phytool工具读取phy状态寄存器,查看phy芯片状态。以JL11x1为例,如0x01状态寄存器读取值为0x786d,说明link成功并且工作正常。
. y" G  A1 C# Q
& _2 z+ X, g# E, }8 u8 c

3 T$ C' L9 [1 B$ G- W) v) P' k# _6 w3 S; o0 y, e
) c% H' s  Y/ T- _1 q1 y
: D9 q5 y5 t/ c

作者: ESCAPE    时间: 2023-7-28 11:37
这个网卡不知主流的6 U0 z+ D* j3 x0 s" z* y





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