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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
+ q9 n6 l/ x& G[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1* f& p0 }  I1 x; f4 s; G' r- d! d
[    2.107743] davinci_mdio.0: probed0 [: @% p: R* H5 Q
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题2 \+ M; M4 e# v' J9 V) e* A
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown; n1 d  Z0 t0 _3 M, l
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
, w% q7 j/ o! ~- O# ~8 c- `; p5 o7 m0 X; t" s8 X- f' H
[    2.137188] PPP generic driver version 2.4.2
1 S) a" v1 p- p' s6 h8 z[    2.143236] PPP BSD Compression module registered# ?. M" Y. `) l/ {$ L, l4 m- }
/ C; }) n2 u9 u1 B; ?; F; V$ [

' L* j. T) _  V  N7 i. {在linux内核中的代码应该是以下:& s0 [1 ~: c. |& Y" y5 `
        // 注册mii_bus
* e. E2 X; z* J" |        /* register the mii bus 2.   注册mii bus 2*// \* E0 O9 i$ A, h0 z# x
        ret = mdiobus_register(data->bus);
  g$ f1 {9 W) J* h$ a( W1 R* N" y        if (ret)5 J& E. \3 F5 {. W' E
                goto bail_out;- W) ]" M! v) H: ~; G. k

* T  l0 W9 ]2 J4 l! _) U$ O! a- s        /* scan and dump the bus 扫描和转储总线*/
8 @2 ]$ k3 a4 [% O        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
* [3 ]9 c3 _+ m3 a& k3 m2 g3 x                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据/ Y* S/ t( o+ n+ \8 G/ K
                if (phy) {9 m* _  k) M5 h" N5 K" c
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",2 H" [' `8 E/ O& }. b2 s. J9 f8 e5 |
                                 phy->addr, dev_name(&phy->dev),
! b! _5 }, U. S- }& B: Z6 m                                 phy->drv ? phy->drv->name : "unknown");5 r. S- e- Y3 W, a0 [5 ], L
                }% f# p4 Y" X+ G9 j
        }# J+ k( l4 ?0 c& J: I2 e. h4 Z
; Q- b0 G: W% \( }$ {
9 D4 M/ X- [, l6 v4 K3 S
最终在后面 网络启动有问题
+ j' }  c1 q7 |2 ~: `+ B1 G[    2.387752] PHY davinci_mdio-0:00 not found
( y7 {: W3 v) F5 y, P* Q[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00' n3 M, v  U* N, R& A
[    2.398254] IP-Config: Failed to open eth0
8 w! ]  N& G  _4 g# B[    2.402589] IP-Config: No network devices available.9 j" l: ^5 }& |# k+ P; r

( w& i& t& N. }0 U( H/ F) R: `* f8 {

( T! O; d! B' O1 w( i1,请问下,这是什么原因造成的?+ Y8 O# E/ V4 j* L
2,phy模块 和网络驱动开发的过程 是什么样的关系?9 j! V# p' e* r+ p6 A
谢谢
' d& B, S" {7 s+ P1 ~7 d5 I
分享到:  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
6 `  Q2 D0 E, P! x& [( ?请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
4 `, o" W0 \4 X' T
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
) R  I8 p" j8 d0 B" [- w请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
% Q6 R0 u" Y- L6 I" G谢谢

点评

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 x, P& T! b6 y  h5 o% I; K
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

0 l* @* Z0 G7 q" S/ J! i0 Wlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
+ P$ C6 j' @# w* R1 l一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
( \: s5 X. ?4 j1 e6 F创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
' \) j/ y- C6 Z- v* K) `9 Y
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
& H6 M& H9 i" f( Z) H1 U; I# Q在linux启动时,打印的信息是:
( P, T! R  X( DEMAC: MII PHY configured, RMII PHY will not be functional,
$ O! |+ J  m1 _% P4 V4 s6 _7 {应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。" D8 i! A% W! ~6 r. W
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46) H& _0 e4 ?! R' z/ D  P
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

3 D& B" N9 a2 f8 {9 C) A我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40' H6 C5 H" z! W
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
6 ]; f/ T% E8 M% D6 ^' o/ U一般来说,板级的emac驱动都 ...
2 Q% L' o/ N* ^  `+ h0 `, M: k
vefone您好,有些还需要请教下您。
' y0 X( K& W+ ]( J8 W然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
' e# Z, S6 w$ b; z9 j  b! X: S+ N, d" C
void __init davinci_common_init(struct davinci_soc_info *soc_info)/ C/ d7 w8 H; i! {; P
' b4 Y8 E2 b. {# ^. ^- s
{, |$ K. j: t8 ?, F, f5 K0 {

/ [* m8 d5 S" S4 T             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
- s& s( y9 r4 r9 ^+ i4 Q5 q# n' c4 X$ u; m# J  g- Z. B5 Z( K4 M
}
# S: T; r2 ?. w# q8 d# z
% L* x& n1 K4 x1 c//XXX 还是前面的
  ^. ~  Q# v8 e: Q( _/ m5 @3 @$ f[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
3 J  X( I6 r: S/ c1 ?[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown$ n( x& S& W/ K6 U+ M" X, {
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
5 I) j3 s9 i' l& n; Q. k' h  k5 `/ j7 W' Y8 e% Z
在后面
2 b9 E2 Z& m/ i5 G
& n( r) F( w! O2 [[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
# Z  O9 @; ^9 M[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00# Q/ S% ^+ p/ S; V8 U
. B" a/ k& l: I. [" S
请问下这是什么原因?
4 F3 O" B% U, L8 B0 Y' S5 W$ H( i# o4 s: c! `7 k8 u- k
我百度了一下相关的问题:有介绍的说
' `8 ^3 X  j2 v0 f; v/ r5 V/ i( D6 K/ Z; ]. o* s
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
2 C& a& o7 w$ |. Z$ q( P" G( M6 B8 e6 y# z5 Z. j9 b- H9 M
建议调试在u-boot中进行,方便确认问题。
/ t, e' |; J8 M) N% |# }. J. k" `, P/ S- X0 `* @
u-boot下主要确认三点:
; m# r  w: I6 Q  D/ l- l! c/ K
  U$ q0 R  O0 W" e/ F1 U; W1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作& u7 j. m. f: X3 I

0 G# _2 o; |2 X& I( R, d6 P2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
5 |$ O5 I; z7 C" p
& G1 m/ S' v1 @' ]4 u: h+ d5 b3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
# C; @: Q: J, a1 V( f& H% n" L0 L$ H) ?; n2 t4 o
Linux下调试也是确认以上三点。- Z7 `* T& P) L! b& Y( x3 ?5 s

7 e  G+ r+ q: \3 R' m( \可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 15:41 , Processed in 0.041491 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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