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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题$ q' d; I" A- \/ d8 r' m3 L
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
3 R8 F9 V3 O- B- _[    2.107743] davinci_mdio.0: probed) f/ T) t) |% q0 F
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题, k7 `2 b& J" t- S
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
5 F1 q$ {# e9 n; J5 y4 X[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
  K8 U5 v% O& R' @! Q$ l2 H' f1 ~! N; `  I
[    2.137188] PPP generic driver version 2.4.2; }4 g+ T9 S6 V1 {1 E+ p- h/ [
[    2.143236] PPP BSD Compression module registered
! i+ N2 o, ?+ [1 v: O+ x7 W
  ~3 O2 k+ ?& A* i8 e0 l
/ t6 K' H. a" N  l在linux内核中的代码应该是以下:
1 E  e4 _6 b3 f1 q% [        // 注册mii_bus
" i( y0 _& i! G/ s( f8 n        /* register the mii bus 2.   注册mii bus 2*// M4 u9 M5 M5 A+ K
        ret = mdiobus_register(data->bus);. N: A! x% \* o/ q2 u
        if (ret)
1 q4 [* E8 w# k. m/ z9 y                goto bail_out;
6 O2 j& s, I3 r8 V0 R2 B4 p$ I+ n
  H. [3 L8 I3 O, J        /* scan and dump the bus 扫描和转储总线*/
: g/ F# J5 P% ^1 ]5 g        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {6 Z4 |% w% ]; m) k
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据+ O! ^4 y' r1 d5 ]  u  C. [
                if (phy) {
. N8 D! ?5 x' @/ m7 d! P( ~  J' d                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
! U0 T, v1 B+ j7 }4 v                                 phy->addr, dev_name(&phy->dev),! ^4 x$ W# o5 }; r( F: N) R6 T
                                 phy->drv ? phy->drv->name : "unknown");' J! @  a8 U# W& }
                }9 w- D+ O$ i. F  }* b& Y
        }
' K5 \$ h- |/ F. ]$ q
1 d' W* w/ ]( q; d1 H
& H7 z5 Z6 k6 ^最终在后面 网络启动有问题
* u* G  a, K- [[    2.387752] PHY davinci_mdio-0:00 not found
5 o( u* U. F: |- q[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
& t' A! L9 y5 [7 R[    2.398254] IP-Config: Failed to open eth0, u4 B" W+ ]% C8 Y
[    2.402589] IP-Config: No network devices available.' n$ O0 J$ |7 t2 h

! \6 q0 E8 Q' t) b" Q9 w) D5 g0 _; Q7 X$ u4 L
1 Q7 P# L9 j& c1 I4 `
1,请问下,这是什么原因造成的?
8 {( a) s2 {- ~2 k2 p2,phy模块 和网络驱动开发的过程 是什么样的关系?
  p2 \& K3 F3 r: Z0 E谢谢
( k0 n- y: E$ w! o, W
分享到:  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/ r3 D& r" V5 I/ s5 Z. L
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
, L4 L& s  m* b" L) l
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,( g% i) s# k% B! v" K
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?/ {2 |5 Q) ]6 I) x; ^; K# E1 a7 d( W* X, d
谢谢

点评

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:339 M. C5 B  U7 j7 R' N
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
# L) z; E# @. R5 N0 O
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。# E; k  o4 h* X: q: h( n7 R
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:461 B& l7 i! ~7 x
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
3 @% @: J( b$ t9 r- H  k
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?; D, ]. j: F9 t3 J9 ]0 B: r
在linux启动时,打印的信息是:4 n$ ]- L9 Z2 m/ P$ x2 P, g+ h5 _
EMAC: MII PHY configured, RMII PHY will not be functional,: l+ A( w# I; ^; e% I& t
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
$ D/ {- d# N) v; H/ x- V谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:469 e8 Z" `) ]+ I; e: i
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
. h) K9 [  D/ h2 ]% I! ]2 o$ C
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40, m, O9 A& k, y9 f- d# z
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
* R" w  U: V& X# Z' W  g# T2 g一般来说,板级的emac驱动都 ...

9 y+ A/ V! c4 n9 y, O: |vefone您好,有些还需要请教下您。; ?* y/ ~9 D3 g2 F* }' V
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
4 @) L( ]& K' a$ T& q8 m" A, B  W9 J* l$ r8 p$ H
void __init davinci_common_init(struct davinci_soc_info *soc_info)8 _4 l! C$ R5 v9 B2 l# L

  r; H  y  n1 `2 Z{
! u! w2 A9 {! w" p4 ^+ \! S
  m& o9 a& E& S' {& B$ q; i             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
: y. m, |9 V0 m8 S% p+ G8 {8 w, R
2 C, Q3 Q7 ]' T/ d7 R$ `/ k6 V* I# R: ?7 m}; s6 P7 w' n- R0 C+ N8 u8 _

) G. c6 f1 A2 U! m//XXX 还是前面的
' u  [  Y; W% h! y  _5 e' `[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
. z5 P  w6 P) D[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown% H, |4 M# s- `2 v' I0 k. d
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown4 U0 D6 M1 p% E3 @% ^

' p8 e4 S5 x; ]' C2 v- q# x6 B/ w在后面: a) N- X3 i6 J4 ]& M2 M5 @

# t$ M% w, X0 W6 t[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
. _3 B  w1 P5 p[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00/ \: ~+ r% K. C( P

# g7 p/ G7 ?( A; |* P. ^0 I请问下这是什么原因?* y$ Q. T9 r' M& e1 w8 A
. W0 g& p# W0 y9 p4 p/ a1 H: U) k
我百度了一下相关的问题:有介绍的说' B# @/ w: |4 {0 q/ e( {5 C

' ]2 U2 B! c% k, d$ q/ F1 M1 S8 @( j由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
3 l2 P3 z2 h5 b( G# f8 c6 X
; \( }4 x( G3 h$ l4 w, g建议调试在u-boot中进行,方便确认问题。
. X; N- X8 M  g, R7 U8 b2 d/ s
5 m+ G% R5 L% E0 ]1 T# C6 }u-boot下主要确认三点:7 L# H3 n0 G8 q0 O  N

8 U; q& k' p: T. U8 r  R2 `) J1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作$ i( O) T' b6 I" z% a0 |0 |. J
: W5 U' Q6 Q" U/ P0 |) {7 j: @
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
# o) C- Z; m8 a1 G% g/ n& D3 m/ N$ f) |* `1 p$ p
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
; ~- B/ c+ S) k
. e( x. k9 H* S! @* D0 m+ E5 y. ILinux下调试也是确认以上三点。$ i& h4 Y  T8 l: E8 A

% K1 c$ X1 Y+ R8 K4 E可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 01:58 , Processed in 0.043245 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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