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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
3 x2 ?1 v6 x5 t% y* n' N[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
, _" t/ X7 h% r7 M) _# m[    2.107743] davinci_mdio.0: probed
. D# V1 M# n' P. {/ Q1 J) k1 j  R( l5 b[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
/ ]5 q1 V5 F8 c- d: Y[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
! z+ W* g( A. g8 p( ~/ T[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown  Y6 a4 B- B1 K/ m

; P. J* u- ]! v& b7 F# W[    2.137188] PPP generic driver version 2.4.2
( v/ [2 m% ]: U3 B7 q6 N+ x0 [[    2.143236] PPP BSD Compression module registered- N9 U/ D9 B9 A" x0 @3 I
( h! m. d% n( h7 e! @7 t* B9 Y

7 u9 ?( L" J" l" Y" E. F) ]* A5 j0 Z在linux内核中的代码应该是以下:+ q8 g- ]4 \) U7 I' {
        // 注册mii_bus( s! z0 o5 l( b4 o
        /* register the mii bus 2.   注册mii bus 2*/) k3 A) \8 B" i& h
        ret = mdiobus_register(data->bus);
* g+ S4 ^# }2 m        if (ret)
/ l, Z1 y' t* ], s! X) t6 W                goto bail_out;" v3 z# r$ m* u, [3 u- w! u+ n

! _- R) j8 B6 X4 \* n" {* D        /* scan and dump the bus 扫描和转储总线*/( N0 ~/ n& v3 L8 H6 _; u
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
1 x$ E$ a% S2 ]; b% t) s( k& l                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
6 v: f. d; F5 L+ }% n                if (phy) {
6 h3 J5 P& I- T8 p4 {2 I5 s                        dev_info(dev, "phy[%d]: device %s, driver %s\n",5 m  m. \' E# n
                                 phy->addr, dev_name(&phy->dev),
1 l- k/ h* I5 a  u9 a                                 phy->drv ? phy->drv->name : "unknown");
% G1 f0 r" k: S2 k/ |* l  @                }
3 X/ i/ o4 o4 R: r, x' F        }
) d' @; h1 e, {+ K0 u9 e4 X
+ _8 n6 Q6 |- d5 G) F; R  ^$ ^; A( o* V& P7 C( W6 Y: Y
最终在后面 网络启动有问题6 `% p+ k  D' B/ L  K+ A
[    2.387752] PHY davinci_mdio-0:00 not found- p3 D: X  f) \( t3 ~& q2 }
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
. }) K+ N( N9 n0 A5 E- |[    2.398254] IP-Config: Failed to open eth0# _. [/ e4 z; i# w
[    2.402589] IP-Config: No network devices available.
: Z: d, A( X+ Y/ |' e1 a' G
2 u9 G/ w7 s! O! R* j( _% H6 {- I: q; F' I2 f6 T- J( x4 {

2 O% `& S- ~; ]$ o6 w9 a  j! X. U$ Y1,请问下,这是什么原因造成的?6 Q8 b( u: t2 \4 X' s9 H- d
2,phy模块 和网络驱动开发的过程 是什么样的关系?
- Z  S* v+ Y5 l9 i* f" {0 C谢谢
: [+ [  Y! c7 Z% X# g
分享到:  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: \7 }" G: i8 _3 J# }
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
0 `$ \/ ]% n# I7 y' N/ i5 d
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,, f4 k" p9 x/ C
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?' W: G. p# d( I, 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; r% L8 ^. o- s0 r3 M. F! D
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

5 u8 u: L+ @$ e/ O! qlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
6 W+ p( R7 f6 j$ R1 g一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46& X" ?0 n3 N; p5 l
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
0 {$ _6 |9 g. \+ [1 C
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?* l0 G3 l; y. v0 w7 e8 S0 ?
在linux启动时,打印的信息是:8 G) U) ?. m2 d  W8 \0 f
EMAC: MII PHY configured, RMII PHY will not be functional,
3 T8 L, ^0 @7 z6 ~5 D应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。- |: F0 m3 f, }: l& z; x  r
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:464 Z8 F. E" r0 D0 T8 ]* h5 a6 Q
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
& V+ n3 M4 C& J" F6 U. }+ v
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
. Z8 P6 y, S2 n% X% Ulinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
8 J' z! g. x2 p# C一般来说,板级的emac驱动都 ...

4 e9 a0 _' Z8 [vefone您好,有些还需要请教下您。( v) l6 h  T0 \* H* O
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
3 P/ C! j; }9 ?) \* F% M
% @4 T) G  a/ y9 H3 `! Evoid __init davinci_common_init(struct davinci_soc_info *soc_info)7 }% o  M) N% W) |" Q/ e
: C9 ^: J/ k+ e' c
{
" Q9 m8 F; H/ g* R( @1 _( j' R0 m* F$ b! ]! ^0 @) f7 q
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
) D# ^2 {5 M1 |7 u- z
, V- V6 L# t: i  m}
5 [" O2 O2 P( h, r$ i# @) }
$ ]; P8 {* \( J- L7 m  v( y//XXX 还是前面的
0 B  y6 L2 l4 M[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, # ^1 I6 G% i3 s  c: a" I7 V; W
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
# `0 C4 L. p- K% |$ J. T[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
- k2 E& P  g. [1 N) O/ |: v. e- Z1 o
在后面4 }$ x8 T$ v' _6 S2 P4 D* K, F

1 D( @/ p- K5 U0 \8 p: f$ G' l) U[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了/ M% ?  l3 r" {' a! P( d- @
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
/ `9 \2 d) _5 Q4 O4 c$ s8 [) Q4 G" B9 |) j( U
请问下这是什么原因?4 L' A  o. S7 E& k& l% j4 |' w
! |+ i' u# |. H3 q, d* d1 k4 c
我百度了一下相关的问题:有介绍的说
3 C1 C0 m3 X; O$ v! ~2 J& L' ]  R$ M9 E
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
7 N& x8 k- X9 K% j6 s9 o$ h" ?* t% n/ Z6 I0 C' V- o; B5 v& g
建议调试在u-boot中进行,方便确认问题。
$ t, N* n" x! S; E% {+ J
" A; ?6 i2 S( `  J$ {8 xu-boot下主要确认三点:
2 }- K4 c* v' r6 A* i3 ~0 T! }
1 r; Q$ p# L% {0 M/ ]+ w1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作3 g6 M+ j/ n6 D; V* m% R
  H1 m; g7 |9 n. A3 V: P+ B# X
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足$ a8 e  i5 b! D- r

" v5 \' U6 A8 G8 |3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??! a. V3 l, x# h- A' S

* C# h1 {% D7 i* u# n4 wLinux下调试也是确认以上三点。
1 T* \0 f& g% I; d8 e* C: y% J* v" ?, H( M
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 23:41 , Processed in 0.043671 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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