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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题3 `. E2 e2 p( y/ I& |
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1# _) s9 x# C# X8 u
[    2.107743] davinci_mdio.0: probed7 U/ C7 k2 ?# J3 g% @* q# B9 K
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题7 E& S) L% u! [/ K0 Q
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown4 {5 H( x" u8 S7 ?, \3 w
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
% m  U, J" M# m$ }, V7 A2 a% w+ A$ S1 Z% k" p, [" f4 v
[    2.137188] PPP generic driver version 2.4.2, t3 g8 `  Y1 f- m/ k+ S9 z
[    2.143236] PPP BSD Compression module registered
' }; h$ i1 D0 C3 x" p! _! X: Y
1 @1 M( M( F: Q, u+ v' R1 q; Z- M* `0 W' S8 x5 t
在linux内核中的代码应该是以下:
4 H4 R% ?* e6 V% s/ n5 G        // 注册mii_bus
/ n( `9 o; ^! j% d7 D        /* register the mii bus 2.   注册mii bus 2*/
) X) D+ Y- n. m" N2 W        ret = mdiobus_register(data->bus);
' @2 R0 H# I3 k        if (ret)
8 T  {2 L1 M) b/ [1 m. E                goto bail_out;
2 g9 O& Q3 l. O! |
7 q9 @6 \( B+ F* |3 B4 c: G        /* scan and dump the bus 扫描和转储总线*/
# |/ L/ \5 {+ u/ G! `        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
4 O) O1 N; \  A4 k                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
* f# Q0 A( z! E( [+ G- Z                if (phy) {5 O5 s! n  t: V2 g: p. @
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
1 Q' l& p  R5 Q' h4 P7 N                                 phy->addr, dev_name(&phy->dev),. j  [; }6 j; I8 k' ~- x& R9 @
                                 phy->drv ? phy->drv->name : "unknown");) v' V: G9 j/ }
                }  o) V4 R  L( t8 m
        }4 H4 B3 t. k8 _" z8 _/ G9 N+ o

4 ?7 N  Z. E0 E1 v  R8 i* F* }8 v
! H/ u4 Z. o' a6 n5 h1 @最终在后面 网络启动有问题/ M: Q# Y" K" `6 x0 X
[    2.387752] PHY davinci_mdio-0:00 not found: u6 T9 \' O. b0 W
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
; @, p2 p; b3 U+ V# |2 c8 f[    2.398254] IP-Config: Failed to open eth0
# U/ W  c  K8 L3 s9 u3 E- ?[    2.402589] IP-Config: No network devices available.
/ N, P2 l! u/ d3 Q0 d# Y" b/ N4 g" d
# S& ~( ~; ^$ h) ?4 z# q+ N0 j
' d7 J7 K4 A5 q
3 K& [4 H* s" j) z; ^) Z
1,请问下,这是什么原因造成的?
. ]0 Q. \% _" a2,phy模块 和网络驱动开发的过程 是什么样的关系?0 b. C; c% X, i+ c0 n) V
谢谢
# c+ w; I# X: ?0 M/ R: Y
分享到:  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:346 c& D( K4 X; a* Z
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
6 i. b  e. a7 Y5 A/ k  ^0 ?
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
! q, X. z8 A4 }4 f请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
+ I" o+ ]. `- g+ u1 J. 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
, J0 v, V2 b" y/ C/ G0 `用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
5 K, o+ o. w& i6 ~0 Z! P
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
! R- F& ]6 w- |' @* p% o一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:469 j& p# ], r: ?6 k& z+ B
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
& x$ T" U; v, P) g
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
% r9 i/ e2 c! F9 L在linux启动时,打印的信息是:9 ~( @5 g5 _. j' b. o1 D) q, k1 L
EMAC: MII PHY configured, RMII PHY will not be functional,) o8 I- R- g0 ~: _# f# K1 G& }
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。! P& ^, b9 X" y( C
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
# J, N/ c7 W, v4 H, J" Z, S$ G创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

; N+ F4 v$ y, U- }我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
9 F5 o& L+ |9 v, @9 `+ `5 B# Tlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
. Z/ [* Q# T( c3 l' a一般来说,板级的emac驱动都 ...
! c9 }' z" f* ^, k, z
vefone您好,有些还需要请教下您。
% m  y1 ]% n" [  m2 z4 N然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
( Z  W- {4 a6 }, {6 n  c8 X& K: n" K; ^3 c; o3 r% R+ Y1 I4 n' g7 F4 S
void __init davinci_common_init(struct davinci_soc_info *soc_info)
+ Y& B  `. \) @( E
; |4 p& H2 Y' M3 j{1 c# ?# L; Q' x

$ Y  g. D0 `( S. X             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
# `; q6 |) Q, p% U& G# B$ A. s& f5 D
}: t$ E: O3 L$ M( H7 v; h6 L

" p2 m) T8 b9 a8 |$ P: P5 l1 G//XXX 还是前面的* C) U# l- t( x7 |
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
% K+ Y& j( j( k# I. v) C[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown$ q* x5 b. s# k1 A
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown) f2 f( z; i  b; E# x# s
9 m* b& P9 x& G/ o- z
在后面
2 f# R; a& x( M# ^4 v! l- n& g; T7 a5 y; g* m. u( Z7 Y
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了% Y! R) I. Z, P* Y
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
) Z; t9 k& [7 @" P. _# P
$ u* h" C( ^& G( G3 U请问下这是什么原因?
1 e$ e0 |6 R# R1 Z0 {4 y0 H; F1 |$ e
" l* G5 i0 c( Z' U我百度了一下相关的问题:有介绍的说
# `3 J6 ~8 B( t
+ ]  G, }- }3 |, }8 n由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
( m/ u2 F  L' u- B$ j& S- m  w+ f; s
建议调试在u-boot中进行,方便确认问题。
/ W& I! }+ M. X" X7 e7 z7 [; I
u-boot下主要确认三点:
8 L, k; Z% V: |- j/ h7 I  n( G2 s  S" t( y% l- o8 F3 q
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
$ j( G, `$ y4 @
/ u& m" H0 R& a" }, y2)Pinmux configuration to support rmii interface                                //这个我应该已经满足$ G+ m. U! n& N% x$ O3 C) ~& r

& x- `8 x; J7 a, ~+ ?8 O3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??# t; m* Y) m# \) q1 z8 a* K

4 V- d& o% _5 t' w# Z$ B2 _! hLinux下调试也是确认以上三点。
7 v# V5 W: _5 v9 @6 A
; j/ I8 `$ d0 p# D6 Y7 s可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 22:57 , Processed in 0.045844 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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