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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题* |; }. U  l. N$ S; N" ?
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1  C. s; N# Y7 R3 d4 R* t$ U
[    2.107743] davinci_mdio.0: probed
7 a# \5 E4 A( T/ D) x[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题) |6 `) g6 v* m) U4 g! w
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown# b# I: a7 G& A' C, N0 b$ j
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown1 n& B  L" Z7 ~

+ y/ e4 X# C" }' s! I( o. @2 T[    2.137188] PPP generic driver version 2.4.2
9 w* }! s* |1 f+ q[    2.143236] PPP BSD Compression module registered9 r. |0 C  t+ T* |* x7 {

6 a3 E" ?7 q( s/ E/ Z; b! {* Z+ g
在linux内核中的代码应该是以下:
6 C2 \( F  a8 h! P        // 注册mii_bus7 s* q( s, c6 g
        /* register the mii bus 2.   注册mii bus 2*/
) R# o2 L. O0 t7 O        ret = mdiobus_register(data->bus);$ k7 a/ y% z- _( ~0 w
        if (ret)6 n8 _* j8 A# x/ G2 `* n0 P, x/ Q
                goto bail_out;
8 h, G% q: Y4 K' F" Q, k; S3 r! s+ I6 {( R5 L$ j& H' x
        /* scan and dump the bus 扫描和转储总线*/
& ?# C% T) b4 w        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
6 G+ t% \5 p% W5 R; |# ~; I4 r                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据/ F6 q( L7 Y7 u1 P: m% a9 O( p
                if (phy) {, Q$ q% P% {8 J: t% A+ R4 @  y
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",+ |* ]& y' s; ^; ]+ y! c' f; R
                                 phy->addr, dev_name(&phy->dev),
' g! L* q, Q# Y! ?$ Y: X* |! S                                 phy->drv ? phy->drv->name : "unknown");6 I$ r: [) O+ E8 l% [- g
                }
6 ]% z  y6 u) u+ u        }; c3 I6 @# i( M, R
% y  r& x2 B: Q. @

; o( `! b' z3 c7 Z4 ~, i3 \最终在后面 网络启动有问题
( A9 E" s, X# Y7 l[    2.387752] PHY davinci_mdio-0:00 not found
) q1 ^8 l, @* c5 z; A4 i[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
! _5 ]9 U- b; i9 L" m, a! T. N[    2.398254] IP-Config: Failed to open eth0, h' E; }0 t& J9 D" L/ a7 L  m( J2 d- p; ?
[    2.402589] IP-Config: No network devices available.
. {2 o6 B4 \! D  ~  t
; T1 e; I% P0 _/ `! E& w% @5 d/ u$ D
) v1 E( u) ^$ ~% X
, E0 U( e8 C5 Z  c  n
1,请问下,这是什么原因造成的?  @1 w1 s( q7 X. i# s
2,phy模块 和网络驱动开发的过程 是什么样的关系?
3 D% _: g8 G* W% F% s6 l谢谢
! |7 K6 H1 C- y- I& s% 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:34
5 i* f2 T6 `* C" C+ B) B4 ^( D请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
* O+ q; R- f" I: q
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
$ x$ r8 Z$ v# Q# f' q请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
! T1 Z" C  z. u' B+ e2 o谢谢

点评

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:334 e* b1 r6 P. r) s4 ^
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
1 z% D9 p7 ?+ U2 |
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。: S3 A4 A- r0 Y, J, `4 o" d
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
- U6 }4 _5 h% d4 X; \5 C* C" j" `创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

, y6 N' z- s1 {' Q- k+ ^  r请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?+ V' Y8 c# i2 G1 H8 f
在linux启动时,打印的信息是:
, ?! I6 l: Q# H! l$ t2 K" oEMAC: MII PHY configured, RMII PHY will not be functional,
! K2 }1 C! r' H% \应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。9 D  E( I) N( e! n0 h& ]! Y
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:468 x, |, n3 {! z2 k
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
* b( x) p6 `; s- c- R/ J3 q, @
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
" n) L: W  a& \2 ^) q9 Vlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
8 M+ y% O# b0 s" n9 B" i7 Y一般来说,板级的emac驱动都 ...

3 G/ L+ `" k- g3 {6 ]8 g4 jvefone您好,有些还需要请教下您。) r2 Y1 @4 \7 }4 v# y/ v9 K
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1: w5 {: `8 d+ I& Q! ?1 l

7 E* s+ Z& M, @9 h9 L4 A" n2 U5 }void __init davinci_common_init(struct davinci_soc_info *soc_info)
. \- _3 }+ T# G# ^8 O/ \* E2 T; \2 w1 P$ F% L) o
{
) }7 C% L4 y+ {) S+ o/ K8 u- g* `: r8 `
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口2 w$ b9 ?- T9 {/ M3 a  @  v

$ P8 s3 \0 ]1 W$ m" d" r6 |}
' F7 k, G1 V' }" j
8 s" X- ]" c% S$ H6 A//XXX 还是前面的8 ~7 b0 A7 h" T6 ?
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
3 J* [. ~# \6 C" V[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
3 {$ k  I4 U3 d/ {2 {[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
( ?/ b! s2 l7 Z
! z8 f) P! x) G+ h9 \6 h, z. O在后面3 [! I& _7 C/ w2 m2 n

3 X8 t7 w$ R& N( b+ m! M& T[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
% u1 t. j3 f7 N[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00) _! M+ u& Z1 \7 k8 p8 t

& I; c. b1 p7 \$ w% V( z  @请问下这是什么原因?9 I$ S4 h4 S" ^
( M2 A5 x$ e  M- n5 e% d
我百度了一下相关的问题:有介绍的说
3 N: D+ B: M) [0 p/ S2 R) T$ F9 |# t  r, p
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
5 E* s' A- B' ~' ^' n. h; q$ c& ?1 n, T, |1 X
建议调试在u-boot中进行,方便确认问题。
$ X3 x2 K7 a8 U8 J- {* u$ |: `
u-boot下主要确认三点:
; M' Y# w% H" N5 _6 h9 b) e* _  ?& d7 \% j; e7 o
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
9 s" D9 h1 x- A9 Z/ ]6 A- O( \3 b: _/ A- L4 M! X- j
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
9 L0 m: {  n$ Z
6 B$ d( S# R, J3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
4 R6 b( T8 {+ K8 \' k# [& h% y0 o
3 Q" }1 W: M/ d/ c" k- o- eLinux下调试也是确认以上三点。
6 z5 B/ s2 y0 K  V; Q& P: r; E$ C4 X: @& J5 ^( q
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 00:43 , Processed in 0.044084 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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