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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
1 Z+ H. P" F# A[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
# n; I7 {2 Q! T! Y1 M[    2.107743] davinci_mdio.0: probed6 ~) o4 n1 H7 B1 i) X( E( r
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题: P* D: h, P& g1 p* N* L/ {
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown0 D. E1 j  _" \3 P- X
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
( e$ j5 N- C3 h2 j, _) f8 @  \# e, T/ W
[    2.137188] PPP generic driver version 2.4.2
7 m" q3 A9 ?2 P0 @2 h) d/ o$ |[    2.143236] PPP BSD Compression module registered: x9 r  {7 T0 l/ m/ ~2 s+ P

. q2 i3 V: E8 t2 i3 r) Y+ J9 w0 q" Z" Q! _& ?2 h1 ~/ A
在linux内核中的代码应该是以下:3 D7 @9 F1 B' {, ?) Q1 Z
        // 注册mii_bus/ ^) ?5 k4 g( ~" }  @& {8 \8 s4 N- z; Z
        /* register the mii bus 2.   注册mii bus 2*/9 ~9 X0 F" d, z/ U2 Q
        ret = mdiobus_register(data->bus);
/ G, }) t( R' v( f  R' a2 f/ Z9 i        if (ret)
4 q) ~" D: H" t8 R( v                goto bail_out;
8 G  l( p1 n' g; m
9 D" I& Z% y* Q; \        /* scan and dump the bus 扫描和转储总线*/0 g: q/ D3 p; e5 a, G
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
7 E2 a4 w7 X) r: }- C  E                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据) u; Z" b4 J. I+ _; ?# H0 U
                if (phy) {- e7 }9 l) L. U* u% e
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",: X3 r/ H- U$ h  p4 E
                                 phy->addr, dev_name(&phy->dev),- W& {# D0 H& b" A+ I( K
                                 phy->drv ? phy->drv->name : "unknown");
# H0 |3 t0 e% R. S                }$ u# m' y" a7 i5 d9 M
        }$ q$ A- ?) m: q5 x( r# b

& Q  S" ?" F, c, @2 [$ I  q+ g# h! r" ?
最终在后面 网络启动有问题
" @! e1 w9 V$ s/ s[    2.387752] PHY davinci_mdio-0:00 not found
" L8 n. Z: S" Q6 e# ]$ h3 |: }[    2.392184] net eth0: could not connect to phy davinci_mdio-0:004 M: ~) D6 w) \! H  P# l' i
[    2.398254] IP-Config: Failed to open eth0# U/ N0 c6 w  M0 E# [. Q; c4 `
[    2.402589] IP-Config: No network devices available.% e6 t8 f( y9 c' s# C

3 P/ I; g9 S+ u+ y  H0 g. L" ?+ q
+ r6 @. d& \$ H( ^
$ d9 m: o( s9 C( N+ k
1,请问下,这是什么原因造成的?
" z$ k; D4 L; `0 _$ o( I2,phy模块 和网络驱动开发的过程 是什么样的关系?# w( a9 c+ u6 T0 `! K
谢谢
/ m5 n1 n0 G9 _  X. |3 Q
分享到:  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
0 u) ~; p% w: ~+ I' Y+ s请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

+ ^! I9 S6 h7 i) G2 d' s+ D用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,( }$ R5 q+ k5 [' n) f8 q) C
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?4 h% G. K$ I$ J3 M5 `2 m+ 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
% T6 C& A; n/ u; R4 f4 h5 E# r1 c用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

4 ?+ }, ~" X& r9 h3 U0 {- flinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。% B* I1 A) B6 D* u, k
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
& i5 K6 o& S! y% s创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
" p2 u* m# m! f' p; v1 t6 n
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?* C0 n( B: W! Z7 s9 u* Q# m  i( |
在linux启动时,打印的信息是:4 K' S$ s2 U- g) V
EMAC: MII PHY configured, RMII PHY will not be functional,
- \4 N* B  d5 @应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。1 g" l# o% u0 ?9 ?/ `1 d
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
+ m9 K8 H: ^  }1 s创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
( M) [3 f2 Y6 V
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
( A, S+ D% A( \linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
7 E1 {- {9 w  ?( K* j9 a% O: o3 j一般来说,板级的emac驱动都 ...

! P; O  |: e6 f) E& M0 C6 k1 Avefone您好,有些还需要请教下您。
3 n' n8 X& @( l% ~然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
0 l( p  }; ]/ a8 V/ N# b, P+ C" U# N( X5 R, q( w, _
void __init davinci_common_init(struct davinci_soc_info *soc_info)
0 O+ M0 k  L2 ^
1 |$ i* u7 Y# q; C8 [$ D0 z0 s{  p1 ?  k0 v# \" i5 V
/ E0 t$ K9 e% {5 B; L7 R6 N7 j
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
9 ^) d4 Q( _8 G3 E0 ]7 g' V! @9 a& I; l, t. R
}
" D# j- E0 |) i
, ]# Q3 ?* ^- ~9 K% o# v# P//XXX 还是前面的
# v. \' B0 W1 u9 g  W4 n2 Z' B$ |[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, # @, a  g) e( G
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown# l; c! u9 h* z, F# ]( Y" S
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
1 X2 s4 Z; y5 P5 P5 x" f
& U: R# E# ]* a' U& q# q# n" m& r在后面+ S5 p% S, r  c* l$ @3 `' M6 v
. Z  H# H8 s1 V7 M
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
% w) ]9 T+ ?! I; ][ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00+ W/ l& _+ d; E- K

& P5 z* k% e. e" c- X请问下这是什么原因?3 A2 W+ B  X0 \. C! |7 b, s
$ t2 R/ U# Y5 L: A% S
我百度了一下相关的问题:有介绍的说
5 O- `3 F0 c) o$ ^# T$ y% z% ^
$ o2 p& V- g+ t: \& s由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。/ {& S5 U2 ]. k% i/ x9 _- D' l0 Z! I

6 d1 k9 |/ W# k, Q  e建议调试在u-boot中进行,方便确认问题。5 Y4 I0 y4 X7 y# X9 E7 O* t

( }) u8 U+ E5 s; U- a* Gu-boot下主要确认三点:( K/ M" p( t; f# u$ R4 p+ e
7 b8 C& x5 F' d% b# G+ K" D3 i
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
4 y6 [5 X8 E/ b1 [( M: @5 R9 A; e: S
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
: h, _$ q# c3 Y; h, Q' u0 C
5 p. w* Q! e) u; c3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??8 A4 @/ \' i1 c+ J+ ?2 `

3 q4 ?/ Z/ e- M# B; P3 C) \3 WLinux下调试也是确认以上三点。5 g4 c  I8 R; j, n+ l
" Y" E3 x2 R* Q! v' ]7 x3 N
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 04:30 , Processed in 0.046427 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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