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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
$ B2 _  C3 G& P  w9 p( @[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1* Q+ u# U. C# V4 m. _" g  F
[    2.107743] davinci_mdio.0: probed
9 u7 _; [9 J& K7 s% J[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题6 V6 L4 u8 t1 N, B' \8 v8 N% h
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown7 z8 m9 M7 ?" _) ~9 N
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
; y5 E* m4 ^+ n  `$ k! {2 n: T6 @, @& X/ Z- \( {2 Y+ Q
[    2.137188] PPP generic driver version 2.4.29 L: c, N7 L8 {% y9 j
[    2.143236] PPP BSD Compression module registered. b2 n9 f6 }7 Y$ T
: S2 O; O4 L2 T* L0 ?% i) s

5 y1 Z5 {  k! j- @在linux内核中的代码应该是以下:
% I/ B8 d7 v, M! ]        // 注册mii_bus
/ C3 S# l3 A% f7 L        /* register the mii bus 2.   注册mii bus 2*/
! p, \; X8 D! e: ]        ret = mdiobus_register(data->bus);% s8 b% T) h* L5 F- n$ w7 u9 U+ k7 b
        if (ret)4 t" ^! o" N& z# S& c; E9 _
                goto bail_out;
0 L: [- f! }3 y3 p) ]0 @+ J4 W
/ o& t6 _5 W4 [9 k        /* scan and dump the bus 扫描和转储总线*/
3 \& h, \4 A8 o' h" c) c0 f0 O        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {1 U1 ]* a( G* T/ F
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
/ Y+ Z3 Q. [% V8 W                if (phy) {
; A6 l' R; I  v+ r& S5 M                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
  D6 g$ K: V; [- ?/ E5 h4 Q                                 phy->addr, dev_name(&phy->dev),
4 q6 G) B6 W8 B& n8 L                                 phy->drv ? phy->drv->name : "unknown");
# t4 `7 p: i! q) f, W4 d$ [/ o+ L                }
2 Q5 o* L: S" L9 k6 d# w        }4 i% P, K( Q: p+ h/ e. J
( i; D3 u. ~! @/ z  y, I3 Q% {

: E3 Y& E0 U% A! A3 e! w/ q最终在后面 网络启动有问题" q2 w9 Z  i2 a
[    2.387752] PHY davinci_mdio-0:00 not found3 Z: B$ \. \# P' T
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
1 H2 M9 k# M7 h* M& Q# Q0 m# c' z2 I[    2.398254] IP-Config: Failed to open eth05 l4 m. Z5 W8 |
[    2.402589] IP-Config: No network devices available.4 L4 S; ^; _8 f! ]

7 n7 J/ D. g5 w: j" g. n( s. f' p+ \/ S( s

; r1 w) h2 @8 x- O1,请问下,这是什么原因造成的?$ T1 X, R. r, N' g
2,phy模块 和网络驱动开发的过程 是什么样的关系?
4 R* |8 l6 _  K谢谢$ A5 d& l5 k$ {$ T2 O/ ?7 n
分享到:  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:347 h% E1 g- ?7 }2 A8 c1 Q  _! k
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
, y# Q7 Y, ^( I5 K% O3 B
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,( v/ v( R; u0 U! O& p' ]- o- ?
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?0 S& [; _+ y$ L( S% u$ i) C
谢谢

点评

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
  J% B7 J- _! t5 g0 w: U5 s+ h) q, d用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

6 \9 M$ o+ J  q* R9 C- {; Ylinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。4 I. |0 n3 C( O3 W% M3 a% V, Y
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
) u0 m) d2 h  q! ?+ E* F5 C创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
5 U$ o8 u5 C3 E( p$ P
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
% R3 m' K& b6 L' k" L* ?; D$ `" j" b8 m在linux启动时,打印的信息是:
1 l! F- d+ Q# sEMAC: MII PHY configured, RMII PHY will not be functional,
( [8 P: r% Z8 p' c$ k% x4 y6 G应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
! G1 Q. O2 U8 {" b( s谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:464 r- C5 r& o  i5 I: E( q
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

4 [. Y+ Z: A: T( Z; b" j$ V: U% B我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40  F/ n9 W$ b/ ~9 z1 V4 l; f
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。% F( t$ Y9 o' q" w5 a1 ?, J: D
一般来说,板级的emac驱动都 ...
7 {1 |' B8 w7 x6 s8 \5 U/ T
vefone您好,有些还需要请教下您。
- u( _- \; ?! c1 e然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
/ v6 d$ j8 R$ g4 _
. {0 s8 D$ I6 j' h, G$ p9 ovoid __init davinci_common_init(struct davinci_soc_info *soc_info)" g! ^- w) s- N& e+ r8 W) H. R
1 q- H$ Y/ i( v: H" n9 s
{
- r7 S7 ]; [, @$ v4 i
$ b  Z* q# |8 |3 T% K2 |             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口( a8 k2 Y7 t. x* L2 @
' O8 l/ d# P( j& e  L
}
& M" Z: S  I; ?' H1 _
7 ?# G, n( i( h" L7 q. M4 \! X//XXX 还是前面的
! @+ Y; U" A  \$ h[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
1 Q# U8 ~7 n( E[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown$ b! @5 Q$ D# G! i1 Y  A& \3 F. Y4 ]
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
4 ?- Q* R9 y) _5 Y8 S% f5 Z2 h5 ^. Q! _9 ?1 a/ A
在后面( W0 }' t* I  Z5 _! H3 `
/ f/ z" a$ h5 }; J4 ~- F
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了9 a9 n% H& \, A
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
1 E% \  @# ]* T3 S5 s! m2 L. y
4 k4 @& {2 F0 B) ~5 k请问下这是什么原因?! S9 ?/ y% ?" X( p8 x
: a' O- w5 t; R8 e! K3 [
我百度了一下相关的问题:有介绍的说8 P8 ^1 U  ?, d& w( S
6 q& C7 v2 S. s5 o: D( X
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
5 Y3 B/ I) H! e; \
$ G) G$ G' ~5 r9 Y6 N+ h/ i建议调试在u-boot中进行,方便确认问题。& [) h7 m( F' f7 p$ e1 ?! L$ _

8 N/ D8 E( J; N0 Iu-boot下主要确认三点:
  h  s$ ?' U' f$ I
: L. ]5 s, C+ _# J4 k. x# n1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
9 t. K) a' j2 M" t+ P- o& f4 F/ b* l; a8 c% T
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足4 @' x! y& }* D- @9 z" Q8 F! v
% w3 P9 R, D1 l4 y1 H& T: i0 |
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
- t$ @" f, e8 O' I* V9 k
: w. L, e. F! n7 {Linux下调试也是确认以上三点。
+ W4 b- N) _( E5 L, M" r
+ I, Y+ X. k/ O可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 05:02 , Processed in 0.041348 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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