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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题+ j8 n7 {, ]4 I
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff19 I# g# g% n7 X- U& `( r
[    2.107743] davinci_mdio.0: probed2 F. o) l8 y  T6 F( K- r
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
+ p7 Z' ^* @% M$ D[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown" |& W" Y* V0 R$ `& c# v0 G; |
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown* a" i: R& a- h) Z  S
4 c/ C8 y3 B# H5 x* h
[    2.137188] PPP generic driver version 2.4.2
1 r. r7 o; ?5 X* |" m# ][    2.143236] PPP BSD Compression module registered( H& A4 Z* b' X) |6 o' o6 d

! d' B1 }3 U0 Z5 b9 Z- u8 s+ R& l6 U0 E7 W& L8 X/ i
在linux内核中的代码应该是以下:+ O5 w$ t4 `7 Y" p
        // 注册mii_bus
) a4 ]+ b0 V; J% l6 ]        /* register the mii bus 2.   注册mii bus 2*/
. v  S* N% u. Z        ret = mdiobus_register(data->bus);
: g( q0 I0 h( p/ ^% d2 X        if (ret)
  E2 K- ~: O2 R. I                goto bail_out;& C3 v( ?. C6 B$ C0 L6 S) a- g7 S
; |# G2 C2 F  H& {: |/ m3 i
        /* scan and dump the bus 扫描和转储总线*/, p! n5 d' |" G" c9 l1 a
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {) n# u# Q: m; H( r+ O6 c
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据$ O% q! P9 U/ |. @+ c7 V5 j2 k& q
                if (phy) {: ]& Y$ `' M4 b
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",8 m1 y; O9 V5 b+ }. W+ u
                                 phy->addr, dev_name(&phy->dev),+ m0 g  ]4 X& C6 A7 P% n+ H* S3 t* a
                                 phy->drv ? phy->drv->name : "unknown");4 q! l7 v# C* {! B5 }* w( o0 Y" H
                }
  i/ H8 ~, s; q% v% j! F" N* b        }
4 l6 ?( c/ q! Q! C
, j8 F, C( K1 F- A) j1 ~- W& v' q+ N' e0 F; N4 o* ~* V1 l
最终在后面 网络启动有问题; p9 e. I% y. |
[    2.387752] PHY davinci_mdio-0:00 not found* i9 p2 Q' U+ Y2 T( r
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
" L+ g: }6 B/ a+ C7 s: h[    2.398254] IP-Config: Failed to open eth0
# }8 N! c8 F9 F' H[    2.402589] IP-Config: No network devices available.
: ^1 O6 f! k5 A2 @7 w0 H) `, v$ e( A* t

* e: R8 C# N% [% c4 T; @1 U

; n8 M4 y/ ^8 Q0 C1,请问下,这是什么原因造成的?2 z4 N. t9 y% ~( H) k1 u
2,phy模块 和网络驱动开发的过程 是什么样的关系?1 e0 H, C' ?( V% D2 w: L
谢谢
, L& x  g1 [, ^
分享到:  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
$ Y, i; d4 Y' n/ Y7 v2 n! G请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

+ N( h2 M+ R. D2 `用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
8 E5 E9 J/ r4 d/ d0 T* n4 \4 Z请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
! _7 ?' F9 F, M0 Y: e谢谢

点评

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
& |  X2 z/ U2 [( S( B( k$ X用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
  J5 {/ h; S; ?) S, D: L$ L; j
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。8 {7 o- a1 W3 P+ c2 u
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

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

. A; o2 R& g9 Y' M请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?# k6 ?$ K8 |8 A: P" |, {
在linux启动时,打印的信息是:
5 ]6 K- X/ {0 `EMAC: MII PHY configured, RMII PHY will not be functional,, ^3 |2 N/ c9 Y; C
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。# k. V& [7 Z9 `
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:468 ^0 P; `- l  x; ^3 E+ l6 a
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

' L- y/ u3 f9 \# Q, \- ~& c8 E' f) u我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:400 P: q4 q. [' ]6 c
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。: }; s7 T  G3 q) w3 \
一般来说,板级的emac驱动都 ...
1 S4 V$ @1 w: Q/ }9 o
vefone您好,有些还需要请教下您。
( t, s% z0 u( x7 W+ Y) y5 G然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为18 ?" O. q; i+ H1 h7 A

6 j; f5 d( e+ m$ N; ^) P0 uvoid __init davinci_common_init(struct davinci_soc_info *soc_info)5 `+ a+ [0 `9 Q+ t9 c7 S, U* k- i. j

, L5 b  g; T  J. o{
8 ~; L+ Z; e  J; Y+ ]* e/ `5 `' n; H/ c$ b: Y0 ~. X) E' c
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口/ a, c& X9 S! v& g
7 n$ y( n/ @6 @! a
}
/ V* P& x# r8 z, ]
) |' C4 J. w" x; Y- X' `5 L/ g' F9 F, e//XXX 还是前面的1 A- P0 Z  m7 l1 o7 ?
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, ) i8 m# J* v6 l3 r( e% N
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown0 e  ^! J& R) P7 r
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown8 U7 S' s7 q4 [3 V, \% S8 V) ?

% i) q8 x. g5 S4 Y/ U- |. b! D在后面
5 k4 m; Y4 n: a/ \0 @8 j3 p1 x3 l$ ^/ D
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了0 E8 a3 A& X, U- q: P/ p" B2 `
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
! e, z, G0 t5 x: ~  Q% d2 g, u
- ^# F! B2 k" D1 j* M1 |请问下这是什么原因?; |0 F) q" X' _; Y; d: L

( F& m: H: j3 y+ P  i, g) Q我百度了一下相关的问题:有介绍的说3 L1 `1 ]/ v+ K7 S  k

# y5 ]# R6 F/ U由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。5 o: `) j3 }9 p8 v3 b1 m* y5 D
5 U3 Y% ~! Y1 a( j! h* D
建议调试在u-boot中进行,方便确认问题。
7 b" g, w3 e1 b
( ~7 U  X) C% d# B) ru-boot下主要确认三点:
' W% Y/ |8 l# V+ \) F( s# ^' C3 K* Y& j: w
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作3 i5 i! p# B# C0 r" ^! b
# V0 B" f0 `2 S3 O2 n$ J
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足) D- ^: c% @: \" j4 [
& e. q" V3 C" w
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
" @  [# j" l; q, Y+ h
! V4 U& y% ?3 h3 X/ g- z7 `Linux下调试也是确认以上三点。, q; H4 Z$ d% U) o) O6 P1 m' q
" j" u5 Q9 _6 x; i
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 02:20 , Processed in 0.042352 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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