linux 内核启动过程中网络驱动不能启动的问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题/ S* }8 e: C; c( g$ S+ ~; I
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
# u  t7 a: a; ?/ S[    2.107743] davinci_mdio.0: probed
, N' ~& m& T; G" M; }5 t% v. K[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题6 |' O1 H' D; r0 i1 [9 b+ [5 m+ q
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
: c3 j! o& [0 n/ P" y[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
- t4 q0 |3 L; K. I$ _3 ~( u3 O( D" ^+ ^, T4 a
[    2.137188] PPP generic driver version 2.4.2
& L4 j3 r; x( Q/ T0 X8 b[    2.143236] PPP BSD Compression module registered
9 z; `( u8 ]1 o$ i/ ^$ h: p- k! V) A  y6 _" l$ E) @) ]1 }; T

/ H# N& O0 J5 J& I" A* A在linux内核中的代码应该是以下:
+ m+ q5 r7 Y) Q9 J) o# U. [1 ^        // 注册mii_bus
. E. w, N3 h  Q# i; M: ?        /* register the mii bus 2.   注册mii bus 2*/
. F3 Z; x4 l! K$ V! n  ?6 L/ w: A        ret = mdiobus_register(data->bus);
/ }6 F6 u. ?' Y! g. s  D        if (ret)* F( e8 t9 T4 y1 k; x
                goto bail_out;" K! t2 Z* P) \- q1 H

: S4 V* z) ]8 O) S5 Z        /* scan and dump the bus 扫描和转储总线*/
$ v, F$ |0 s& s0 X# l        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {  w1 e; s% q" N  k# r
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
8 Y% y. j; f7 r3 C/ x6 m# `8 ~  V( r% V                if (phy) {! }) `  S1 s/ K1 n) d6 T+ ]
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
# B! q: x0 S+ i2 b" m                                 phy->addr, dev_name(&phy->dev),
# M6 E% y- z+ A1 x4 j                                 phy->drv ? phy->drv->name : "unknown");
1 t7 W/ ]' }& Z, Z                }; U) |& `" E+ t# A2 [
        }
! F; L% w& z* |6 j2 q3 @
3 H! U2 T8 A6 `6 @2 R  s
9 V0 T! X" x! }6 H最终在后面 网络启动有问题: \1 i2 A! ^1 X6 C$ D
[    2.387752] PHY davinci_mdio-0:00 not found
  Y% o' [& r7 G3 Q8 d1 l* ]8 h[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00" i, O" A4 x# }- P: B( C" X: y
[    2.398254] IP-Config: Failed to open eth0
  g9 [5 A% O5 Z5 E* [[    2.402589] IP-Config: No network devices available.& q9 B1 ^" D9 X, ?7 a
$ e; y( y( A. R, m. w
3 w; ^* A+ [8 i( B! N; S
; M" [6 J; U/ |3 P! B! j
1,请问下,这是什么原因造成的?
. E& r5 c7 O8 ?- t+ N8 |6 U2 ^2,phy模块 和网络驱动开发的过程 是什么样的关系?
& {/ s- [  h4 U1 g. G谢谢1 I" d6 V' _: j+ o0 M
分享到:  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:343 R# b1 r8 G7 D- b5 ~% o; p4 ~
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
) N4 D# B, w% B" L+ j6 u* ?: f( z
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
% k2 U, Y. G0 F+ y1 O4 |# T( l# b- o/ G请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?. x5 x, b' Y7 T
谢谢

点评

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$ @# ?$ G7 C6 M& d0 j
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

, x) l; p: z) P" r* h& Dlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
. ^% c2 ^1 P% z1 \一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
7 J/ E. V0 ]# \0 r" p+ N创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
3 P' i; I# \9 _+ ~/ c
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
. H, H0 O6 ?+ _2 |& @* O在linux启动时,打印的信息是:6 q9 v$ ]' ?  x7 Q9 y  H! V& R8 a
EMAC: MII PHY configured, RMII PHY will not be functional,* A6 \# [3 o$ n" E
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。! T3 p& s2 u% b( o' I; {( x
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
. u4 H# L% s, [0 `) i0 K( m创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
% U( U+ N$ n6 ~
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
; G( B8 }/ I( K1 [9 b3 I0 M  i# Dlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。- G( L  ?8 g' k2 ?+ U
一般来说,板级的emac驱动都 ...
! ^8 Q1 R, r5 q; @8 y
vefone您好,有些还需要请教下您。+ y% ^% V7 A7 _
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
( f9 T, _2 s7 u( k4 P0 v/ c# w( j0 R1 x% q5 A% l" Y
void __init davinci_common_init(struct davinci_soc_info *soc_info)
& D7 P0 s2 k( g; M. O
' f+ d5 s% F( R4 F{7 D0 A# q- N# j- g1 N0 \

0 O# V; s+ N- e3 C             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口: I8 r( h$ I0 y& i+ j( S: L+ A8 @
' \* d5 I7 g- ~2 H3 P
}- _9 ?3 R8 d( b  Z" f% k

& ]# p8 A  k& z' g: D# p: [2 i//XXX 还是前面的
5 k; z- q' D  @2 o2 A[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
5 P* j/ C2 ?5 L[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown, i# \$ D8 F! ?% A7 b& V
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown5 g+ ?- `6 L& m" m- X0 G* z
( {7 v0 r! [* E& E
在后面! s( X2 _6 Z) P. m

/ f' i3 O3 q( O2 ?[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了& w- V1 {, W  X
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:001 V; w( S6 _* c% K/ @
5 T' N- r0 E6 x1 M- T6 V9 |
请问下这是什么原因?
# p$ L4 ]2 t' u) \, \! F+ i
: A0 Z5 C# K! i, r我百度了一下相关的问题:有介绍的说
- b4 [6 Q+ e  A. R4 W: r: J  h
) r! w! q0 R3 x- J由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。) j4 X4 b, \9 S: [" g. c: o

, T# V. G3 A% j8 V( a( }, K建议调试在u-boot中进行,方便确认问题。
& d0 W2 k* R" m& Q$ o' Q3 Y- C. x, f$ [
u-boot下主要确认三点:4 E; u1 `* b9 R( L- R6 o5 n
$ R+ d* R( L) v5 C  L  w6 K* U
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
7 a9 r4 b: P* Q
, s$ p8 P+ O( t( t1 I1 d* i2)Pinmux configuration to support rmii interface                                //这个我应该已经满足: j& x- h2 s, M" v* ?
: L( R5 ]+ I; E; ~& V  T. `$ u
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
% b9 l! F+ V) _- i9 I7 z2 `& [* u9 u9 S$ X/ J
Linux下调试也是确认以上三点。
2 o) Q" m9 V+ U0 i6 m7 t2 C* Z3 p, `- ?! P  c9 M
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-2-27 14:48 , Processed in 0.047136 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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