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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题6 e6 D+ u: [1 t% G, e5 \" K
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
6 c) {1 f1 n3 y, [[    2.107743] davinci_mdio.0: probed
0 F7 Q4 \7 x! z! d; k5 ~[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题9 a/ M4 U" [: D$ ^. D1 U2 }
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown9 r0 a* @, E1 q- H& L. `2 p
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
8 s' M" L# f& d3 J: Q) X: q
/ N& p; v0 |* Q. p9 ?[    2.137188] PPP generic driver version 2.4.2
. z% J2 X9 S' p) G$ c' A# ~[    2.143236] PPP BSD Compression module registered
3 \! [% t7 ^- w" `/ D! V
. `5 d: @0 U. G
- j" v# H# i' _$ P在linux内核中的代码应该是以下:6 b6 V9 J. a: ]0 N( E$ |: Q  r
        // 注册mii_bus% W2 h8 w! Z! O" a& W: |8 C% O( \
        /* register the mii bus 2.   注册mii bus 2*/. J+ J; `6 B6 N. y  y5 E
        ret = mdiobus_register(data->bus);+ C. S# `1 {  i/ l, s  T* o
        if (ret)- X: o0 t* v, d
                goto bail_out;2 l- ^3 G2 ?* B; c$ {3 ~& c5 }

9 f6 Q- ]  Y8 `/ b2 b3 z        /* scan and dump the bus 扫描和转储总线*/  h1 m0 M) w, Z" A' C1 H+ {# b
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
- Y' w# a2 [. W* `2 d" b6 l                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据# n  d3 S  W1 k) [- b) }+ s& j
                if (phy) {6 x) Z* w+ H! g6 W5 x5 s
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
) _: C; ~$ S, I7 h; G9 f4 t( Q3 X                                 phy->addr, dev_name(&phy->dev),  U: m/ R9 N( s: u
                                 phy->drv ? phy->drv->name : "unknown");
5 s# {& A1 z5 @! X- z* l3 W1 p: L9 D                }
0 T9 `; Q) g6 i8 q" w        }0 K3 S2 f' _' Q: _

4 i1 P4 J# m9 N! e) J9 Z4 n0 t" ?0 o
最终在后面 网络启动有问题1 y; J2 ]& `' m; a1 [) z
[    2.387752] PHY davinci_mdio-0:00 not found
% `7 z) m* ~4 @) d[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00# w/ R1 D" @, u7 J) _9 Y
[    2.398254] IP-Config: Failed to open eth0! `; Q+ c& E' D6 t" g- ^
[    2.402589] IP-Config: No network devices available.6 I0 X  y, n2 g2 z' s# l5 o

* d' D! A; m) q8 z" H& M+ J$ g$ p( D$ O# H& T
/ s6 v0 W& U# L5 z1 i, n' G% G
1,请问下,这是什么原因造成的?
; n7 Q, t  ^/ f; f  G0 g2,phy模块 和网络驱动开发的过程 是什么样的关系?  H3 ?8 }# S- w7 f8 `; E6 r
谢谢5 `8 @0 @( l2 w* L( o  U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40/ T8 c, N# n% e7 k' c
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
1 a- z7 j; H& a" F一般来说,板级的emac驱动都 ...
% q8 J& q. `- w) ~  a+ p
vefone您好,有些还需要请教下您。* u: \3 y( B5 v& ?* ^
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
( c# t) H+ g6 |! t
- J- u& x8 P: C0 `void __init davinci_common_init(struct davinci_soc_info *soc_info)0 P% N& k: ]1 X9 v7 P

/ A) ]" s# C, h& X: N7 c1 h) o* S{# l6 y: X: i$ ~7 B5 P

4 h1 y8 r# ~) P0 q8 m             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
' a" L3 N& ^, j# Q1 h% o9 D+ p& A- y! C* a( \
}
( }# V& X+ h( L3 G& t: E2 D: E
' c) x. N, K9 {8 @( z- f//XXX 还是前面的
3 _  ~- ~4 [* U[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
9 a8 f$ _' l8 W[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown0 S7 L8 r/ G6 V& m* z) L
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
, \+ c8 ]" s( o: \2 @# A+ ^$ e5 `2 e7 d# A+ |) ~# l
在后面& L$ q" P( j$ Q/ n: O

5 c" Y" s/ W' r* P/ v[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了1 D- \4 M. [" z# E6 C
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00( D* G" C% V. m4 @6 u
& I) e' _  I% \2 I. r
请问下这是什么原因?
1 Y- c: Z8 Z0 W4 j- q  j! e7 k, `* v- t7 z
我百度了一下相关的问题:有介绍的说
& [9 L3 F; {6 j; Y* y% A+ m/ x3 ~/ ]8 ]# {1 B3 m0 I
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
, d  f# _9 `' e. B6 H
5 c' Z3 g: s4 T$ ~/ |* y建议调试在u-boot中进行,方便确认问题。
1 R2 e+ ~, z0 h7 J) E4 _0 R' ~" U( r* b+ B5 @
u-boot下主要确认三点:
: j0 W" F  n# F$ m( h' `
. P/ [! @( c3 h: V* L1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作& I/ R5 d/ I8 ~" S

1 |# j/ Q) ^5 U, p( i: D4 ?2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
0 z4 Y( L- J- K3 q: l6 x1 b, z( w% }$ B. c
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
' d: k# M5 B) W" s5 Y
) x, n$ o, b0 S% r, B( C" W8 QLinux下调试也是确认以上三点。
1 i& k  k! w) f! R7 M$ P4 i/ K# @2 i0 i- {2 R) b- W( y% b
可以指点下吗?
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46$ j: I: N! I0 z7 S
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
5 W% x0 Y+ }% N. z* b/ u+ w. K
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46' D0 c3 G4 B2 i+ I, w
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

, t, `: B, v4 g$ Y请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
" l3 a  J( R! }3 q在linux启动时,打印的信息是:
9 a. ]$ d$ j2 Z% xEMAC: MII PHY configured, RMII PHY will not be functional,, u* e" [" P: ]  a' y2 z6 N
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。5 ?8 ]/ D: j/ s( D8 S' K
谢谢
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
5#
发表于 2017-4-17 20:40:02 | 只看该作者
小石 发表于 2017-4-14 09:33& I4 T; Z5 o0 A5 M$ f8 U
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

- a9 R& E' y8 I; I$ _2 k: |# c# Clinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
. h5 M& F+ A2 {一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-4-14 14:46:38 | 只看该作者
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-4-14 09:33:48 | 只看该作者
vefone 发表于 2017-4-14 08:34' }5 L; w' ~! o. b1 \/ J5 b
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
! V# z% }0 ~# Y" F6 o; {2 b
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,2 e5 I& H+ e2 G, L/ m3 ^% Q) W
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?3 b$ H% _( O  ~) l2 Z
谢谢

点评

linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。 一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配  详情 回复 发表于 2017-4-17 20:40
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
沙发
发表于 2017-4-14 08:34:48 | 只看该作者
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 02:29 , Processed in 0.042889 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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