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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题8 P/ ~, C" l/ u$ H3 c4 s1 b6 ?4 D
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
* e* R5 D+ C2 ^[    2.107743] davinci_mdio.0: probed
& {+ P  p. a2 l1 Z/ P[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题2 V4 p7 b# l! C, H9 j
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown) l2 W8 X9 s- g" D# Q  e& x
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
/ o$ r5 h; I; |( G8 M6 \
9 R. v; T: U" S# r3 U5 k0 V[    2.137188] PPP generic driver version 2.4.2' k1 y0 A' q  i* }. M! ~- D1 e& ~
[    2.143236] PPP BSD Compression module registered
& `: s8 o6 n9 O2 b* s4 I  Z4 i2 y; r
/ f  W; o/ ^# v' f" R- ^' N( |5 j7 L/ D9 h0 o4 ^5 ~
在linux内核中的代码应该是以下:3 F. i* V8 h! k" r1 B* y
        // 注册mii_bus
1 m& |9 W$ ^5 b; t8 g" d1 o/ M        /* register the mii bus 2.   注册mii bus 2*/
' [2 f, \5 x3 E        ret = mdiobus_register(data->bus);2 V1 S# h7 u5 g( l7 @- M
        if (ret)
, m7 U* l1 g9 ^; z                goto bail_out;) \) b- T: {$ v

: w+ c& k* {% z5 r2 @4 [& V        /* scan and dump the bus 扫描和转储总线*/
& _6 e% |4 y6 S  d! j        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {5 }& h4 r8 C8 R6 B% ^( a7 p. _
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
* W' ?7 x! K& d% N                if (phy) {7 _9 A- Q3 R$ P, p
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",7 {4 A& P% P# F8 g  U4 L0 a/ `, @+ c
                                 phy->addr, dev_name(&phy->dev),5 |( N1 q* P+ w2 p) c9 L  o2 K
                                 phy->drv ? phy->drv->name : "unknown");
5 I; F  z7 e4 }' j7 W                }
3 q. b; `7 |$ y; d, T        }6 Z( }8 \- E% K# K$ ^
/ m5 i  W9 F4 Y6 ^6 L! n$ h6 H% @( ^
' c5 l6 q9 P1 _5 P" O% t  W
最终在后面 网络启动有问题
" g; [* g( r& Q  }[    2.387752] PHY davinci_mdio-0:00 not found9 n+ ~$ ^) k; R& T
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00  p* W  @( J. z. ^9 c
[    2.398254] IP-Config: Failed to open eth09 k8 |4 @$ C0 R; ]
[    2.402589] IP-Config: No network devices available.
! u. w" ]! T6 S( S6 T- b6 e" l3 o3 C. l$ x( b4 L
; L3 r5 w& m- a9 x0 C
3 [9 [4 B% F4 n9 T- X% h
1,请问下,这是什么原因造成的?
& e8 R: d' I. m9 G  P2,phy模块 和网络驱动开发的过程 是什么样的关系?$ J; z8 ]; l- f' V9 r- F6 d+ e
谢谢7 F& X: {/ N4 }& \" Q" j
分享到:  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* r- W  Z: c4 I. f2 ?. I: h% F3 o
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

/ v' x# m! L# G, K用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
" P! g- C0 e+ I0 \' s( q1 p6 |请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?7 P/ ], L4 H- @" u; R8 b4 }
谢谢

点评

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
) b1 D7 Y0 I, Q* e2 y- @用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

1 X% E1 e: {  a/ e* Zlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。! L* f# \  M& o0 e' h$ \
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46$ y$ `! U' E$ D; Q6 T* q
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
) V4 @* p. J& R; C
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?( c0 ], v1 R' G& [( y5 t# u9 f! h
在linux启动时,打印的信息是:" w) @, b- o& d. s- I1 v+ k
EMAC: MII PHY configured, RMII PHY will not be functional,
, @- Y8 ]6 y* c, C8 K' i/ e1 ^应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
0 X! V/ |$ R' a4 V; g/ Y谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
. S! G1 H! }' X+ _7 G. ]: J创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
2 W0 c: Q: P  r- W0 N/ _; U
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
3 C* Y; |. P( W% r- Alinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。) m) h8 J1 h* c$ |
一般来说,板级的emac驱动都 ...
( I! v) a5 W* U
vefone您好,有些还需要请教下您。
: x3 L2 ~& q8 X0 ~2 H然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
- N( t5 @- m) L1 M4 o, ^/ P# ]0 k7 ?0 O/ K/ [
void __init davinci_common_init(struct davinci_soc_info *soc_info)! G6 J4 c) d0 }0 s' g) L% \

' I  x/ p" ?  F- {) o5 r{
0 t. n4 _' h3 b/ r6 A( p+ j; ^( E# ]* E$ h, a& P) [/ d
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
. b# s4 @1 ~4 l! W
) k/ o( [& x/ i3 m7 D( T: L+ y}! b2 J+ P/ z# h6 c

& {8 p' y* Q1 Y" l//XXX 还是前面的
% V3 I, E0 D* Y0 |4 q7 N4 W[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, 5 L3 {# v, a" s, X
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
% [1 t% ~7 y. I/ m0 D[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
: T. S9 Z2 x7 s6 z# s  a1 i, z/ a7 e# H; j, c  M! U4 k5 K# g
在后面
4 M% r6 O& h$ G* K" p
# C* w4 M9 b; i! s, V  x: [[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了8 q! }+ e' E1 }% N2 ^0 g7 u
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
6 p3 N/ c4 T. j! ^! O3 I; c3 z0 x. d* U7 D
请问下这是什么原因?' U7 ?1 ?* R8 d
8 D9 W8 s/ V4 q( E4 B
我百度了一下相关的问题:有介绍的说
: v- ]% w/ o7 N2 a2 q
% c8 [% A0 k2 G4 |- |& |由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。0 [( c. d: n4 F# z

2 U5 W4 M3 O1 F! q& k% u; {7 `4 X建议调试在u-boot中进行,方便确认问题。, @0 h7 F" w' w0 @+ q- m
5 x  x7 U# U$ z, U9 h* w
u-boot下主要确认三点:
3 d' b# l6 L) U4 F" p1 W5 W# Y/ W  M' U
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作& I4 m$ I* Z" E2 s# T

+ l  t. S& G! r! ?+ N/ e3 s2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
! Q: A' T+ u) \: b
. [7 B! @. a- I" j! C3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
4 x, S9 D' j- S& \" \: w1 @: y- g' ~: X/ d: c3 c* i
Linux下调试也是确认以上三点。
9 v+ c8 y* F: s
4 ^3 \% m, e- f( n$ x+ e& |可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 03:31 , Processed in 0.042633 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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