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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
: x( @1 l6 ~2 S& W[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
- g0 p' [% e' R[    2.107743] davinci_mdio.0: probed2 e( j) H  o: m3 k8 T/ w
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题8 a; c! a: b9 S* d
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown& H- G, D! F& k* W  X. U+ q2 {& I' D3 ]
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
) n" h) Y( a" j5 P1 E! ]* y: h. z9 A8 ?6 m# i
[    2.137188] PPP generic driver version 2.4.2
; z  ]4 W. M5 e! ^3 L/ J[    2.143236] PPP BSD Compression module registered5 _2 p3 |: w4 _& H; b" I: Y
- B5 a) Z# E% @2 D+ P8 y' U/ N
0 [% Z( \( X9 @2 _/ Q/ m
在linux内核中的代码应该是以下:
- i- b' `0 P, [3 |6 e        // 注册mii_bus0 m$ `, _+ z2 Z( L3 o* @
        /* register the mii bus 2.   注册mii bus 2*/
# k6 U) t2 h  B, C& s3 L        ret = mdiobus_register(data->bus);
3 |# l+ l7 W9 I" ~        if (ret)8 I3 f8 m) |: W1 p9 X9 A
                goto bail_out;) i3 @% s, m5 C8 p4 ~/ I6 o

' C- B' |0 G3 ?( T) Z7 m# _2 A        /* scan and dump the bus 扫描和转储总线*/
( W5 a) o  ?0 z1 |! m0 O        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
# X1 s  T' d, s- O                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
0 Y# u. H4 u) Z  L                if (phy) {. A  _* e  c0 N5 ~1 m3 c4 @2 T
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",, u6 ~# K6 L6 u# f$ X2 e, H
                                 phy->addr, dev_name(&phy->dev),& v* B( M8 R7 \+ v. @
                                 phy->drv ? phy->drv->name : "unknown");% D/ [, {! _" n+ U" D8 q
                }
) G6 L4 j/ p) b$ V, }        }# P6 \" ]* E: ]' N

# s6 r( X0 ?7 o$ N, ?3 S6 \' l$ u. q# U& h$ V4 q& {  s- D4 Y
最终在后面 网络启动有问题4 p* y/ Z6 s6 W6 m  {
[    2.387752] PHY davinci_mdio-0:00 not found' P. F4 a* O7 W  D% u
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00+ i( P$ H5 u" j+ S1 p' [: y
[    2.398254] IP-Config: Failed to open eth0
% Q  S+ T( P0 w7 \' o# t9 m[    2.402589] IP-Config: No network devices available.
. W/ m; n& R5 _; w
  X7 x' l5 S0 e0 i% i; t% B' H2 u  z* t8 E

9 n! T* G, F  R2 v0 {+ U6 @6 s1,请问下,这是什么原因造成的?" h) W' e5 o; _9 k8 Q' A2 F  i4 t
2,phy模块 和网络驱动开发的过程 是什么样的关系?0 ~: I. R- T" U% [- m( c
谢谢
# ?1 f" o% K6 s1 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40, O! A3 c; B" l+ ?
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。+ G8 H& X6 [8 a: N' z3 W* t! n
一般来说,板级的emac驱动都 ...
5 L2 c$ x% ?2 s/ C- E" M& {; Z
vefone您好,有些还需要请教下您。
$ J  I8 k( T2 d1 p1 C$ n% S) M然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1- `6 ~& [9 V( [4 [$ c  l; |. O
5 f$ F5 _4 J5 G# L: u; W
void __init davinci_common_init(struct davinci_soc_info *soc_info)
/ i! {- i' I2 Q6 \* V
' b0 _' L6 U2 l7 m{
+ ^7 Q0 j( b) G5 z8 v
/ \$ b- J  W0 m& [8 P* F, L             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
0 \1 S) |0 m) Z
& l9 r) e: I9 i5 N$ q- e0 _}" F. P# _* X0 K& f! y% _
# ?+ a. r3 a7 A* n( P: X0 {
//XXX 还是前面的3 r. {2 {' \; x- Q* U
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
7 l3 C  x7 m+ S8 m0 `5 E[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown6 A0 R5 M# F, V+ l: s' h) K0 F
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown% B- m1 a% H1 u6 k7 H8 e" x

( E% |: x/ Z' T* R# Q" I2 n在后面
; S% Z3 q: G1 b$ X' N
* j7 |. Q: B+ B3 J1 t9 D[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
; E, v8 ]0 T8 a; ?( L[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00" w2 v) K. E: m8 H
5 y4 k3 |3 `" m+ K3 A$ _
请问下这是什么原因?# R6 l2 e& k6 x+ d, ?' M

7 T7 _, o8 {( p+ ^- P我百度了一下相关的问题:有介绍的说
0 x- o6 }1 t% a3 f2 b& A- k
9 p/ b" j8 D. t8 R: {由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。2 I8 a3 I" N8 u2 o: {% R4 `8 f* e
* P  M. K4 I; \1 L: k' E
建议调试在u-boot中进行,方便确认问题。2 R+ [8 ~) i4 W8 f

/ I/ R- f, F! }4 U! @5 S9 lu-boot下主要确认三点:- r1 n9 R2 K( s: {7 ~! M: j. C
5 U1 P" E$ z7 P; ^6 B5 I; F7 i
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
6 H6 }- f, U$ e
' T) \3 [. w( t( T* B2)Pinmux configuration to support rmii interface                                //这个我应该已经满足" `- Y7 T! U: O$ {0 W0 I, [
+ |3 x! D) Z8 A/ {; Q" r, R
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??2 J4 d- y8 ?+ H+ g& ?
3 `! \4 N* s# D) I
Linux下调试也是确认以上三点。
3 @; v- z, ]) s4 s0 I, x
# W6 L: B: ^0 l8 e3 T' j- o% n可以指点下吗?
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46( b4 a2 u/ k( u9 L4 e- Q  K
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
. `/ J8 I: p) h3 [% S: M
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46; P4 j) e* Z" b3 e9 G& s" }. |* q( V+ s
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
" I& [0 d% p  }. R) Q2 Z
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?$ v4 ]7 q4 d5 b  t
在linux启动时,打印的信息是:
4 w3 M! P. a4 w$ j% b# XEMAC: MII PHY configured, RMII PHY will not be functional,( T" W0 Y: m5 c& K8 u
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。6 T( ^" j$ w# j5 d8 l9 Q$ G& b1 g
谢谢
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
5#
发表于 2017-4-17 20:40:02 | 只看该作者
小石 发表于 2017-4-14 09:33
+ w' R/ ]" g, `8 R用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
$ z  t5 d6 x. d/ t: B6 E
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
( ^8 ^7 M: C" P; e0 y" t一般来说,板级的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* k" A. w4 x; m$ y- x" k
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
9 _$ E% U: L5 \# z
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
$ Q% q3 |# Y: }5 l6 M# J, m请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
& O+ p: l: f4 D5 O. X谢谢

点评

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, 2024-5-14 20:58 , Processed in 0.043311 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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