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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
/ \! R* c+ R5 z: P9 l7 z0 M[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff10 o# o$ ~+ q$ z$ V
[    2.107743] davinci_mdio.0: probed. m4 o" b+ y* @. v
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
/ G& k4 \0 a% H) p8 L1 W# R- s/ P[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
3 G5 X2 P6 x; G3 Z[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown) k. r$ P7 {% o9 Q$ r

3 |5 Z+ ]& L  |- q6 _! S[    2.137188] PPP generic driver version 2.4.2
( e- ^& v" E' T0 X; w; u% D3 |[    2.143236] PPP BSD Compression module registered
1 O( G+ P6 c% K& f( p  m7 D! p
6 _2 l  a( U6 @: y: G5 s
# ~* I" Y; C% a2 K在linux内核中的代码应该是以下:1 I2 a& ?5 Y8 s5 M
        // 注册mii_bus
4 p( ^* S& V, e* q        /* register the mii bus 2.   注册mii bus 2*/2 V- l; s# h1 S% \: M, r
        ret = mdiobus_register(data->bus);1 Y! Q2 L% i% h. E
        if (ret)
3 O7 r0 j4 ^2 V+ l                goto bail_out;+ }/ T' `6 |/ O& f' y
" z( l+ i; P8 f6 o' ~  n# c
        /* scan and dump the bus 扫描和转储总线*/
7 L% t* V2 i' M$ Z( U# b        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {- y8 O" Y9 F( c1 |! f
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
. j, t7 T* m6 ]0 [7 @                if (phy) {2 R- m/ [- R% F' C, g4 G
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",8 u/ g( c$ H# F4 t. V
                                 phy->addr, dev_name(&phy->dev),0 q( g6 l; ~- m( z* [
                                 phy->drv ? phy->drv->name : "unknown");! o2 K0 l' {/ q( P
                }' L* i1 R  @- v' \! j' p& k1 c
        }: a2 R3 [% r* z5 G8 Q

4 B0 j! q/ f+ B; f1 _! j- z0 a5 r1 {  ?1 u. u' R5 W9 q  J
最终在后面 网络启动有问题( X( H* _' O% Q( W3 K+ d2 q0 K0 C
[    2.387752] PHY davinci_mdio-0:00 not found. X1 }0 J- C$ c9 u: g  o$ f5 Z
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00+ C! [  A  f8 s) f, p; o  Y
[    2.398254] IP-Config: Failed to open eth08 z" J% y. u+ d
[    2.402589] IP-Config: No network devices available.
2 G" O4 l) a; I8 n0 }! T, z% B0 x3 [6 L( D( s  n
' Z% Z2 y) o& v% s, d# A
: |' D: y* Y& L+ Q* `/ W" k+ Z
1,请问下,这是什么原因造成的?
  ?2 p% G9 \5 D0 Z- G. Y. @# \2,phy模块 和网络驱动开发的过程 是什么样的关系?4 t2 M/ d' I- Z
谢谢
0 Q7 k  v1 N7 C1 D& }" 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
/ c/ l" b1 E1 S  X! q- L6 b0 g请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
) R3 ~+ D7 |: r' ?8 y
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,$ ^( M  k9 Z. U- p& y+ G
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
3 ~7 @0 a/ E" q谢谢

点评

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:330 A2 o" }; z9 o; w6 ?5 L7 d! @) X* }
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
5 w( s7 V3 n0 j( z+ X5 ?
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。; f4 |; V* |! n0 j
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
1 e$ G0 j& i# S3 Q8 ]; @1 h" g$ i创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
; e4 ~# v# x9 z8 O# L
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
% d4 |  E+ R- u, t. Y/ [+ I在linux启动时,打印的信息是:
* K+ B' H" w" [% {EMAC: MII PHY configured, RMII PHY will not be functional,
* d7 H" m* U" h( l9 d  L应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
- e9 \* t8 ^0 t2 C. X谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46( @* v- \3 x3 B& S* G( l1 S- \
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

& i" o) M/ O1 D7 Z/ ?( N( d我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40# i2 S/ u/ c4 m
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。9 T8 F7 m5 v3 ]: Z8 w# H* n8 S& L
一般来说,板级的emac驱动都 ...

, ~; a$ r. c$ q/ O, e; o: k( D: kvefone您好,有些还需要请教下您。
6 Q$ y( A2 U, e' T2 K然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为19 \+ v& N* j$ l( y/ A1 S
( G! N$ b1 [7 p. a+ o/ N
void __init davinci_common_init(struct davinci_soc_info *soc_info), r6 C9 ]: C# ]" W4 y* p- B% D
1 g5 s+ ~. E3 l, l
{
2 }. ?1 t! I3 G( ~" D1 |
1 k2 ~2 W1 f( Y  l; n8 @* a             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
6 s8 B) y0 O3 }& _+ j$ e7 }7 N/ i$ ?0 [+ Q9 z6 x1 N
}
$ @5 o- |8 t4 ^0 Q! K
0 g6 M4 ?8 g# \  \3 [2 A//XXX 还是前面的
: ~1 h( F  c/ B/ ]# ?. O9 d[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, " l) {6 k. [5 x& g) w$ `/ f% K% n
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown8 G9 _$ K& Q! U3 g! c6 w: r" O
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown. }0 d9 m9 W, M# ~" o  G1 E/ P4 R
+ s( U; M* o% t8 U
在后面
6 L( F) m- w/ n% F9 m
( {. W) p6 u" [& h* E8 n[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了% e# Z$ S( E6 d. g  b6 S
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00. t7 s. D$ r1 A

. w: q+ n& C) U请问下这是什么原因?
  o1 ?0 A3 \& j; n- k3 \
1 v+ J% X, L& j# M: q我百度了一下相关的问题:有介绍的说
) s$ g- e  U# D. n: ]" |8 x2 P% L$ Q3 y1 V
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。. v" T) U8 _" [5 [9 d
8 B1 C# P, k' l4 M/ ^* Z
建议调试在u-boot中进行,方便确认问题。
* X! e" h2 r) C+ f1 @; t9 g* W! @6 d9 T
u-boot下主要确认三点:
$ }* M( b+ p1 f* X+ x3 s3 M: o. _+ Z6 F: Y# y' }
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作9 P% K: @  |. S' B; A

0 M0 Q; J" ?! E  ?5 ^- H& c2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
# [+ N0 J5 h! `1 X) J9 y* q5 C  N
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??9 X0 `0 m) y% v; q. k. Y
0 r, ?7 a) w- w; z# H7 [
Linux下调试也是确认以上三点。0 O- N) ~/ L) @% G

1 f$ b- V. W; B6 C  |可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 10:21 , Processed in 0.060220 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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