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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
3 D) h3 W# I+ l/ F. b& `/ ~[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1! q+ c, [. a1 o( G0 \8 _; M
[    2.107743] davinci_mdio.0: probed
) \. Y. c  S7 A& L8 m* p[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
% o) j9 g. E( C; i[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown6 l, Y4 `/ k7 G8 S# _2 ~
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
! e6 s( D  M( j6 L4 _+ B8 `8 L7 M* y+ k! l9 |1 g" b8 e# X9 H
[    2.137188] PPP generic driver version 2.4.2
; U7 ^/ b1 F- T. A3 ][    2.143236] PPP BSD Compression module registered
! A8 A& k7 b" z( o3 F" z5 c# @/ z
. Z' g6 z' _  R+ Q& q$ i' s; J
$ }1 Y* z/ _( U; c- X. E在linux内核中的代码应该是以下:
1 e- D9 Q* j# k# n. f" }# K, g        // 注册mii_bus
1 `5 ~' U. N9 A4 j        /* register the mii bus 2.   注册mii bus 2*/! j! B/ \% w* `
        ret = mdiobus_register(data->bus);3 I9 R) V" v' M' G; x9 |
        if (ret)
4 L3 \7 X9 h3 k                goto bail_out;: Q6 L! p" i3 j: Z) x  m

8 D0 X) l) `0 K$ t4 C        /* scan and dump the bus 扫描和转储总线*/
' G' x' M: \6 Q. W0 b% f2 I        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {9 O; n" _, r, m
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
4 X! ^, W) X4 j$ K$ u                if (phy) {- E( e  ]7 m% ~5 @4 C0 ~$ m2 B- }. z
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
+ C' d" Z( c* F' [+ q( j( ^                                 phy->addr, dev_name(&phy->dev),
: ^( e& Z, ~9 D- i                                 phy->drv ? phy->drv->name : "unknown");
2 b  k3 o  L' j3 [$ W                }
) ], v+ X( o' q0 I' m! t        }
! t2 Q6 F# n2 F7 q, k* q3 i, I  B0 {5 W. O. ^8 d

7 i. l6 B9 l' V0 n3 B最终在后面 网络启动有问题
4 R! ?( W9 G! j& p; N, j[    2.387752] PHY davinci_mdio-0:00 not found, g9 m5 b! E- i4 ~  h
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00! P2 q( V; o. z  U
[    2.398254] IP-Config: Failed to open eth08 w1 s$ r( B9 G0 I, d
[    2.402589] IP-Config: No network devices available.
) z+ ]( l7 K' C" }( x( v/ p
& j- s) l' ~3 Y: R/ k- Z
6 D, D& c( e* }+ W! K

9 L. Q% H, d1 O& q% j! @3 P1,请问下,这是什么原因造成的?
1 {; f; `( ]5 c2,phy模块 和网络驱动开发的过程 是什么样的关系?
# h& ?0 @+ z0 ]+ y% n5 A- w0 ^) w3 }谢谢" \: x- r) O5 m% m
分享到:  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
" |+ j6 ~- Y# R; T4 a$ }7 `+ E请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

; T4 n* q5 h" p0 J6 F4 X% W- t7 I2 e用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
4 [$ f: i8 ~+ v, s# [* u8 K  k$ D$ g请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?) E, s& a, S- Z0 p  |: u
谢谢

点评

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+ v8 C% O0 D3 w
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

5 y! P# W6 ~3 hlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
3 D8 c6 Q0 e. G5 M一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:467 W3 a+ M' `( {4 s3 @, C
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

+ D8 x% d0 a+ M2 r& ~* ~# g请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?2 @; L8 l  X; `, o  K3 v- n- e4 P
在linux启动时,打印的信息是:. o  T; o$ \5 y  S$ f1 h
EMAC: MII PHY configured, RMII PHY will not be functional,1 U6 d) n, ?; i1 L0 ^$ T" z  D$ I
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。! {4 }. u/ ^$ S% y" H/ b# e
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
% |6 w  A' c% {" h' G: S3 L, `: {创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

4 [, L1 P7 |5 O我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40$ L  Q9 @' d+ P( t0 `2 L
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。& h( y: X9 t! |" c  T% }8 J
一般来说,板级的emac驱动都 ...

7 H) ~# e+ {4 x% C! _# h& o! z* Ovefone您好,有些还需要请教下您。
) t+ _" `8 k6 Y! ?然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
8 n3 q# i+ L0 }) I' T  z* l. v; v! m9 f
void __init davinci_common_init(struct davinci_soc_info *soc_info)$ d5 \/ u; {' g! j9 K; Z0 B6 U7 X
# X# N8 i% S3 ?# L2 Z
{- ~( y; g4 u& b9 N3 P" Y/ }" q
9 H; J8 `3 A9 V2 d$ [5 |  B! R8 j; ?
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
: }% M3 A/ j# _: j# I2 e
' y% K1 M, j3 w- s0 b}
$ `' {% u+ O* A' d9 J  S
: T2 E: ?3 e% u8 c//XXX 还是前面的
1 a. z  c0 b  o7 g: F[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, 1 V) ]" U' \2 t
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown5 Y1 e& u* K. M- M
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown2 {7 u& k' `+ i0 D: G

8 A+ M; w; b. k2 R1 q! v2 w在后面
! @" K# Y& W8 C3 U  @/ H# E6 ?* L* u; ~9 ^
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了: ^" n9 i3 e9 {4 [; R' }/ {  \
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
: _# D& e: }8 N/ I( x9 r" O8 E7 G7 W1 i8 f' y
请问下这是什么原因?
* A* r6 Z  D  {1 s* |1 L0 G# g4 [. J- d) A
我百度了一下相关的问题:有介绍的说2 H  ~1 e9 {& m, X

6 {! B0 ~5 O& U* H: R3 c由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
* N  y! `; M9 y$ X6 }
# `5 \, X0 N" ^+ c  G# J7 k8 Z建议调试在u-boot中进行,方便确认问题。
4 q2 C6 d1 }2 t  q% n: Z* ]) ]& m3 h/ u1 {
u-boot下主要确认三点:: z8 A' t# N$ q5 x3 ^

$ U) L: W8 @; n, Y& p1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作! U! D3 K' b* i. k% i

# }- a% O& m! q2)Pinmux configuration to support rmii interface                                //这个我应该已经满足9 d: [% j. t+ u
9 U: T. o5 C9 }
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
) Q& z/ @* a- _9 V  I. ?, J/ d: j; A6 ^* `6 X
Linux下调试也是确认以上三点。
3 W& n% p9 D2 a7 t) t. F( F, ~( s2 r# w
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 04:16 , Processed in 0.042893 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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