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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题6 f' E1 ]9 i+ [" p2 ^) V+ U
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
# A$ E3 W9 g: a* f  y8 r[    2.107743] davinci_mdio.0: probed. V* i2 e' z0 w6 m  `
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
. A, f( [7 ~5 ~' Y- q3 m[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown( i$ u1 g7 ?8 J
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown& a8 x. z  W6 u
" m: H! L) _3 e' O; T
[    2.137188] PPP generic driver version 2.4.2
* }  w- r) ~  g8 v[    2.143236] PPP BSD Compression module registered4 T, P4 V, y6 z0 c( ?! n1 \6 ^' u- Y

) n  f/ a$ q! u2 `  p7 G  t: r5 b. c% V7 {0 k! I: R+ F
在linux内核中的代码应该是以下:
4 ]2 H) G0 t4 m, M        // 注册mii_bus2 T1 A; G7 @; V+ e$ r3 Y
        /* register the mii bus 2.   注册mii bus 2*/
2 q1 C- e/ B4 Q* I9 c- g% L        ret = mdiobus_register(data->bus);; C' a' h6 i7 _! Q
        if (ret)
3 L! N0 R8 R; q5 E: k# Y' ]- l: g                goto bail_out;# w6 R0 _3 q$ o# D7 O9 I* R9 u

3 H+ d1 t2 f6 _        /* scan and dump the bus 扫描和转储总线*/4 X) |, ~) P  ?5 r' Z, V8 H
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
# `# w& k& F1 l- `                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据1 N" x  G- L8 I/ T, M
                if (phy) {
1 y8 X: w0 u4 {, L                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
) E. X9 ?( ^& i0 d1 `" t$ e+ F                                 phy->addr, dev_name(&phy->dev),
0 k. o9 W0 y' j# x0 |5 P                                 phy->drv ? phy->drv->name : "unknown");5 \: a3 v3 q6 U) s4 _; u
                }7 Y) x( C: \- E; Q5 j+ `. E
        }: P* l; x! u4 {! q2 u
1 w: r/ j  p4 ^; x& [/ q- R; _

1 x) l0 }/ s( b' O, F, H% J% V2 F最终在后面 网络启动有问题4 j* Z4 z! A" S0 }
[    2.387752] PHY davinci_mdio-0:00 not found5 u! W  l3 g9 g4 o' g% ]& f
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00" W, l. a' l- u8 G! |/ \" W
[    2.398254] IP-Config: Failed to open eth0
8 L& O% w! z. h[    2.402589] IP-Config: No network devices available.$ w1 v7 Q: f& k# a* V
+ ^: m+ O3 N( k  y4 K

2 Y7 [9 }7 o5 u# {# c

" A- y! Q1 ]- M, l0 l1,请问下,这是什么原因造成的?
" C8 F% z1 I+ v- h* g0 A2,phy模块 和网络驱动开发的过程 是什么样的关系?; L+ {9 @2 d, ?" e
谢谢
/ g& _, t2 ^% s% m7 J8 U5 q# {% ^2 H- F
分享到:  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$ y" A% n3 V  \: S) D7 `) H
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

2 R$ C1 P) l) W用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,3 o& ]& F$ y8 A$ c( D1 A0 A
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
% `' A* X- N+ u谢谢

点评

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:332 V! N+ z+ |1 g& d
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
* V% A0 f$ h9 U4 ?8 l
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
( ^2 x8 t$ _: M! w& O+ w7 K一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
9 C# A) T9 ~& i2 C3 w创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
+ Q! P6 P" Q% |
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
8 k% p6 R6 P( j6 M在linux启动时,打印的信息是:
/ j2 {% ^' k& t2 p7 m; [# X' ]7 |* FEMAC: MII PHY configured, RMII PHY will not be functional,. I7 h6 \1 R) S" L% L
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。" q! {) R) {6 P8 Q  \; m9 O! n
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
6 Q% S8 V" y& q; J$ O9 O创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
: o) a) H2 c$ W
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:400 D# o* ]% A$ j: }- V+ ^- P
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
* f& X4 @7 H- p' Z$ a1 Q! j1 S一般来说,板级的emac驱动都 ...

3 `) I3 e& d" Rvefone您好,有些还需要请教下您。# _9 ]0 r' B& o8 b* ~+ u7 n; B) B
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
5 W  [1 D" p! |. m& H
  U% h$ i( ^1 V' c; I8 B/ w% P9 @( W9 \void __init davinci_common_init(struct davinci_soc_info *soc_info)5 ]7 Y( {5 j' g/ m) ?3 ]
$ Q. {/ g/ x! O8 I/ r
{
: E4 q) Z* E1 r+ ?! D) y6 s: O* J4 a/ y, v
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
. L. E, M# l+ `0 @
# O4 `% V+ Z! `" n3 o5 h}
7 v5 x6 b0 R( X- h; Z, ]0 g) W0 E2 u( [
2 B. @- ~/ C" }" g: i9 `& g//XXX 还是前面的. W$ y) z! A' z
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, $ M5 p" A: G7 x2 {# y2 K8 V
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
2 Z( {! p; W% I' B[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown" u0 O5 X9 ?" z9 [' {

0 K" v+ i1 F  Y; P$ ~: X在后面
7 u% a7 z# l( b' n* z% u' \
0 X/ p/ P" i. f6 F/ S) a[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
3 x5 f( e# K6 N, p' }[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
! g. ]* W/ P( m, N, O9 R0 u# e# m* ^
, \& U& e7 _9 d' `请问下这是什么原因?) M9 [/ O0 |) m, B3 \# i- M/ L: V

8 r! ]: J  S+ V8 O3 s# T* m0 V/ i我百度了一下相关的问题:有介绍的说$ @) a0 B# h. y$ m$ p. B7 V

: Z3 ^* ]( T. _由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。& P/ Z. c: P$ P; }" W
/ O; w: @3 f% f& a6 B
建议调试在u-boot中进行,方便确认问题。2 Y4 G# Z3 l" K2 S

4 S$ ]3 W4 F) e) a, z8 ru-boot下主要确认三点:
( Y) K7 O4 K8 E4 d
9 q+ Q- [6 L/ Q& J( h* i1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
% g. H2 W/ d! A
- F* ?. u% K+ I2 D" u2)Pinmux configuration to support rmii interface                                //这个我应该已经满足, p# C! t( J, V* f, f* y
( i; l3 |3 \3 X  L, W
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
; z+ s( [9 _! Q" T/ T. D+ M. Z7 a
Linux下调试也是确认以上三点。! q: d+ y6 |9 {: d

* M. ^# q3 b$ f% m& }. X% J; w可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 04:31 , Processed in 0.042024 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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