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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题3 H* R. N  ^: H8 w8 u# x
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
3 H" O8 S- t1 D! d1 `[    2.107743] davinci_mdio.0: probed" x  g; l# x4 f  H7 M
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
6 I0 y+ y+ ~# r5 [# C6 `3 R5 g! ^[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
# ^- d; B4 K7 `& a. @5 B[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown3 Z6 M- \2 y; y
  w/ |9 Y! s* U* m. s
[    2.137188] PPP generic driver version 2.4.2' i- N3 S$ _/ H$ E, I8 O/ C
[    2.143236] PPP BSD Compression module registered5 V! G  R9 X8 d6 Q# s

# q0 {- ^( ]. ?8 g4 ^! z
+ @# b' N+ ~7 d- n& l) ^" H0 U" l$ U在linux内核中的代码应该是以下:3 e* |$ [/ C6 Q! ~: @8 w7 q$ e
        // 注册mii_bus7 ^3 n$ q" u9 @- j. {' S
        /* register the mii bus 2.   注册mii bus 2*/
# L; Q' v. h. l) h0 p        ret = mdiobus_register(data->bus);4 b( S- h- W( }) z' |# y( {6 X
        if (ret)- I6 F: d: p& }& P/ g, b) H# J: d5 ^
                goto bail_out;
0 X' X3 s3 r. V5 B5 U2 u
% }7 L7 \3 n" `( p& w        /* scan and dump the bus 扫描和转储总线*/
0 o: m$ B7 t) m" I        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
7 J: k$ q; j, L1 x* R' I                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
2 {7 ~) [8 U9 O4 h7 r                if (phy) {& u, o% o9 O" d
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",0 X; l7 u$ v0 h8 z4 n5 l
                                 phy->addr, dev_name(&phy->dev)," Y3 z) V2 T8 `, a* A2 O
                                 phy->drv ? phy->drv->name : "unknown");; R4 l4 D1 M2 I  F
                }  k0 ^( B5 @6 [) ~  G
        }- {. K/ P5 _2 N& P8 {7 b

+ T4 c- S$ z$ a5 Q& B: U2 i7 H; I: P- O4 p2 ]
最终在后面 网络启动有问题( Z  e/ Q! O& W1 `! r. R
[    2.387752] PHY davinci_mdio-0:00 not found  k- Z) G5 e6 a& h1 r
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
& u3 Q2 G& N$ \1 |9 z% W9 o[    2.398254] IP-Config: Failed to open eth0
# O1 z; G7 K5 `[    2.402589] IP-Config: No network devices available.
) N: ^8 s9 n. ~, A1 w, {# ]; H) E  f+ g

) @$ J8 H: ~. v

% S: \- z) e! G2 M3 _1,请问下,这是什么原因造成的?5 ^3 n. R, V* `0 ^* Q1 v$ b7 ~
2,phy模块 和网络驱动开发的过程 是什么样的关系?
8 P- U" m: h5 R4 r$ h谢谢
9 U5 ^. f0 r+ z
分享到:  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
+ O! b9 z6 S3 R1 b" V请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
, M& G# U. [# l6 l
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
2 k$ l) ~" a7 z2 f& O- x+ _! O请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
+ Z3 i8 v- z+ s6 R4 s5 H7 Y谢谢

点评

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; U# Y* |! @* a1 z, _4 O
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
" D' ]( ?* d3 F
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。' L$ \$ X* K3 i1 F, @; W
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:468 P4 {7 P$ N+ |
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

+ o5 V4 _( o6 d' K请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
1 q9 i1 p# o% [$ O2 K. v在linux启动时,打印的信息是:
7 B) _! Z- ?) y/ I) [EMAC: MII PHY configured, RMII PHY will not be functional,, j; t3 Q. e0 M+ N6 {
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
* w* U  c2 j  L& c% K4 x$ G6 {& x. w谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46' y$ H1 e6 N0 F0 Z1 ^7 T- t
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
' r1 A3 H  V9 Q1 V- E
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:403 |1 ?. w  ]$ A9 r3 G
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
, {) T3 f, G# }) @' x3 G, _" P一般来说,板级的emac驱动都 ...

! |7 ~4 y, u; ^1 X& _$ }vefone您好,有些还需要请教下您。, u& C, q6 S. M: Q7 d: K0 m  b6 F- w
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
- b& G0 }! U" x% D$ E3 V8 R! L$ ^1 p- c. t0 Q: A7 u" P( @3 d
void __init davinci_common_init(struct davinci_soc_info *soc_info)
+ Z; n- H# c3 J+ s+ ~1 q. z# N. g9 M; s. k% @, b3 c
{
) _7 f+ k9 K4 a( h/ ^. y% n# _
: x& M% o' L# ^9 o* e* f, t             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口- [+ T4 I; B: L9 e7 f

! F: _, Z. H2 c( M9 L8 H1 _}
# g2 T- f* I+ W& A) T& a7 x8 a! w" M4 }0 c( }
//XXX 还是前面的
, P* Z0 \/ V" P4 Q: ~[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, ) ?, X. v% }  s+ _% @6 n7 k2 ?# c
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
' J4 s6 b+ |2 Z9 q3 ?4 F+ o[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
7 X3 j8 [; d1 K. Y6 W' L. ^6 \. N/ z* F" p, k1 R& d5 _" f* w* `
在后面
# V' F2 @9 M; |6 Q0 \+ ?; S" n  x# _/ M+ g: z
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
# {1 h- a  O. f! O) g0 H  E8 O[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:000 H6 Z, G& x/ X: S0 a% U' B

: {! H: Y- N  F' T" C7 m: P' z请问下这是什么原因?+ P# a% Y! a. m! J; m# f, S- d" U+ q( l

) x) E- D& ]" w. o1 S我百度了一下相关的问题:有介绍的说: q7 C. N& G8 ~. Z3 r) P
! L0 ?7 n$ _3 H" Q
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。& b5 j* [! ~5 I) j2 g* }
# a) D2 k% [+ R# J$ [
建议调试在u-boot中进行,方便确认问题。
; {, p. d! [1 ]9 D7 t1 j& F8 o) w7 B+ y8 F
& B" o7 Y0 _3 V5 B1 mu-boot下主要确认三点:; i" U+ F  @  P  i6 Q2 F# P
" M) M/ e! L# h
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
. W, g. I3 \% [' t* X( D. O: n$ E3 ^! q8 N: X
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
5 B! M, @- E6 ~# p) M5 o7 J% r5 s* {* E3 V/ J+ r
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??) Q" d/ r+ ~- D0 P. v

( }* W# S$ W& g7 n9 CLinux下调试也是确认以上三点。
' O8 D. j2 h( B6 T0 X9 v
6 v- h6 f8 [, m' _" f可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-17 06:46 , Processed in 0.045762 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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