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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
4 g: J/ c  \9 X; @! c[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff14 p7 x+ [. ^  E; j& g% t
[    2.107743] davinci_mdio.0: probed
  e/ F, _' ?8 P  i9 p0 u[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
* x( g6 N7 B9 N1 I[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown: S- {1 m/ W1 a9 S, [4 \
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown/ C) i' W, |3 |; R/ g1 {2 @
& s( ^  Y2 y) j. T) z
[    2.137188] PPP generic driver version 2.4.2% Q9 c$ a. W' j( y  ]' Z2 z
[    2.143236] PPP BSD Compression module registered
  U+ [$ W  }# U6 u( i3 Y/ c
4 [/ m/ b+ F9 X! o5 e
+ F' d# q" L) w9 d5 V6 k5 E8 Y在linux内核中的代码应该是以下:
5 H: c* U2 @3 b! X        // 注册mii_bus+ x+ ^$ m2 I' r' u; Z/ H
        /* register the mii bus 2.   注册mii bus 2*/
. C/ [% j/ q. T, T6 K! O8 z( N9 y        ret = mdiobus_register(data->bus);( P0 P" N* x3 W& O# ?) A" Q
        if (ret)
. S( G1 _0 T  D5 w/ b' r2 j                goto bail_out;0 `7 m+ O) [8 z2 g, c! [; q; M
) {, R# @+ \/ x7 u
        /* scan and dump the bus 扫描和转储总线*/
) F+ m  r3 W' ]# u7 A        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {9 G* f3 T! A( l* C' x" |+ s5 x2 B
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据1 S3 B" a3 p# s# {
                if (phy) {$ Q5 v; x+ G9 x( @
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",2 V: P2 l3 e9 `1 i3 x. q
                                 phy->addr, dev_name(&phy->dev),; p$ d2 C2 [- A4 u: {
                                 phy->drv ? phy->drv->name : "unknown");: z& R$ }. O( C  [1 t
                }
: A) N1 J+ F/ h5 T: @        }' S# I, p3 `6 A. A: d* b. @
4 g3 S' m( \5 a2 {7 F3 A
" a4 w% N  n( J+ ^, V3 w7 I) I
最终在后面 网络启动有问题- a; m) O1 H3 f. O! S( n
[    2.387752] PHY davinci_mdio-0:00 not found+ Z* [! y( J" ]
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
3 y- g0 s$ Z5 k: m9 i! D6 ]9 J[    2.398254] IP-Config: Failed to open eth0
3 J9 b; Z# S  D; r# \[    2.402589] IP-Config: No network devices available.
' m8 [7 T* {' U5 ~+ T" ~+ O# o$ @# y2 i- N. q$ a* W
7 O6 K& I$ b  a

: s6 `' M0 s  n3 W6 Z) e+ K& ]% V1,请问下,这是什么原因造成的?& O' u, z' e: ]1 l4 `) p% G) k
2,phy模块 和网络驱动开发的过程 是什么样的关系?
) @% v  t8 E7 _% ?- b+ E谢谢3 }- I/ L& I7 F
分享到:  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:342 Y, M  ?8 m, J, ^
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
5 q/ Y" e& G& I3 H
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,7 x7 P2 t2 c/ e" l
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?6 \+ o$ q/ \; H6 S
谢谢

点评

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
: n/ b7 Y, \9 o0 L用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

7 \( ^3 p8 t8 e/ v! \  t$ Clinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。. [9 r+ B$ s, K' ?3 E1 O% j# W
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46; z7 ^$ A. K+ n, ^# {
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
3 e  m+ _( v. g4 d3 h& \# T  d. b
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
; M, P. @: v' Y- T7 W2 _+ j/ E在linux启动时,打印的信息是:  g. u  Z' V! u* _
EMAC: MII PHY configured, RMII PHY will not be functional,3 L) v# {3 V" Q; [8 g
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。% F' Z+ o  G" r) O
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46& m' b8 T  Z" k+ _
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

0 q+ V; J$ \3 A1 A3 l: b/ G0 d1 W我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40* n* r' j) G* z$ U. r9 _
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。" v5 c2 N& `. j  h. d
一般来说,板级的emac驱动都 ...

# L- e, ~7 q' n8 q2 x' m+ p7 ~4 B& |vefone您好,有些还需要请教下您。
5 P5 D" P2 ?: L. ^- n- B然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1- v5 J0 M- v$ K. H2 w; a& |
! f! `/ C6 ~7 ^1 o8 G7 K
void __init davinci_common_init(struct davinci_soc_info *soc_info)3 w5 l: W% N0 C( O; \% i: M
8 r6 ]( Q% u4 m
{' t+ z& M% m9 ~2 X/ S7 O

: u3 f2 `: e; I7 D             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口3 A+ [5 w: [1 H  j9 m0 x

5 O6 s# d! V3 ~. K  p* P2 }+ N}! P6 `1 a+ H6 c# {

% ?6 n; N( \9 F/ r2 X) e4 ~//XXX 还是前面的
$ N; M8 b: d6 s# P9 }  O[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
8 @. [% F# k' x: @[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
3 o$ O/ Q2 ^$ [! s* l[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown* x  Y0 i5 n" F/ B: l
! E3 N; `/ `; }7 k; K4 ?- G: k* f
在后面
& G" i7 E5 B% {+ w1 L, V" \9 f: i1 S8 n; ]& m! e" [7 [% ~! J" k
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
* y2 @3 L: @7 @3 _0 I: r& H+ g[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00+ y; w0 \- A8 _# l6 I. a  p

/ W& F( G; |$ {请问下这是什么原因?
7 U7 R. x  ?; ^
3 j( _' a, h5 V% f我百度了一下相关的问题:有介绍的说
6 ~! u) J1 P5 _* d$ O" D% g8 E( b3 I9 M$ o9 c
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
3 |+ z: U$ K1 Q( G0 m
" r# Z; H! s0 j* @3 R1 o' n$ d/ E建议调试在u-boot中进行,方便确认问题。
, ~/ }& d- f" [9 E' l$ g
7 N( r+ u8 e, K, au-boot下主要确认三点:4 p  @/ a: \# d- ^3 e* J
- F. R7 t9 ^. D+ }7 K: K8 _, d
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作7 y( V' V8 y" F

9 L3 c# i( h0 R$ m, r% v( V2)Pinmux configuration to support rmii interface                                //这个我应该已经满足% S2 Q1 N. c! R% s# d3 x3 g1 V1 q: T

; ?2 ?6 x+ {& z, p3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
7 q: s8 ]" w8 u& g
* @9 \' r0 _" t3 f) v" K' S3 Z$ ^Linux下调试也是确认以上三点。
1 \8 d& q! K- k* |& z8 u
( q# B( c: d9 r1 o, P* V可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 11:22 , Processed in 0.042029 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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