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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
2 R2 g$ V- A( c# w; L[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
6 L( N$ S( j( D4 u8 S) e6 |- {[    2.107743] davinci_mdio.0: probed! ^8 l$ V: J/ Z4 U+ i! _
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题! W- d) b8 z8 y7 \* D- g8 l
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
0 X/ D% `  m& q[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
4 |, R# Y/ S: e6 A9 ~. \. m( D
7 i# {8 Q9 n* }[    2.137188] PPP generic driver version 2.4.21 @* Q) d7 G# M: ?& g3 N6 p, N  q
[    2.143236] PPP BSD Compression module registered8 O7 N  O8 Z0 z& ^( r' {

. i% l; b+ A! ~0 B& P8 ^- d5 ^9 n- h6 |' S* |
在linux内核中的代码应该是以下:+ B2 v4 m* U  j5 g' v. g/ P8 c! M# @
        // 注册mii_bus
/ c9 Q$ H: _+ K1 i5 _$ ]% T        /* register the mii bus 2.   注册mii bus 2*/
3 w2 ?" D( }2 X, j        ret = mdiobus_register(data->bus);
' Y8 X. h$ ~" S' M. q        if (ret)1 p; O3 R* y3 O
                goto bail_out;
  [- b2 i% l9 `4 V8 L* L; D* i# q5 K  b+ {8 V) o- a
        /* scan and dump the bus 扫描和转储总线*/
2 p; @( h& N2 t+ H! G        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {, {# C9 s1 ^. x0 a; }1 P
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
% F" O# s# J( T                if (phy) {
0 Y& d1 i8 e  g5 `                        dev_info(dev, "phy[%d]: device %s, driver %s\n",+ a1 X  g. m3 H+ _  s
                                 phy->addr, dev_name(&phy->dev),
, D) j. u3 ~, z" r  F  K7 l                                 phy->drv ? phy->drv->name : "unknown");
5 x/ F) M) R+ p$ K% B: \4 R$ H                }+ w2 u' D; e/ w: j8 m
        }: b' h* O  \; w* {2 X: G) ^  d

( C$ f) P" _7 F/ {- n9 T( a) s* R  d
最终在后面 网络启动有问题, v, N$ N" l4 M$ J% T. l5 i1 ]
[    2.387752] PHY davinci_mdio-0:00 not found
8 L  s) |6 [0 `; {[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00) \) i/ g0 s7 L; A# m4 t
[    2.398254] IP-Config: Failed to open eth0& p3 I4 W' j( `3 p5 F
[    2.402589] IP-Config: No network devices available.9 S5 Q! K) b" }! j! ?* Z; B
4 a' R" y/ a5 d& N+ d
+ ?$ E6 d1 Q$ p

9 g( h( T  Y, M. j( Q1,请问下,这是什么原因造成的?& n. i8 e* E; D7 M0 ~( B* P8 l% R
2,phy模块 和网络驱动开发的过程 是什么样的关系?
9 L" R2 j' ~# ^1 I5 @) {. D谢谢
! f8 m; S0 v1 F+ X' m  ~6 x
分享到:  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
, W; T( m0 b( Z" D' p" ?. K  l请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
! `- Y2 z. O: G: _" Y, q/ B( |
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
7 |* X3 H3 E; b/ B" w' g8 j1 u: @请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?( _1 B. C( X+ M1 y+ c
谢谢

点评

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
5 q/ `6 A2 l: k) K用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
( }- [3 Q' |( h6 Y
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
6 s1 ?' p6 n6 o8 v* \3 N一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:462 m+ D) t+ ]1 I2 L
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

3 p' b- i5 g  l/ B% K; K% R请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
9 I5 V( |2 Y; q) S在linux启动时,打印的信息是:
5 s1 e; w- R7 t2 P/ a& ZEMAC: MII PHY configured, RMII PHY will not be functional,
: q" a# I' k9 }5 H- p9 D* u应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
4 q* n$ g# r* c! q7 H$ G: i6 i" N谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46$ P9 Z3 {# G' F9 i9 U0 W
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
/ t# X6 [4 }) F# X
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:409 V. F& C# E& @
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。. H' o, P; K0 P1 R/ z. |$ L4 [
一般来说,板级的emac驱动都 ...
- P/ }- n5 Q/ Z" d
vefone您好,有些还需要请教下您。- ]6 T6 I& N8 d7 U0 c4 @( w" V; o1 z
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为19 U3 b) C1 q& n# U! K8 G7 ]+ l; I

1 r4 ~2 `2 O( H* G+ a) U8 |void __init davinci_common_init(struct davinci_soc_info *soc_info)2 h; b! L* H  P& m) I1 u9 I7 K
$ P- H. T2 U# t6 L
{1 a& I$ T9 H) {9 c0 b

/ W8 U$ V6 V4 w; J             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口8 f2 V: V  k( X% a- O
6 g) K" X" E& j$ p% i2 @
}/ d7 ]. O* l& @% X7 b" A; E
1 A% r/ m# C/ O' }
//XXX 还是前面的+ I  Z, X! g. ?3 O; n$ ^: \1 Q
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, / w9 p0 T6 `: H
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown+ a1 W3 _$ P- H2 G# S! R
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
1 q) Z+ O0 C6 ?3 O! i! y  l' S$ t" T; q+ W, r1 y1 n
在后面7 Z5 I2 E3 s  s: Z1 u$ n) D
: o4 ~# E  W& z8 A2 @' A- b$ {
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了4 A3 J3 b* r4 H/ f. C
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:003 P- x! J, }1 j0 R
( s/ a$ {& ?. }7 h1 m+ [+ d
请问下这是什么原因?" u) P+ i( [3 F. _, z2 [  B8 T
" c6 s( ^6 i0 s( `% ~
我百度了一下相关的问题:有介绍的说, `/ u5 k+ F  u0 J5 v+ ~9 z1 M
' P: O4 ^1 P4 P- Q4 K3 r$ g
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。* B7 y9 z! q# j1 c5 @
" y( N/ B5 }7 f6 b: \$ ~; [
建议调试在u-boot中进行,方便确认问题。
; K+ {7 l7 c* u! [# d2 m/ r) }& k2 i/ l; E* G9 T5 u5 t4 g( q
u-boot下主要确认三点:
0 B% N6 z1 o. w$ \2 Z/ o9 {1 a
7 O% T+ U7 ~! H; z1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
0 H, C! v% U) p1 T! p7 C8 ~) ^% _
8 q& h3 ^# e: A% P2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
1 `$ h  l: s  [# B" E1 R# K  v. B* l+ v5 R; G1 Q* Q' M- a
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
6 L9 L  i! Y4 e# E( ^
( `" m+ B3 v6 u5 p/ C3 OLinux下调试也是确认以上三点。
1 o0 @$ w9 v* u( u- A! E6 R1 l6 W0 X: Y/ r
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 11:41 , Processed in 0.042719 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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