linux 内核启动过程中网络驱动不能启动的问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5665|回复: 7
打印 上一主题 下一主题

[未解决] linux 内核启动过程中网络驱动不能启动的问题?

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题  W+ G- z4 {0 X  m/ L0 H! u) _, _
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
! n" @: V) Y1 C& N& m" K/ k[    2.107743] davinci_mdio.0: probed- C- ?: o: @* T+ [. p2 O# F
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题4 `' u% y: c1 q$ D8 I' q7 v- a9 Q
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
" K/ A# F6 N& d- @& H. @[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown  G6 A9 k  `) Z+ z0 ^$ y
& M6 _7 ^5 W7 Y; M) ]0 G
[    2.137188] PPP generic driver version 2.4.27 s( d; ~& y' `3 \1 E& l0 X+ s
[    2.143236] PPP BSD Compression module registered
, h- X5 d* a" D# w- R/ q0 ~6 r; s* e- z3 k" u3 n

" X) W/ y1 q' I: w在linux内核中的代码应该是以下:3 I, e. g9 ]8 h; b. q: b
        // 注册mii_bus
8 x2 }! x- c% y* M5 O- n        /* register the mii bus 2.   注册mii bus 2*/
5 B# ~0 x" M: S4 d- e        ret = mdiobus_register(data->bus);
6 g$ S4 X6 H; n5 H        if (ret)
0 ]9 T' @* d: h0 f  m' ~% ~0 }/ Y0 Z: j                goto bail_out;
4 u+ V  W6 q" v6 s  r/ J* p+ Y+ L
        /* scan and dump the bus 扫描和转储总线*/1 w( B3 ^: R9 n& p
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
/ R! k0 I4 N6 E9 C                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据, x: \: K" T3 T$ ^% ?
                if (phy) {
5 t# f+ C: c; G, H# K7 \5 f6 w% \                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
( f$ ~. I5 F) [                                 phy->addr, dev_name(&phy->dev),  e; t" f$ D$ T
                                 phy->drv ? phy->drv->name : "unknown");# X& U  b( q2 }9 ?
                }! c2 g8 N- P2 R' g' x
        }
4 Y+ e9 |- U9 q% j) _) Y3 i9 [/ a1 S6 m1 [! C; Q
8 {7 y1 i) ]3 R3 u
最终在后面 网络启动有问题7 o; z2 M0 Z3 J" Q* f! E' Y
[    2.387752] PHY davinci_mdio-0:00 not found
! m/ o4 F; @& _$ |[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
6 x$ e+ m# l% n  Z; A5 T[    2.398254] IP-Config: Failed to open eth0
' P; n5 D$ I/ S. }) i7 _) Y$ M9 X[    2.402589] IP-Config: No network devices available.
/ T- j, u5 \, b9 r/ e7 |
* }( L! K& T' H6 r% o% O) F* ~0 z4 z, ^3 Q* b0 _

6 ?  e+ }: |7 w3 M: [2 c5 @8 @1,请问下,这是什么原因造成的?
; B+ s/ n! D- C0 y2,phy模块 和网络驱动开发的过程 是什么样的关系?6 L6 ~8 U& B4 Q/ M1 X
谢谢) r2 I3 a. M" z+ }9 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
沙发
发表于 2017-4-14 08:34:48 | 只看该作者
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-4-14 09:33:48 | 只看该作者
vefone 发表于 2017-4-14 08:34
/ g( Q$ ?5 l; v( l. G$ B3 I1 u请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
: O- I. I- ]/ q$ s
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,! d5 }8 l: b0 r6 q$ z9 ?
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
; |8 m/ H- O1 B- L5 [6 s4 s谢谢

点评

linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。 一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配  详情 回复 发表于 2017-4-17 20:40
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-4-14 14:46:38 | 只看该作者
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
5#
发表于 2017-4-17 20:40:02 | 只看该作者
小石 发表于 2017-4-14 09:33  r9 f' w! {; z" P  T' I& D6 S
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
5 p' ?3 a, y1 T) d2 x
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。/ V4 U7 b) f6 @
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46* b% I" |; ?+ k5 F4 v
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

+ m8 f& M' V+ n( @& r$ A+ q- N请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?1 P) v4 J3 n) S7 E+ h! Y
在linux启动时,打印的信息是:; H( m4 ]" }- Q6 K5 u: U
EMAC: MII PHY configured, RMII PHY will not be functional,
1 x' a' i4 u, f. e) T0 h' S) `应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。, `& y/ k$ `/ a' {, @
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
- m7 [  V. a- c创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
8 ?# ]0 }- A  ~+ o. ?1 E4 \4 f
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
& q( \7 z7 F* u9 d- Blinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。: M* L* e9 H. r- t  d
一般来说,板级的emac驱动都 ...

% e. B- s9 ]7 h# M) ?vefone您好,有些还需要请教下您。: A# I( q! A# g% H4 R
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为17 m+ f0 q, |$ B3 k% j

1 M: p1 H, ?( F1 c) {8 p! Dvoid __init davinci_common_init(struct davinci_soc_info *soc_info)7 p) s- J" M4 l4 w. @/ u
& A. z- `# ~# t2 ]1 r4 ~2 u# a1 F
{# R$ n8 d+ J- Y; N$ Y5 V
# b2 r9 G* p! t8 F$ r0 t8 J
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口9 D% v! y$ l1 m/ B( H# h+ g
2 O' V$ D2 v( B- S5 v) e
}
4 L# Q0 p) G0 |8 r$ c. [- J% r! ~6 O3 q( y  z6 E1 ]$ v) o2 u
//XXX 还是前面的" U8 r/ }3 c% u& \
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, - p1 C) B4 I, m/ O
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
  p# W" l! f3 \' u2 c0 \* E4 @7 O[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
) T3 x( @7 v6 j. k& v8 r' h# v# r3 L4 k5 x' ], E
在后面
5 _1 Z7 F3 t2 X  X# ?, c( l# [' b* M6 q
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
& R' a# V- q! k) }" V0 u[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
6 x# ~3 I2 W. A$ F- a1 w, G( S+ T: }% T. c2 _
请问下这是什么原因?
& {" k8 O5 U; P. V# J* m0 q# E$ J5 O! J* K8 {4 i/ j
我百度了一下相关的问题:有介绍的说
1 Y% g$ U1 ^! _5 J
) v, L: g# X% B  F1 ~( e2 p由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
6 S7 }/ L  {0 h0 J
! p. f0 Z  o* u$ E5 \建议调试在u-boot中进行,方便确认问题。
4 n/ k4 L# g, [, N) Q1 r, g6 R: Q* L3 X* G$ a
u-boot下主要确认三点:
0 ^. f% V% f- d% _! v9 ^# D0 u) S/ Y" {: Y( W7 |0 B
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作. {) j6 b% e% E3 \2 U
  y+ k; {% x, S5 q4 o
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足1 j( g  `' n0 S7 X0 C! \4 O& c: O

6 f  H- c7 v% Y* A3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
8 r# z- C' @& R
1 m* ]* K6 g7 ~; \9 h6 M9 TLinux下调试也是确认以上三点。
' s4 s- a4 V7 |9 h# X1 r
0 _0 m& @2 A0 j& w+ U: [2 @可以指点下吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-5-10 08:08 , Processed in 0.055283 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表