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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题, g; b6 i$ v6 e( F/ X  s- ~( m
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1" [+ v6 ]; G# ^2 c8 H
[    2.107743] davinci_mdio.0: probed
6 o! v! z* [7 C! f% o[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
- {3 I3 k! H) X1 ^) f7 x7 I[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
; v7 n2 w& ]  W7 @: m$ y[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
6 b/ h3 a5 \$ r' v3 x' m3 _1 ~: c/ B3 }- X& [2 A4 [
[    2.137188] PPP generic driver version 2.4.2
4 @+ O! @# p- {  Q[    2.143236] PPP BSD Compression module registered& w4 l" P# d& o! N) u+ [! F# `, N) q

) R) O# X7 _4 N: }- A" y1 O7 P
- ?5 w/ p; J, e4 \& ~; y在linux内核中的代码应该是以下:
. e) i( p& @9 |4 F+ p        // 注册mii_bus
0 ]) n! O! i( S6 V. ^6 {        /* register the mii bus 2.   注册mii bus 2*/
4 a1 v8 u* c' p" I        ret = mdiobus_register(data->bus);5 f4 q( ]- S4 j
        if (ret)
* B% I8 B- x! }                goto bail_out;! j6 ?6 P+ ~6 W5 T" z! e
; E; `( c( M+ z8 O
        /* scan and dump the bus 扫描和转储总线*/* z, v6 C: j& t. e
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
( l" o5 S. E) e9 o  A* M                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
6 h6 V5 j  P. i$ D; J: F3 ]                if (phy) {
- }' z/ L. L3 z, n                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
/ N9 r- E9 H# ^3 Y2 R* ^; h8 L9 p3 n                                 phy->addr, dev_name(&phy->dev),
1 p( R: b. I* g( Q2 D  B+ p9 C                                 phy->drv ? phy->drv->name : "unknown");7 A9 c* `' N" {/ \; j+ |7 }
                }
# G; o$ x% D8 }. u0 e* z        }
) ]7 S4 g- j. G* A. N3 O6 S$ G+ ^) n4 z; e9 }' o/ n

/ q& i6 ?- [) \$ j9 ]最终在后面 网络启动有问题
( q# g! U6 }' \$ m6 m[    2.387752] PHY davinci_mdio-0:00 not found" b2 v/ V2 R( x' C3 d
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
2 S5 r1 A6 U# E" p[    2.398254] IP-Config: Failed to open eth0
9 }3 t9 n( v8 f* H. {( P[    2.402589] IP-Config: No network devices available.+ N3 t2 B, ^9 s5 V. c
+ [# v: ?2 Z! @# Z
- z5 G+ i0 \$ t, u- o6 k7 \/ C
% k7 E0 y8 ^2 p% \( ^6 P
1,请问下,这是什么原因造成的?5 N3 c4 ~5 W  ]) W( T6 Y; v# S
2,phy模块 和网络驱动开发的过程 是什么样的关系?  T+ H8 _, r; b
谢谢
" p( H1 n. M8 r3 M% V. q- R, 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
# Q# b8 H  \* m3 Y+ u  O请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
6 K/ h# |5 j' x3 o3 F& h' ^
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,/ t9 ^; [; Y5 F. }* T% K* s$ y
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?8 L  H9 G  U2 w( G3 A
谢谢

点评

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
0 T5 y4 f8 }; w, d5 g用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

; y) x4 O" }5 w6 G0 `# `; \7 Plinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。6 ^7 q7 x5 h8 Z7 r
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:466 @" K9 {9 A5 t
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

- e: Q1 K- f: S4 u" h6 B! s请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?+ r- o# D9 O( {6 K
在linux启动时,打印的信息是:" q3 C! M+ u* y# L% ~6 g! c
EMAC: MII PHY configured, RMII PHY will not be functional,
) r2 z' o, a* s应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
# A5 N; S% @9 _% _5 U谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:468 a: H- X7 I  Y# r1 K
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

- f0 e9 A# }; G+ Z) t我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40+ S: T5 I1 w, q, x. H
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。) I# h8 ~, C3 l9 @# s) D" X
一般来说,板级的emac驱动都 ...
; w6 o- ]  n. `) M9 h; p# H
vefone您好,有些还需要请教下您。5 Y( {% |! I/ \0 {! a% N- C8 ]
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
' {( C, X: s8 N
' @+ r. I8 C4 f- W# nvoid __init davinci_common_init(struct davinci_soc_info *soc_info)+ r- E1 v$ g0 ^$ Q0 f( x& E1 s
) ]" x) m( q- x# G
{6 e& A2 v  g" O2 a

/ k4 T( a: h1 D* p             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
- R" }* E  M' h2 d4 I  D, ^2 e4 ^! v; b" k; _3 F
}( J) z/ b6 A! _0 i. @: ~

- J8 {# i/ b; j$ N' [& g7 `//XXX 还是前面的- w$ X! s; _. i7 \6 a8 x
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
+ y3 z* S# O' o, M) _' E[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
6 r7 I/ m4 R  O[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown. z( d' t* @" Y3 [6 P1 G0 ^9 A

+ Y% @; D9 O9 ~7 y( A, C在后面
6 q! I1 o- o9 Q4 h5 b: i5 m" _5 C, h3 Z
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
( U' x; {, N9 J$ Z( q( j) `. ^3 Q[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
2 y8 ?2 W! Q4 f  Y4 V; [# i' @, |/ s$ L0 N: R( C% i) e) `
请问下这是什么原因?
7 t5 e: n6 D7 c: l, Q- S8 T8 Q& ~$ _4 x3 N' h6 k, h
我百度了一下相关的问题:有介绍的说
5 R5 P( l' ?0 r$ P2 D
$ C0 Z3 V( O8 l. h  r由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
2 s3 u6 l& `  c8 C" O
# T6 |: f3 ^2 X; _建议调试在u-boot中进行,方便确认问题。+ v/ ^! S: c4 i( Q2 c, ^* t/ A
: Z+ f- {. O, ?0 U. o* t
u-boot下主要确认三点:9 g* s4 G# r' k) H0 `. C' n
3 N* i! y7 c. M8 x4 z
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
5 l6 x& f3 _: z) R' [  @' V' s  Z& H; |8 A' a2 g3 x  W
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
3 s: _: g  `; e* ~* l
4 {  V$ P5 \# U& k2 T3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??$ c- k* j. w1 g" A

  N# Y) w' ~9 O+ P. Z1 H0 uLinux下调试也是确认以上三点。
( W& i7 E: a1 `( E; Z+ s6 A- {4 z% ]; [6 o! r
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 07:26 , Processed in 0.049452 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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