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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
. q$ s; @5 G, J- Z5 j- k3 B( p[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
/ V. \. n. `) J+ C  [0 W[    2.107743] davinci_mdio.0: probed( H* s8 ~) {4 h2 o! v3 c3 T& {
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题5 p/ x' K' f" P, i$ x: C
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown9 }% k2 \% Y, `( F
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
1 r: q7 d# H* i) H5 T6 l8 |
2 o- q( N; _1 J7 n[    2.137188] PPP generic driver version 2.4.2# @; Y9 s: H& I& |0 ?7 y
[    2.143236] PPP BSD Compression module registered
! E2 X8 `; _9 V
+ I) S7 G7 h$ X( g- S" Y4 ]- e. V/ D$ U  E) w. j6 Q$ U
在linux内核中的代码应该是以下:8 s9 z: h2 j, o& h2 W2 q
        // 注册mii_bus
7 g/ s3 C2 ^/ D        /* register the mii bus 2.   注册mii bus 2*/
- [6 V2 \0 g* ^% ^( z        ret = mdiobus_register(data->bus);7 ~$ Y4 r3 x( z/ g* e% X
        if (ret)$ t( p9 R: ~# o
                goto bail_out;* n' p; N) V) t) p
2 b# t9 D4 n% _4 x+ s0 @
        /* scan and dump the bus 扫描和转储总线*/) @1 }8 |" ^$ l
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
/ V& X3 e; T% ~2 a* z+ W                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据3 }5 k% D" _. T  e+ [1 `. f
                if (phy) {2 q2 C" X0 G- B, L
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
+ U2 L7 V; e: h                                 phy->addr, dev_name(&phy->dev),/ e+ r' e, S, z9 x5 V: z
                                 phy->drv ? phy->drv->name : "unknown");1 _4 F. r: F) g# s
                }
1 E6 y! j1 w, U" ]        }' }% _+ ]# s) A, s: L

: g, V. y  S6 m$ ]3 F; f$ P  h' g$ b8 T+ a! L$ L& u' P
最终在后面 网络启动有问题" M4 H  H/ I2 I* j4 k, P% n2 ~
[    2.387752] PHY davinci_mdio-0:00 not found
, o% h6 S7 f! z% k6 k5 D[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
" d+ g; \* M, t# z/ ?( l  P[    2.398254] IP-Config: Failed to open eth0( o& M% q. p# t9 g, a2 i) M6 r# p8 Y3 [: I
[    2.402589] IP-Config: No network devices available.8 X3 V1 I3 B* n0 W1 @
6 {( g5 @& e. K5 k0 [& `

* S+ P6 x5 n' X  C
, t3 C& a% n  R1 Q& F2 R0 M$ h
1,请问下,这是什么原因造成的?6 `" ^5 I! |* r3 y4 h8 z
2,phy模块 和网络驱动开发的过程 是什么样的关系?7 u5 |% L6 ?% ^8 E0 X7 z
谢谢
) U7 T: _; @" Q- r0 {4 a
分享到:  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
) m& c$ e( Y0 ]3 l5 V% x' F: G请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
% i# s0 F; z6 O6 F0 S8 e( U
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,# p4 T" B( Q% O0 ^" o
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
7 [: b/ V) s0 c- P谢谢

点评

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' p' q  Y5 P7 |* |2 }
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
7 v" f/ q$ H3 U4 ~) h' B
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
. H, ]6 C, }6 B8 c, o* M# I一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
7 |9 u" |- K, l% Z创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

4 m% V5 L! F3 F请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
' Q* _$ [: u( k6 Y' T: A在linux启动时,打印的信息是:
- o' f( S. P- W6 n. S9 [+ a% fEMAC: MII PHY configured, RMII PHY will not be functional,
4 O9 j" V+ g# M& D$ ~% D应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
3 [. z. @' W: h4 Y; R谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
. ?8 Q% ?. q, R1 U1 r. p, q创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

" m( p; p+ U! ]7 b+ t我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
( z7 q& V) k# S) f: Slinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
7 q' ~5 [" t2 ^/ @9 Y一般来说,板级的emac驱动都 ...

" ?9 v. m- p9 [) {2 g# }/ bvefone您好,有些还需要请教下您。& `9 Z6 a: L) E, j+ f( p+ t& N
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为15 k8 m3 ~5 m4 X2 }9 _" P
7 f4 Z  |7 M( D3 O/ Q* V4 H& Z
void __init davinci_common_init(struct davinci_soc_info *soc_info); E4 @+ w2 u- l0 ]/ X/ z
8 g3 D6 c% R% y  R. U% I: s
{* r* I+ }7 u- E1 {
4 s' Z0 Y( z* R  I! O
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
; U) g1 R: z; x- l+ I  `4 C
: D5 C. B0 t- o" B3 C4 a) F}( B: Q) @+ C" G; M( t' [4 g

4 f. E1 r, S5 [$ |2 y* G//XXX 还是前面的
% k2 q8 l& P# Z2 N' J3 c- n6 x/ K2 S/ }[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, ! s/ W* }6 c6 U& h; Z2 o5 Z
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
8 J1 }( M4 v$ W3 k8 U[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
. n& k  s* ^+ [0 L1 k  t% _# q0 T% }
在后面; P7 m. R! Z5 r2 p- j$ y

5 A8 h; o) J+ h: i  B3 m, y[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了9 `- r3 j9 [5 w
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00' ^' X+ t8 W3 H" u
7 I# f" }& g' j+ O
请问下这是什么原因?3 K! `1 B* F- O$ \- |7 ]& E
) a" Q5 d. {# r. G4 @; t' G
我百度了一下相关的问题:有介绍的说
( u" j0 z# \+ L# P- k4 }2 D
3 A9 L3 f! e& e由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。+ v, J/ R1 z0 c0 j' S' L; _9 E

" ?1 Z; E# n) z. l# p; A2 P建议调试在u-boot中进行,方便确认问题。# e6 d/ d$ H5 [" i. R
/ W( Q8 }% o# X; S- J
u-boot下主要确认三点:
6 Y5 u1 y* {5 g; {( {8 o2 o
) C& f$ d, s. _$ k5 U8 Y, w1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
5 [) t1 p5 R6 f! _" T
0 [6 I0 a* G2 a+ p' u2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
) Y" V2 L$ ]$ q/ a& s5 x
1 \  M; B9 a" C& U3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??# a& F6 o% @! W6 h& ^
- t& K3 E* X9 {. q) R
Linux下调试也是确认以上三点。- t2 p$ G- |: x; g
2 a: }9 @) a* V8 B( g
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 03:08 , Processed in 0.044213 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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