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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题9 i1 l% E/ ?6 \9 Z# s; J, P
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff13 Q4 k; k1 r, j7 U; w
[    2.107743] davinci_mdio.0: probed
9 A: K! G5 P# e5 P0 H[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题' H1 }7 M8 I4 W
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown* Z9 }+ {* h( R
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
5 R, K2 @# |! Z' v
6 X! x( U2 m# S* \4 u[    2.137188] PPP generic driver version 2.4.24 O1 y  P' ]7 J# b
[    2.143236] PPP BSD Compression module registered1 N7 K/ G  r* z; ?# r) w, A) e8 a9 @8 z" U

4 y$ v- j2 M$ k: V
; F5 y$ N  W  z( H$ F. f: _+ F$ z在linux内核中的代码应该是以下:
8 t6 s4 _1 C8 _2 E6 T        // 注册mii_bus
* q/ p* ~, J* x& L# t        /* register the mii bus 2.   注册mii bus 2*/
+ P7 I  _$ Q0 s2 `4 s- c        ret = mdiobus_register(data->bus);
& g8 E3 k% R* L) p: E        if (ret)
6 k) b$ a1 O; V4 j' k7 O& P  I                goto bail_out;/ q+ I9 c$ u- |

, K0 k) P8 b# u( S7 T1 K0 F        /* scan and dump the bus 扫描和转储总线*/' |0 s# o9 P, R1 H* h! {$ |
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {1 X5 s7 T7 h5 q( X/ @7 Y
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据/ N2 m1 ]" ]( B4 ^
                if (phy) {
- j' _  }- Q( r0 J% ~+ [6 [                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
  A8 }7 {, Q% l  K                                 phy->addr, dev_name(&phy->dev),
& Y0 L, ^1 q' r+ u1 b7 U+ O                                 phy->drv ? phy->drv->name : "unknown");# w6 h0 ?; F+ B0 C7 K$ E2 |# P7 o4 C* l
                }
5 E( d( @; X  Y, Z5 Y7 `' \        }% {/ `8 k5 P  p( `% ~1 {  D. J

. E& [* q3 h! G9 |/ X; `+ V$ \0 b, D4 Q/ q
最终在后面 网络启动有问题1 e6 u6 `1 z, N5 [% ]1 y5 k; A
[    2.387752] PHY davinci_mdio-0:00 not found
/ O+ `+ t$ t7 u# A) b/ y$ x[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00  J+ x- @, W# A5 N
[    2.398254] IP-Config: Failed to open eth06 X- G  X, E- M9 ~1 N9 R" m% U8 J
[    2.402589] IP-Config: No network devices available.
1 v( X8 V! x, v0 n3 w5 G& o3 c
) {4 X1 R: X" I5 e- N9 g0 g/ O  e  l  h" G0 g8 i/ n# w! ?

( Z7 e4 s6 {: M5 k1 ~2 A1,请问下,这是什么原因造成的?
  B+ h6 [: e: I+ X! Z! k2,phy模块 和网络驱动开发的过程 是什么样的关系?
$ T: j6 y1 z6 v. U谢谢! J. K! X1 O! s  S  E
分享到:  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
: q) n' z( x* E$ O( `* \0 T请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

% @, Z9 J9 y' h) W3 O/ Q用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,( c  X9 I. r( Q6 X* m( f& q
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?  |! @! L% X2 H
谢谢

点评

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; _- u& i# P4 m0 {4 `. P+ x9 `
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
+ j2 h+ w: P- o" f
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
! j8 M0 N3 Z  J9 o一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46$ t+ \. j1 W+ S3 E  U2 R3 r
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

' F0 ~: t& Y  m3 }请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
& r% H* C& c- G& ^; t2 [$ c4 M' K5 s在linux启动时,打印的信息是:
1 T. l9 T3 A: o: t/ BEMAC: MII PHY configured, RMII PHY will not be functional,
/ B1 R/ a5 |. n) O* s0 W7 B应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。6 j# c) i8 N* S' I
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
$ i# A3 c, ?. P1 I6 z创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

; x4 v) i- A* r- l' a6 D& E0 ]我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
; z1 u( Q4 p) c! c; wlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。* s% J1 t& @& o2 d$ g$ o7 q4 Y
一般来说,板级的emac驱动都 ...
7 f7 D1 g. `. |* X
vefone您好,有些还需要请教下您。
  L2 h  J5 i( r9 i4 p然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
$ @; N2 U# C1 h# J1 J2 c& }& w% V
void __init davinci_common_init(struct davinci_soc_info *soc_info)7 {5 ]7 `( ?9 ?8 o9 K
8 f) L! o: {* ?
{
8 K. f% x( Z: Y. g7 M, p) a. D
. @$ V) `" I$ }3 U2 q$ c0 K6 Z             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
0 T2 t+ D- c' q8 H9 j! b
' x2 z3 ~* K  m6 t}
7 o4 P- Q! T) _3 Q
9 s2 S. n8 U! U3 q7 A# b//XXX 还是前面的
) b; v& S: q/ S7 c) ^; K[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,   t" W2 V! s# p  Y6 Y* {) }0 k
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
0 I9 Y" U0 |; m; E8 D[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
  b0 Y) g& c, H% y" d
& U1 R/ A! n, N; Y+ ~& A9 a在后面) g3 X8 G: f4 l- L8 k5 g6 h% Z

3 p( U5 C0 s3 ?' N[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了& E- {0 q* h, k
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00: D. ?7 x4 W- A1 _: N

7 Q# L: n7 N5 e  @& t0 ?请问下这是什么原因?
' p4 J. _3 ]+ }- p  J4 \
/ {& }! p4 g+ p. h( o/ H: j我百度了一下相关的问题:有介绍的说7 W8 Z8 \% e# {+ G% A# |

  i5 Y& A& c: D8 @) H; A8 C; X由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
9 ^3 z1 R2 O7 [. v: @1 m0 e( V7 a/ m3 N6 E1 D
建议调试在u-boot中进行,方便确认问题。
0 n6 W+ o8 ~6 Q& v) K7 I9 W: A) |; S0 E9 M8 c8 r+ @
u-boot下主要确认三点:
/ O1 n/ d& L0 r. S' ~
  @  N" B# f0 Y) b7 v- R! c7 l/ K1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作# ?% y! v: u+ h2 w8 u
/ Q  U, v7 a. }/ L0 `9 S* w- v! {, G
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
/ w0 K+ Q1 J) y7 V: ]" P( B$ H  t7 q) L
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??$ {- C% Y* p7 R' a# A$ c" O( k

! r. Z% W( [6 KLinux下调试也是确认以上三点。
( W% C8 O' Y, _
" `, h8 @. o  E4 C$ H' b" `可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-16 17:24 , Processed in 0.049260 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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