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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
7 L1 s% a2 n+ s[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
. j/ l" K: d) r: e[    2.107743] davinci_mdio.0: probed; U, u3 {3 \1 ~8 K4 o  v
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
; c1 q  Q0 ]) ~[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown& K3 y" A9 _, v1 H: g" {, ]# g" x
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown! H! h: e" y& y& H

. f" A4 C- e+ a# F, G# y- I[    2.137188] PPP generic driver version 2.4.2' [8 a1 \2 F" i
[    2.143236] PPP BSD Compression module registered( i& B* d$ p  l/ h$ y

) ?7 B2 _" i% t9 q) B0 S5 ~% o# C( r8 g1 R
在linux内核中的代码应该是以下:
3 o: _. g9 B, P6 i        // 注册mii_bus
( u5 D+ [# y& G& e1 d  A        /* register the mii bus 2.   注册mii bus 2*/* ~5 b. |# S9 D7 y8 m5 a" V
        ret = mdiobus_register(data->bus);
; |9 z# s. r- e, P6 H        if (ret)
5 ]5 I) B; E6 }6 G                goto bail_out;
6 ?0 ]/ d6 k2 ^& ~  [2 M
, B6 `) A& m9 {$ f        /* scan and dump the bus 扫描和转储总线*/
% \: x  `$ y" F8 S7 C        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
9 j' M" G1 i! ^' K' s                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据1 |$ C% k) L0 t( w/ w
                if (phy) {
) y* M+ ]7 g2 U                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
( B. ~( L6 Z3 k: T& J: B, C                                 phy->addr, dev_name(&phy->dev),6 ?# ^' n) F3 {% o0 v
                                 phy->drv ? phy->drv->name : "unknown");
' o& a+ k* h% Q1 V' \8 S                }, y6 \# e0 K& P5 v! `: d" h: G
        }0 \0 D1 m' U% c8 \. ^0 M- S# j

0 w; N3 ]- b. I% e* F# ~* N/ W+ ]0 V/ p
最终在后面 网络启动有问题
2 f6 G8 U5 @. o4 Z1 `% i[    2.387752] PHY davinci_mdio-0:00 not found/ ^# k4 U% e' b  y) k
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
7 e, o( Q5 @8 ?$ t& h  v[    2.398254] IP-Config: Failed to open eth0
$ s% u+ G8 V. Z3 n5 `9 a[    2.402589] IP-Config: No network devices available.. q( d6 f; F& @* H
& N$ u' q. a6 N2 U' O9 z# u

' o" G0 [) p1 u9 C9 F6 y+ ^
( f. s+ Q( \0 t
1,请问下,这是什么原因造成的?
, d8 r( X7 U" Q% R5 A2,phy模块 和网络驱动开发的过程 是什么样的关系?
1 M8 a) V7 b! _9 `谢谢
* _! p# @( h2 t& R4 o
分享到:  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
& I' H- }; y; L* J请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
6 X9 m7 K3 G$ i% q, x9 A3 ~! ]
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
4 x' Q/ a  ?9 W: w0 ^请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?: P# W% S, H6 [. \6 P, Q: 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
% m6 W" E7 D# n3 c. N用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

$ o( g; o& `$ A" G. {2 Y4 Nlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。3 }9 H/ N/ q$ N4 ]. K6 F4 J3 L2 E
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:469 K$ w: D" J6 D' L
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
0 P, Z- Y8 |2 s( {* L5 S
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?2 W" G; U7 M$ x& J7 J! e, z
在linux启动时,打印的信息是:7 P" N4 N/ O) b* \3 {, S
EMAC: MII PHY configured, RMII PHY will not be functional,
0 s' H8 Q0 S- R" k& t2 X+ g" X应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
, p3 H* ]9 U5 Z谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
9 H6 g! [: Q/ B& l' a创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

$ ]# Y: G$ N* }5 ~$ Q# M5 j  r我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
! P4 w1 S) w/ Plinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
& G, B! C. T0 o) U: W, x一般来说,板级的emac驱动都 ...

5 q( E! B( y0 v* `& p& L: {vefone您好,有些还需要请教下您。
6 ?5 T: j# u4 q, o& p! M然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为19 N- |0 D: K: Z

  {0 }& E6 X, \4 K" v  f# E) A, cvoid __init davinci_common_init(struct davinci_soc_info *soc_info)
7 X5 o8 M+ v8 {1 C' [
+ K% Z+ G8 S' x{
; T; R( }+ i/ i5 p, G8 x
) k3 C8 d0 d6 {# q             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口, z  @2 r, d! T! x7 d0 C" m
. {# c, [2 h1 M
}! P( E% m1 s/ @) J8 v0 b9 b4 N
. w! P/ h9 s, J- B+ W$ ?
//XXX 还是前面的
( n7 ]8 O2 z8 g- ~' N0 n8 R[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, ! s& I1 i6 }) i8 J
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown$ n1 c: i" @9 o3 |$ Q0 f( X" t% g
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown; I9 ]/ {0 k, h
. }8 W( L" T1 f3 v
在后面
2 W5 g* H. u, E, ?- g% w. H7 P% V7 O: L  y) h( \+ p3 k
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了$ `/ _! O! }, X" I3 T
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00+ p* J( h* M( _2 i* j1 S3 O
% y, B6 @8 r8 F
请问下这是什么原因?
( }! C2 U2 C3 C( X. U, o1 o7 A" V9 ^5 ~( g; w' i
我百度了一下相关的问题:有介绍的说
# P, M+ s+ J3 F) b  x) j3 w4 |/ H* _" H9 J8 w* b) N- h3 s
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
0 X$ T7 L3 Q7 u- r! M
4 s# X( @! t8 l+ \' W& }( P' H9 P* K建议调试在u-boot中进行,方便确认问题。
. C% {9 }* v5 x8 O4 A- |8 O: N1 R1 i2 S* c. U
u-boot下主要确认三点:3 [5 v  x* @4 l3 D8 j0 ?7 }( m1 e% F
# X' Q" t7 l, C" A7 L0 }4 h
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
3 W7 N7 ]# d9 e" \" x) ^3 b( E! j% V5 ?8 l% t. H
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
  l' O, C+ J/ t" Y$ J; z( w
3 v8 l& w- }: D/ Y9 ]0 N3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??7 ~1 u, }8 I( o& s$ S' q6 ?
" L+ s$ Q0 K5 }/ A: d8 Y1 Z
Linux下调试也是确认以上三点。
1 y! g/ S) Y* [8 J: e7 J6 u& e: i) E% E  ?$ _7 r9 t# \
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 14:52 , Processed in 0.050818 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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