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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题! u; e- y1 X1 W: \' y7 O1 q. e7 G& K3 [
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
2 o2 p& h4 c, {: @: B7 Y[    2.107743] davinci_mdio.0: probed6 g4 x7 D# O% h% v, `- o
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题+ Q* ~) B, F8 P- Z2 u- s
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown' t8 }7 L6 m; X) _7 a2 y/ U& p
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown: W8 E2 ?# |) J1 P1 z1 a- `
1 C7 @& u8 V/ j# y, t' M6 ?
[    2.137188] PPP generic driver version 2.4.2
6 z/ C, U; y! ?* j4 v. u7 P[    2.143236] PPP BSD Compression module registered
% I% Y1 t  @. E/ D
& [  J9 h  ?  ]
( B8 G$ _$ V) `- f# @% x在linux内核中的代码应该是以下:
( }1 n5 g; w+ P        // 注册mii_bus
4 W: X. p4 ^/ @" c; Z$ o( c: L6 h$ T        /* register the mii bus 2.   注册mii bus 2*/
0 _! u( J" P9 q1 f  a% W& u6 m        ret = mdiobus_register(data->bus);
/ Y& x, }$ d( ]        if (ret)2 v9 y5 ]' G8 v' Q( k. _  h# [
                goto bail_out;- G7 ^* t4 K* Z# N
6 _" n# o1 U: O+ w/ G$ Z8 ?( ?; f# Y7 h
        /* scan and dump the bus 扫描和转储总线*/
! }3 B# \$ W# m9 V% B/ C) H" h; K! H        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
7 V0 ?; s. W8 V6 D1 i8 j                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据; H8 x( A9 B! ^8 Q. D8 q
                if (phy) {
/ }7 x# \+ e5 z( ~; X4 b                        dev_info(dev, "phy[%d]: device %s, driver %s\n",5 F: I  x  ?, s1 d  K
                                 phy->addr, dev_name(&phy->dev),
( Q+ ^" g; @3 F# ]/ N- l                                 phy->drv ? phy->drv->name : "unknown");
9 q" H$ B+ ?( n, x3 v1 ~                }  z8 O4 Y0 j; ]- E
        }- w' @; f( r0 k) c
' q) M+ g: N- e

8 A* F, Q9 e! V  a: ]1 [7 j' p最终在后面 网络启动有问题" c% b4 }9 m: q8 _- `, q/ [( r
[    2.387752] PHY davinci_mdio-0:00 not found
6 D; u/ v9 X' x( V4 [. j[    2.392184] net eth0: could not connect to phy davinci_mdio-0:005 }5 Q5 C2 K" J8 J" a
[    2.398254] IP-Config: Failed to open eth0
- Y& J: Q  M: G+ B) C% H[    2.402589] IP-Config: No network devices available.( K: i" P9 m' k% ]$ S9 I
( I1 A2 F( j" Z0 `
3 I/ W. M% Y/ d3 M  n. s: [

+ G* u8 o: \1 F# {. @$ |2 Z+ ]1,请问下,这是什么原因造成的?
; b9 M0 b8 c* n, C2,phy模块 和网络驱动开发的过程 是什么样的关系?: o7 G3 ]; G& D9 ~
谢谢& U5 a( I9 a! a( I% \
分享到:  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* a0 z! U' \. C% c
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

! ]  X- b) A3 R2 t0 H* I5 S7 C用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,& q2 d; X4 k0 b3 C) q( X; [2 ?
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
# ~+ j& Q8 }- L谢谢

点评

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
* U# _7 X% l2 \# ~+ k5 ^用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
$ c  R1 ]: [- R4 f; d
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
" F+ S  T) o5 F一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
8 U& R9 U% m8 w% x$ \8 q创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
# J: a2 l  n. @+ A8 p  P0 _* ~
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?' \$ v; |5 @7 I4 ?
在linux启动时,打印的信息是:( y+ }& b- q9 N5 [6 s% G
EMAC: MII PHY configured, RMII PHY will not be functional,# V/ @& I) A* R% O1 @
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
9 Y: c# p1 z. C  E1 i) i9 e谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46* I$ a0 K4 V* `, k
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
/ n% |" s/ l# n7 Q/ B: }
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40. `! h+ a$ b2 j' N- C8 l! H$ }
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。( D) L. I8 O% V- I/ t6 K* J, `
一般来说,板级的emac驱动都 ...
9 W( q0 B3 n4 \" j4 S4 m" J
vefone您好,有些还需要请教下您。
, B6 H7 ]: b2 ]* i" @然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为14 }7 `9 u5 j6 i# z2 J6 ]
9 o! L, A+ L0 @# P$ X
void __init davinci_common_init(struct davinci_soc_info *soc_info)) j9 l: a4 ^7 u

% ~" G5 z/ l+ b4 i1 p$ m/ c{
4 S1 Y+ A7 `8 Y: j5 ]3 d/ l# X: s0 v' r4 E1 u
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
  t. ~' d. g" F/ Y  _5 }  O! @3 A# S, g* Z$ q
}
& {" w% v9 e& |2 u& J0 q! w5 q
& p2 ~1 s9 g0 i5 ?//XXX 还是前面的5 M" e. `( f, l6 `
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
0 H& U' Z4 x! a2 E$ X% }/ s, \- n[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
7 D$ \0 i; k1 }; ]8 P  I* t) l+ `[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
; \# ]! o$ k( l1 A5 I2 ]' P. r' Z  {. y" Q) I
在后面
- \, B3 e; |* w! ?9 |0 C2 q# M6 X+ O# [4 [: y# Z
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了) |( Q& Z0 o  |/ E: g; s$ P7 p
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
: t) V7 W9 E8 }. j8 D8 F3 I
" U4 O; w$ e) Z& M' t: e, }; B请问下这是什么原因?# ~4 F) f; }* V; M

& q- O% c4 n9 }9 U& s2 T1 k我百度了一下相关的问题:有介绍的说
' x, x' b8 v8 U
/ j4 G+ p# a! i( A由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。; C  w! ^5 G4 r9 F8 r

$ \  w9 H8 x5 G* [8 {* X建议调试在u-boot中进行,方便确认问题。
$ H1 O( q" x+ Y/ e- k% @. S0 @* F% z' q9 s, f
u-boot下主要确认三点:% m  G" [1 q  n0 b  z  ~

4 \0 u) u: {7 c7 A4 M1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
6 L2 k, _1 S( k1 H
+ m0 I0 F( U; o( o9 e( s- q! U# \2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
- D" {- H2 R' r* {
7 J: }8 w# G( K& V! N6 E  f3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
: k" u. j; t0 E
' c1 D" m5 P1 j/ v' G! r/ s* CLinux下调试也是确认以上三点。# _& o) Y) C7 j1 Y0 D3 W( s8 ]
) N9 K% I: e( |( I# R: d
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 22:10 , Processed in 0.058286 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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