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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题5 b5 S% }: f' B$ |  S
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
8 H: |3 m( Z5 B" a) Z- U[    2.107743] davinci_mdio.0: probed9 \# Z9 T: u" r+ S$ `6 e# Z2 U3 Q
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
- u1 |  x3 Y& g: Q; e0 z! }! t$ D& C! u[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
# d5 I" M+ e; L7 j  U# l& x[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
# K  K$ E2 L  \  W6 H$ _8 B# w9 P# i  g% s
[    2.137188] PPP generic driver version 2.4.2# Z3 ~& H2 m" ^) e- j0 ~# F% y
[    2.143236] PPP BSD Compression module registered9 R2 ]" {% t7 N4 q2 }! M3 `
; M( e& I7 ?) G: |

! \( \7 L* {! o" \' J在linux内核中的代码应该是以下:
  w: h7 P0 h$ @8 Z* N  i        // 注册mii_bus
  }! w( ]) B& o( o8 j0 p/ h" ^7 g! B        /* register the mii bus 2.   注册mii bus 2*/
( y7 t) t6 y& J; J        ret = mdiobus_register(data->bus);
6 |. v3 U9 e3 o/ e$ A        if (ret)+ O1 ]" G, X! V
                goto bail_out;
) ^7 |: B& u8 t9 p: l' {
7 g& v; y  B. L! d- B        /* scan and dump the bus 扫描和转储总线*/2 Q1 j/ ^! L4 |
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {, e8 m, w( t' ]+ N  T7 O+ z
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据% ~% c: S( G$ h" K' F
                if (phy) {
' m/ m6 I1 V4 B) b/ ~- q6 C                        dev_info(dev, "phy[%d]: device %s, driver %s\n",- Y6 x8 L* A$ O; r
                                 phy->addr, dev_name(&phy->dev),3 j5 C+ C9 D5 w- u; f
                                 phy->drv ? phy->drv->name : "unknown");
; r. `# g3 i% r! @                }
& l1 J! U8 Y0 Z- a) E0 g9 p* u        }
4 K9 O$ Q6 c9 L; K$ G3 D& w
- g9 q  H4 M# S: L: ?# u3 W9 m9 Q) u3 W$ ?, o$ h( W+ G
最终在后面 网络启动有问题
5 \# ^; P* l3 H5 `8 {9 M8 l[    2.387752] PHY davinci_mdio-0:00 not found6 O1 }- M- v% S* T. b
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00- r* i% m; s0 \/ e; g6 X
[    2.398254] IP-Config: Failed to open eth00 K* v5 B) ~8 n1 y
[    2.402589] IP-Config: No network devices available.& ]8 S# j" W; I* r. J' k/ C- l
5 |# F0 Y% r* s+ `

& C' a$ ?1 g7 z: }3 f

+ _+ J2 H+ _! R1,请问下,这是什么原因造成的?$ Q) S5 J. a* S7 k: G+ |6 n
2,phy模块 和网络驱动开发的过程 是什么样的关系?. k9 M; l2 t4 z. \; T5 X* N# r. {0 J
谢谢
0 p7 s3 T- N9 B6 j
分享到:  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
, e% Z0 Z# g# a4 T" b+ d4 e" z+ K请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

8 r) u; @9 R5 a) h, e$ F0 s用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
2 w4 o& q. q  m+ p+ `) D- t6 G请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?' T. s! b% K1 ^! P
谢谢

点评

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$ T5 y0 P% b9 e- I
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

+ |: [6 Q- P1 d9 M6 zlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
6 E) Y$ ], Z( k8 H7 N- P" V一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
: K9 Q/ x. U" y  C' H创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
5 W  L% ?' e2 d5 o
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
. |: s" l" }: A! G0 t7 w在linux启动时,打印的信息是:
/ m7 e6 A7 q; c$ @( }; t6 \" WEMAC: MII PHY configured, RMII PHY will not be functional,
+ Z3 H6 }% B3 w! m$ R& |应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。2 t' s! ~6 i4 r
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
. k( ?' @8 e5 R; F' a创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

. e0 c- H4 s8 a( J; V我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
5 \  L# j3 I7 e& r* l0 G# zlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
0 P7 ~: H) |: C* l一般来说,板级的emac驱动都 ...
$ t4 P3 }  [  A/ E7 K% x
vefone您好,有些还需要请教下您。+ n5 H) G& U) d
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1- E6 b. J" |' T8 _3 d+ M7 I

( y: @9 {% d, F) \void __init davinci_common_init(struct davinci_soc_info *soc_info)
% N/ t# ?! A5 Q( n* \2 @$ E  s% Z! E4 e
{
* l# d0 p) h" k' H" y( s( b8 T, m0 T& N9 @
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口1 m6 C9 Q1 Q, l" ^5 t0 s5 m' j! z

2 `6 l+ |# O9 Q. R( P2 z" e3 b}* U% g2 v* r( q, J+ n, l

, P) N9 a  f0 _) _- c8 m+ v//XXX 还是前面的+ |0 w: K: I- V' l3 C- A# n& T/ A
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
2 D! m9 m+ ^  ]: y6 z+ a! ], L[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
) \8 j4 q8 f; P+ N/ i/ X3 K[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown5 X; l7 z* l3 t" w) z* _, A
8 d4 u1 e& I2 h- R% M. ~: c2 n) a
在后面* R. M% C) D$ K) Y( k3 O  K8 `: p  V

9 e$ A4 _3 d4 g[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了4 X/ \" {3 H# G- G1 [9 J
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
$ _7 j) I9 u( U( ~( a9 x* `/ t9 u+ Z5 o; k0 T
请问下这是什么原因?
( j# @+ X, K1 L5 n) ]! s1 J: {
1 T/ |( H& Z# e+ Q- a我百度了一下相关的问题:有介绍的说5 J3 \# M/ D  L
& r# _# ]0 L6 H8 A* d9 c  V5 c
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
8 k+ U4 o5 n/ X& S5 Y. S2 H; v& X+ ?$ s* k$ J; b7 M$ u
建议调试在u-boot中进行,方便确认问题。
3 t: ~# w# |* b5 l* D: b' n+ p# H. X4 g7 e" }
u-boot下主要确认三点:
, y/ Y8 k1 w# }- E% S3 i8 K" D. U( ^  p; T
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
: k  l" {. F/ r. p4 }( m9 H% y) }7 M8 p1 ^* Z7 o$ M
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
% Q! v9 B9 X$ O. }2 Z! ^. S+ M/ {7 `) `! m; x+ C3 Q! i
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??( K, f: Y. Z: S8 b* j1 Q$ a$ j5 p

' p) \; U' _3 `; ~4 p3 h* S7 CLinux下调试也是确认以上三点。6 @9 r0 B. p$ g- R  E* M+ ^
3 T- |8 M* g, B( J7 W) B/ o
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-2 23:40 , Processed in 0.044323 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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