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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
5 f( S4 t0 s) U  I9 P9 y+ m[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1) n6 X0 g' K: g/ r$ B; ~4 q- ]
[    2.107743] davinci_mdio.0: probed6 a) r) |3 e* h" O- a1 l' `+ E
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
! L! Q: v( g3 X( T) J6 j[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown) p. v( ]7 l' J# }
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown, f- F# Y  F$ w) |% X# A' j/ N

( v4 Z, I" A0 F# C, p: W[    2.137188] PPP generic driver version 2.4.2
! Z5 ~7 _  M7 m6 l[    2.143236] PPP BSD Compression module registered$ I; H7 m! y; B! `

! K8 _1 o& m+ {! o7 A
  G2 B9 p! n2 E. i1 ]在linux内核中的代码应该是以下:
& U1 g* J. A7 b6 m8 b        // 注册mii_bus
- l9 b( H. M' [8 {, u& g        /* register the mii bus 2.   注册mii bus 2*/" ~" B1 \% b/ N; }; [  M6 T
        ret = mdiobus_register(data->bus);
, S' n- J6 V; J7 q: c( p        if (ret)
: ~/ b8 m0 e) Q: U0 @2 J% u                goto bail_out;3 ^4 S% q% ]( M" J/ M

7 L. E  c0 Z; y        /* scan and dump the bus 扫描和转储总线*/9 \. o, E% v, a0 @7 N; A
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {# l& l& e; u5 ]; Q1 ~8 u
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
! x8 U: S6 t' C. r                if (phy) {3 T6 k% s/ g, g7 `+ a, U2 R
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
% d! r2 g5 N* b% R                                 phy->addr, dev_name(&phy->dev),
: y& G: k  A! E) }                                 phy->drv ? phy->drv->name : "unknown");
; Q+ W5 i* K7 E                }
' N7 p7 R8 ~) L8 S5 V; z        }
- `7 C7 |' K# c: @7 D' A0 y& A4 J9 w& G+ B  i6 `8 c" v. a% k, T
( q2 j% u2 S2 _) V9 B: m5 p1 L
最终在后面 网络启动有问题
, s8 F" f" v: H9 N[    2.387752] PHY davinci_mdio-0:00 not found
1 j( [9 a% Z/ C4 n8 e; `2 X[    2.392184] net eth0: could not connect to phy davinci_mdio-0:001 H* }2 V; H5 H3 z) g+ M0 d
[    2.398254] IP-Config: Failed to open eth0
1 l9 S, ?& r6 `( @$ h[    2.402589] IP-Config: No network devices available.
7 r: G3 O: @) T6 ?9 P4 T
* ]5 ~3 ]0 k# O( B( {4 G+ r% r2 M& g: c

* A/ }) I8 _) P* F1,请问下,这是什么原因造成的?2 G/ F% o+ c& y. d; H: {
2,phy模块 和网络驱动开发的过程 是什么样的关系?
4 b& H+ n+ L, k谢谢% \" m& C* }  B4 [: g) 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:34
- ?4 [7 }. F/ ]请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

# b0 c  U) D7 S9 a用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
* k+ y! |# U4 M! t) h" Z7 d/ z3 t请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?- v8 A0 V* J: |, f
谢谢

点评

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
/ G/ |. X- W; L, Z3 i用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
1 e2 v% }6 p$ }: ~& I
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。% z# ?  N5 u! i
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46$ D/ ]# P- T, F9 f# U  _
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
6 j* b0 V/ B6 w7 ?. }
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?8 G# B1 T6 q# G: T5 }% g. T* f
在linux启动时,打印的信息是:
3 O7 y( L- @( Q1 d* e* r3 hEMAC: MII PHY configured, RMII PHY will not be functional," g3 f8 q( \5 n4 v; P
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
; b* ]% m' Y6 v% n6 N# H1 W; v谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:465 h/ ]# f# z! s( K3 D& l% @# o) y$ L
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
! f& H/ O! u. I+ w
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40& j+ |; ?* Q. D
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
5 _3 C0 w7 H" K4 R0 ]( N# T0 M一般来说,板级的emac驱动都 ...
2 \6 J1 Q; C0 q
vefone您好,有些还需要请教下您。" E+ m# @$ y6 _1 g# i4 t# Z; N: g
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
; p# C2 g0 }& G4 B7 U- z
, x6 A: N) y  _1 I& Hvoid __init davinci_common_init(struct davinci_soc_info *soc_info)
8 D; {& ]" [0 k" S- A
4 _0 M( h) c8 N! t# L& @9 e{- h  V. f6 j! W" |' @7 H4 P+ S

3 x, l/ \; L+ h4 e! ]5 W: I0 V             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
: e; ~  Y. }: t5 x1 s: |6 a9 E5 n+ R7 t6 G2 X# i4 H8 h5 i
}1 E+ D$ A; y3 @' ]: G
# R, L$ w+ B6 b; h+ z2 [6 J. w, T% g  T
//XXX 还是前面的
! g) J5 x1 w" T1 a[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
; v. Y9 F2 W( i( b6 `. a! x4 X+ c[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
/ V/ E1 e2 w# I2 y  H* N[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
- X' M% D! M7 D& {4 @. ?: p% n
5 B7 j, K( r2 m0 a* t0 [8 }) d! Y在后面3 }$ c4 D% X9 @9 _  l4 X8 P
+ J+ T+ O( b- O9 w
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
9 |( g. j5 D$ c( Z3 X" l: x[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:002 L: j* o$ c7 d- V/ ]/ b
# r' ^9 A; L& u% _, K1 O& C
请问下这是什么原因?
. o" i( e+ u7 x* {
  s/ k. q" J0 \2 S7 r8 t7 J  d我百度了一下相关的问题:有介绍的说
) G4 M; V  X1 k' T9 E; ?6 I, {# v% _& A( W8 O" Q3 c8 X
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。3 y* [0 O7 s! E6 `9 Q
  K$ `, y9 v' E* I; g
建议调试在u-boot中进行,方便确认问题。9 {8 S* i: v7 s3 S% ]
' p+ u' u% M. y/ E
u-boot下主要确认三点:  ^0 t4 w3 [0 L5 ?" p
& i2 c0 x; \; S! e  c
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
6 s' {6 S5 E: L$ K/ }# D  p& J: |( n' C
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足- Z* x) _* l5 s; R5 I

1 X0 p  D% f: r! d, h% I3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??' I1 S, q1 V7 W4 V- @' U, {; p

6 G3 J- C. F$ M* U4 xLinux下调试也是确认以上三点。( E& X3 U9 ?9 E. j. M
, F% R% T3 n7 q- P9 [* I
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-16 13:05 , Processed in 0.042898 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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