linux 内核启动过程中网络驱动不能启动的问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题5 K6 j8 M. G3 B4 c% U. i6 J& K' b
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
# \; u- ^5 D. z7 P. a[    2.107743] davinci_mdio.0: probed5 V1 R! t/ R% Y
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
3 E0 L7 q2 Q7 r[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
" v: s' p0 h3 R* ?/ o[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown. [" D, f- x4 _3 `6 [) q# h
- E8 m) r7 V/ j& `) X
[    2.137188] PPP generic driver version 2.4.2
! k5 Z! j" j# Z- i1 B[    2.143236] PPP BSD Compression module registered5 F: r; \. |. Y- |

5 ^8 M2 d5 N/ V' a! V/ B2 _! ^
3 `0 a; B8 |1 q* `在linux内核中的代码应该是以下:
% Y0 h& `# F& d# o        // 注册mii_bus
3 w  O1 v3 L7 d; S- ]        /* register the mii bus 2.   注册mii bus 2*/
) u7 i( m' b* _5 f3 q        ret = mdiobus_register(data->bus);
! F  e/ o/ }- Y8 f3 x, b9 c6 F        if (ret). X% a& _  @  u! N4 b6 }9 X9 E6 R
                goto bail_out;
& U8 B: D. |: Y& x, }7 C+ e$ ?1 m  ?+ T8 j  [* B& d
        /* scan and dump the bus 扫描和转储总线*/- p, N; D$ ^- t9 w3 X* b6 U
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
0 c% |$ \7 s2 {8 q                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
  `( v5 m9 q, A# }7 Q                if (phy) {( p. C% z$ r: p- m2 y7 m% F6 u
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",' {' W/ @' a4 l/ D+ q3 ~
                                 phy->addr, dev_name(&phy->dev),
5 P. A1 \; ~) g                                 phy->drv ? phy->drv->name : "unknown");
/ l+ J% \. i+ n- E. L                }2 L; j6 g5 V/ a
        }' A7 I4 T* f" B$ Y$ D- C* D; r

7 k, s$ L; K* H0 a; [
8 c' K" N$ P  }( H/ \" O5 W最终在后面 网络启动有问题
% f! \& `8 `. y3 ^. x[    2.387752] PHY davinci_mdio-0:00 not found, i" C  [7 P& j5 G  s
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
/ n8 g- R$ h8 {; V& L[    2.398254] IP-Config: Failed to open eth0
3 M0 l& E0 {* w2 M1 h9 w[    2.402589] IP-Config: No network devices available." `8 h, s' a9 ^" y, @% v2 x' l9 k
% g$ ]/ _6 R  ~2 ?& H
0 u5 E$ w- S- v; L' C, a% F

& Q7 Y6 j% v) o/ G- F6 l1,请问下,这是什么原因造成的?
- ]) |3 ?6 D$ i4 ~5 ~* O9 [, F: o2,phy模块 和网络驱动开发的过程 是什么样的关系?
% H& Z) U5 V! s3 f$ g谢谢9 T) G" e6 N* |7 L9 d0 Y1 r4 ~( 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
' J$ O' p/ {+ f) O8 s请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

# `) K& E0 O0 k/ b6 @7 j! w- U4 {用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
1 ~- {( a; W$ C& }+ Y/ |2 b请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
. H4 ^8 `) S! a; a2 |! N谢谢

点评

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
- L  ~2 @! e/ u, q4 a用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

9 |( y5 V4 `$ A) @2 f+ X/ ulinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。8 N! h0 ]# c4 x% n: e
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46+ W+ U2 J% e  L! i( P# i0 \
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

6 r) ]5 x' ?* e  q* X  g- Q请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?, c6 u# q7 B% b# |' H- r
在linux启动时,打印的信息是:
2 a8 {6 a$ t& g1 m6 VEMAC: MII PHY configured, RMII PHY will not be functional,# S$ P% R7 i1 @0 R
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。# k: J- p1 b2 }! X+ I, I
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:467 f5 i. ~0 Q! ~
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

& j1 Q7 X/ F6 G/ W( l我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:409 @1 Q( ]8 O. z% a
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。  R9 P- s2 n; @; a5 v, B; v7 Z
一般来说,板级的emac驱动都 ...

: a/ G  X6 A. N% i  Zvefone您好,有些还需要请教下您。
% p/ P' i, y$ E% U) P* ^* z然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
* k( s! }7 ^! V* B- o
% [- U6 i0 D8 Dvoid __init davinci_common_init(struct davinci_soc_info *soc_info)
4 \) Q- k% ~& f) ?  c
! v& n+ e- t  C{
% d0 a# d# d0 [- v5 ?# \7 q5 f5 C- S0 D' f: N  D
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口6 s- p, _! |5 L2 Y) Z

. L3 a4 p0 @! [4 i}4 W$ Q9 V# u! M$ o0 C# I
+ w, _" N& x! y* ~4 |: O
//XXX 还是前面的
' s, {3 n6 q& ~3 v[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
2 f& Q4 ^- u6 A5 [$ x( w[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown+ c6 Q# C) o: ]; j- x  F% Z
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown# ^8 m& j* j+ E) P, p

2 [7 P# x% K, [6 p在后面2 _$ b  U9 e( v5 A) }

- ?1 A. c- ]( j9 [$ i2 E9 B& W. d[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
4 ]1 I+ X$ Z( }, U3 u4 m% _+ z[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
5 B7 g" I- y; a! \$ o& r1 X7 Z2 H
/ `( {3 e, ?+ R: Y* |; x5 z请问下这是什么原因?
9 D  I, d6 g, V% _3 Q( ?- R! Q' O
& F( Z7 @* h3 K' Y. P1 a# O9 C我百度了一下相关的问题:有介绍的说. {. C5 E; g: ~  W+ B; V& P

2 L0 M* @. b, c3 |) a5 @$ O# E由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
; N( D) q  v, m. x( Y' c' T. v) N% G8 d- ?  l! v& C
建议调试在u-boot中进行,方便确认问题。
- @, @+ v& W% l3 B' I/ G- ^/ t3 y7 l4 h# D7 e# ~
u-boot下主要确认三点:1 Q. G) B, d: K5 G0 a

  h6 r. Y' u& x3 L# M1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作# ~3 w, O! q' i+ r3 V

+ O- Z+ R! M2 B  w1 m3 S( P2)Pinmux configuration to support rmii interface                                //这个我应该已经满足7 E( K+ t2 Z8 x6 d9 u7 L

/ J, X. m9 q( Y; x5 O3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
  j8 _) N2 C! S8 }! O. L
, V& }1 _8 h: K2 z- G) X# C) ]# @5 |Linux下调试也是确认以上三点。, J1 f* e" B7 C: z

. E/ q+ C9 D: ~- }/ }( L# e1 w可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-17 05:29 , Processed in 0.043122 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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