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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题# R4 S% P; b8 ]# u) R
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1! A, [. W# i9 d% B, x% q: ~' R
[    2.107743] davinci_mdio.0: probed
8 p/ l) F. Z: K! I( V8 ?$ Q( ]7 T[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
$ {+ h& y- K6 t[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
/ y1 v" \3 c+ N- D6 I  H[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown8 h9 `+ S# ~* Y* D3 E

- W; ?3 c6 @  ?$ J8 ~: v[    2.137188] PPP generic driver version 2.4.2. a! ^6 i- o1 y" T- q
[    2.143236] PPP BSD Compression module registered
5 D$ e8 l  n5 H6 k5 m1 I
4 h7 F8 n" y; i3 s+ J* d! p! W/ E4 b/ ?% Y' }
在linux内核中的代码应该是以下:
7 y7 j. R/ f  c( r" _        // 注册mii_bus
  F7 w0 t5 j6 s% o% B0 Y1 Q        /* register the mii bus 2.   注册mii bus 2*/
  f& T$ M' Y/ u) D: C& y3 |1 S        ret = mdiobus_register(data->bus);' r: o2 K9 N( g8 X, s) r# d
        if (ret)
% i4 g9 ]9 |8 |( P6 {% |" T  X                goto bail_out;( r5 w* q$ f1 T; K5 \, I2 N# }
7 ~: X' B- q2 n! I$ M
        /* scan and dump the bus 扫描和转储总线*/7 T  t- ?3 P/ L( Y4 H" N
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
5 W2 q( D# l& F; g* X0 d                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
1 p/ N9 O- L  P0 _                if (phy) {7 m% x# |2 D+ c/ b9 {
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",- }" Z( X/ C/ o9 k
                                 phy->addr, dev_name(&phy->dev),$ C# N3 k: S; S/ T
                                 phy->drv ? phy->drv->name : "unknown");
; u* v5 J3 h1 t" k5 v1 ]                }
, i7 U$ Q6 Q9 z/ A        }2 ?! ~( E7 o% e% P0 o1 j3 I% }

' ]+ n0 P! y& d, t, w
/ v4 j' P) b6 F5 A8 J* X6 |9 v- n最终在后面 网络启动有问题4 v8 s% j$ W* M, I2 m8 v/ L
[    2.387752] PHY davinci_mdio-0:00 not found
$ l6 n( k+ O  A[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
; _1 a8 s1 \) |% X6 T[    2.398254] IP-Config: Failed to open eth0, C/ h# ~$ ?* l  P$ B
[    2.402589] IP-Config: No network devices available.
3 r: j+ U1 K* [7 k, F, x+ \; Y
& z: ^. z2 r! D2 k' B- I4 Q
4 C7 r4 w: m0 d- \/ F

; M' f" O  `/ s1 l$ _  W7 w; Y1,请问下,这是什么原因造成的?/ J/ @0 C" _5 u& v
2,phy模块 和网络驱动开发的过程 是什么样的关系?
7 R! B0 J) _- i& Z2 f, j! h; a谢谢
$ D& G$ B1 i% Q& S
分享到:  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 }( V  I4 {4 j请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

0 h1 h3 e3 `! }2 L% ^用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
3 u! \; n0 D" X) ?请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
8 V( T( W7 `( B, v& i* _* G# s谢谢

点评

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
5 f+ [7 d4 N9 U$ `* |3 L8 r用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

, b+ Y  B& [% ~$ ]# rlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。1 z9 o: c+ B& d/ g
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:462 |: P! E" b0 e( l2 U$ W2 P$ G
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

( M. p" s5 O4 U请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
, l4 K% B8 h' f4 z# T% Z; i. L在linux启动时,打印的信息是:
; r/ h5 p* C+ P. {1 g* jEMAC: MII PHY configured, RMII PHY will not be functional,) V9 J9 Z; d/ i- d8 x+ _
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
# s6 C3 }0 g/ G谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:460 u; H- F3 k1 c. A. {; J' T
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
1 z  M8 n4 J& y
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
, w* c( [! t! S2 T; b( |6 S! Rlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。# d$ n+ `' w" ^, U
一般来说,板级的emac驱动都 ...

6 U9 H* r+ ?) j5 @vefone您好,有些还需要请教下您。
5 N+ n- f2 D- j8 i然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1% W* G9 ~3 O  O$ |7 T6 A7 @

3 X7 I+ Q: ^4 b5 O5 T3 nvoid __init davinci_common_init(struct davinci_soc_info *soc_info)
) X0 K6 J/ _, W% }- Y
, a/ k4 L0 B- O6 z9 i{
2 Y8 d* |  K6 M6 m8 Y: z4 f  H0 ~* _" Y, I* A
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口  y% S7 a2 O0 s( L" d

( O. p+ D9 _6 U' P9 L}6 H" j' @7 r0 [+ K" D
( T9 F& K& y9 ?! j, C. W
//XXX 还是前面的# V4 V5 V/ M: Q8 M" F) V3 M% F, u' c
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
- M) m; K8 Y2 N' |, m5 q[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
& A# ~4 [$ q" S0 i& }[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown7 W# t# c( Z9 e
2 w6 u( \7 _9 F! G; @$ y
在后面
+ t+ r0 ^) T$ [5 B/ g, M
" E( O! S+ x3 a* n7 q) E[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了% x* t. Z( F; v# [+ ~0 Y" }2 f
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00& y$ k+ o% C" q- ~6 n! M
+ @, \1 J$ z8 p' H% x" s
请问下这是什么原因?9 V: O, l. H" D* u" X- L

, L- K* @3 _) u6 w# c1 G* A0 O" E我百度了一下相关的问题:有介绍的说
' ?; A2 S- C+ M5 ^9 L/ t& q+ U% [6 {; f4 f' [: A2 X# Q
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。( ?6 y6 {+ J5 q8 t

" G' w& r; ~# t1 {( j# E建议调试在u-boot中进行,方便确认问题。8 z9 ~+ R0 T( {/ Z* G$ ^
* r( t) C/ W) A/ r; {
u-boot下主要确认三点:
( d. P8 V( J) [; ?  A+ B) |2 I) c! _) c) z" q
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
7 w' r1 n" l5 A, D, O/ s7 \) H  |* M* s: E+ q' U8 I
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
% b" h  @, ~5 r. X
- @" O1 B2 V' j# E! a" d3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
' F% {2 `$ @* @6 t; E
  Z3 p& _8 k$ e  T4 GLinux下调试也是确认以上三点。, o5 `, ^; V) y7 V! X& A; @6 h
& O4 t' w! \0 K  P
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 04:29 , Processed in 0.045447 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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