linux 内核启动过程中网络驱动不能启动的问题? - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题& L# N: T7 t, x
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
9 ^) e* b+ `1 Z0 O) h) |& I[    2.107743] davinci_mdio.0: probed
( J/ r: Y/ @) w7 S4 p8 N! q[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
. d! I2 {5 g2 I% p[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown6 u. a8 c6 X: n$ G/ {+ R2 D5 |
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown8 |/ U& S; l- x5 f! Q* ?4 t
) [4 N, P" w7 e; t- m0 O1 ]5 w
[    2.137188] PPP generic driver version 2.4.2! H" i+ n7 A$ u9 R/ A
[    2.143236] PPP BSD Compression module registered3 b! A3 j: H' k  C6 f2 A

5 z' \! b9 ^, _$ Z9 O- F* L% X/ E# H: A8 A) ?$ f
在linux内核中的代码应该是以下:  X/ @) J2 P0 K, h, T# m: @5 X$ D
        // 注册mii_bus+ d! s( C+ V7 d2 h7 F, h' F
        /* register the mii bus 2.   注册mii bus 2*/( N( m/ H$ m3 m/ M
        ret = mdiobus_register(data->bus);
( Q& J( O6 O. |" e$ J5 t        if (ret)
* {; s) P  f+ v) t                goto bail_out;
. l) ]: P" y' f" b) a) M8 `; J. O4 _4 |
        /* scan and dump the bus 扫描和转储总线*/
" Z' W# w2 Q- o: |0 h        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
% S) v; b$ v* E" ~& V- q$ t" z  U7 ^- Y                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据; H* s5 e  ?) @( c1 ~: i1 i/ l5 g
                if (phy) {( y' i" B# Y/ p5 j! w
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",& |/ ^2 F3 i& `7 q7 b
                                 phy->addr, dev_name(&phy->dev),
1 I3 U  o( c6 M. K# W7 c                                 phy->drv ? phy->drv->name : "unknown");, H* [, k# r7 o* x) l6 n5 C
                }
* J. ^* M4 b) U: F9 V: T) A        }
+ ?8 p  \2 z. _9 \9 @% n
1 k3 o. k, w0 D. r+ d% c$ N) m4 o( E; ]; z# V( r
最终在后面 网络启动有问题
( ]3 Q, l$ o3 i1 `* `[    2.387752] PHY davinci_mdio-0:00 not found" [5 ?" S1 h9 o; u* y4 w- n2 b" p
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:000 G' q5 y: ^, s! ]2 z
[    2.398254] IP-Config: Failed to open eth0
. h; A5 w' y; L' f8 c[    2.402589] IP-Config: No network devices available.
" e+ P3 m; p$ w7 a
; @5 `; A+ }/ }0 |
- D* A+ G) c' J$ F

& A8 V  O9 F! u- g. Q1,请问下,这是什么原因造成的?
7 M/ ]% |* a# J6 H  W$ j8 O2 o2,phy模块 和网络驱动开发的过程 是什么样的关系?, p9 \4 D" A! K4 E6 Z
谢谢
8 E( J$ ?( c- X; s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:409 j' ]& ~1 x. A8 P8 {* i
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
/ I1 g5 C5 H" A. p一般来说,板级的emac驱动都 ...
& I# J: z% K/ o+ S$ z
vefone您好,有些还需要请教下您。
8 a5 c( ~9 v; g然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
2 m1 s; O+ M- Y7 M
7 A* a9 J) j$ P& O& x9 f  O) `+ p* Cvoid __init davinci_common_init(struct davinci_soc_info *soc_info)
* i+ {8 [- [) B2 I& b( E" y
$ I; o/ R% d3 }0 a% q{
2 T2 |& e' X) D* ]( }0 {5 d- E9 a, I, s9 v0 `
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口2 S0 {9 a$ m  u+ m, s! x, O% `

: D3 M2 }: J5 s# t$ b}* h1 Y, j& r! j: j5 p+ |# f% |

) G  T/ f" J! S//XXX 还是前面的
& X+ s+ m) D9 y; k$ F  r[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
- |7 L4 [! ~5 e0 J[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown$ O4 b# g9 j9 H
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
" @8 d: o. D9 P) U9 O% s) z; H  Z
8 |9 ?3 o5 N/ Z/ w在后面  K& @* [& ^0 a

( R8 k. H% o% H9 _+ W. @[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
& |, U6 ~- \- ?! h+ b* [8 ][ 2.392184] net eth0: could not connect to phy davinci_mdio-0:006 v  E, }8 `) T4 c4 S, X
2 c" d# R( Y  n; q
请问下这是什么原因?4 o' S3 ^: N0 J- K1 I# J
! q+ J7 V* r  j
我百度了一下相关的问题:有介绍的说
: Z8 a' v; W. }; D+ `5 z0 |& i" d* A/ k5 F% V+ y
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。* m) |% O7 R! s
  b% U& \6 [% v7 S' I
建议调试在u-boot中进行,方便确认问题。
% Y; r- W  U% w) d6 T, L0 M3 x" A& V
u-boot下主要确认三点:
4 w5 C. q5 u8 G/ `  b9 u4 [; P% x% s! i9 t6 _
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
) {- J/ g- ?8 Z- c# k, l
) t/ H) }8 Z: p3 |2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
; l% K$ P# I6 Z8 M3 k. X3 ]% N( x5 \/ S2 v2 g
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??2 S8 g% _8 m7 S/ n5 c

8 {; w2 ]; s  W9 S& ]5 s5 u/ ^3 iLinux下调试也是确认以上三点。0 X$ c% ]' B5 b5 r! k6 z$ b

, d4 X) h3 M6 A5 n可以指点下吗?
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
  `) k; P0 x4 u. L* [创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

+ ?" i' K& }7 M( }7 |5 `我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:461 b# x. B% Y8 o5 ]+ N: ~# J) T6 S( }
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

* _/ T% ?4 m3 D0 _& x! y请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
) C* W6 Z4 R. P3 l* \在linux启动时,打印的信息是:4 V( s1 p+ g# O! o- A: ?. r& }
EMAC: MII PHY configured, RMII PHY will not be functional,
% E, o1 ^" g" Z- K. n( h( k; o# C9 d应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
# q) G& z+ X# W5 d( O$ {! z- O谢谢
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
5#
发表于 2017-4-17 20:40:02 | 只看该作者
小石 发表于 2017-4-14 09:336 ^9 Z  r* x% N9 R4 N' I3 J- [! a
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

7 h4 N& @! B  z9 u4 N5 plinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。& C, u, i6 C2 e4 N+ v5 l
一般来说,板级的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. l: l1 F- B* ?: Q
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

0 z1 O9 ~, a: v& P( E2 Q2 }, ~用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
% l$ ]8 o. I* X$ T9 u请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
  A# N) U" ~! L" \6 I0 ]0 Q* Y6 C谢谢

点评

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, 2026-2-27 14:50 , Processed in 0.052364 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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