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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
' n6 X  T- M3 Y8 g  T[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1" T: b( Q+ t# l
[    2.107743] davinci_mdio.0: probed
& C1 f$ P. Z. x[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题. r, Z2 H, h% w0 }  o
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown  h. @! Y1 v7 k
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown6 i) j  h- `( |% z! \, Y
; u+ k( e7 s* I3 u9 w
[    2.137188] PPP generic driver version 2.4.2- @. L" W& k7 t. F' Y
[    2.143236] PPP BSD Compression module registered
! m, M% ~; M5 g5 V- c: H  C" ?# Q9 s+ }9 C% q
' {3 \$ i& E0 |) d7 M' p6 v
在linux内核中的代码应该是以下:* H2 `; P7 B3 G1 q! O
        // 注册mii_bus
+ z; a$ P, `8 j0 S: _& {) i        /* register the mii bus 2.   注册mii bus 2*/
; _- T' E  B1 H. F( N7 z        ret = mdiobus_register(data->bus);( t) {/ v$ v) `0 T0 M/ Q! _, z
        if (ret)) g( P: F9 G4 Z8 h3 T# J% e
                goto bail_out;
1 L) O. }- Z+ o4 t$ h, B5 C& j; c  R' ^3 f8 u) `
        /* scan and dump the bus 扫描和转储总线*/
4 _  d+ F; n, I+ ]5 _3 K8 s: ?, `; Q        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {1 B' C; h% W" S
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据" D5 C3 e' h% r5 i1 {* F
                if (phy) {
9 {; w% C+ m( s9 g0 C7 O                        dev_info(dev, "phy[%d]: device %s, driver %s\n",6 y4 J9 j5 |* P8 l) Q5 c
                                 phy->addr, dev_name(&phy->dev),& v& C0 A# O$ f
                                 phy->drv ? phy->drv->name : "unknown");  O( L" |. D* j
                }9 K; I) X2 Y! Y6 P# c, e% a
        }2 x" A) C; r; U& _! H. j, Z
; O$ D# A) W' _7 J
" d1 A: ^  i' M9 |4 r1 A1 G* f
最终在后面 网络启动有问题
# V9 m+ a+ H8 O# z[    2.387752] PHY davinci_mdio-0:00 not found
. Z: r9 [; k2 P2 G[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00: t. q$ z/ {  n9 P  c+ h# e
[    2.398254] IP-Config: Failed to open eth0
4 z& Y& a! z9 n[    2.402589] IP-Config: No network devices available.
7 A  l. }  n; g0 Y+ f9 \3 E/ y# ~/ C3 ]0 R# S
$ A$ r  ~; ^; f  I

- V% v6 j* G- m; e, o8 A: u1,请问下,这是什么原因造成的?& Y2 u  s7 b, I0 I  J- E
2,phy模块 和网络驱动开发的过程 是什么样的关系?. X* I8 [5 Z! l+ C
谢谢6 s8 R% M* J8 ^+ Y# w0 M
分享到:  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  J; R$ n) t3 ]  c% d/ p4 A+ f
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
2 B, T" N# [! Z; J" S( }4 I! ?
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
5 g" v) U! g* d7 ^请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
0 g9 P. u. n( N* K& d9 l1 ~7 {谢谢

点评

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 C9 _7 U) U# j用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
+ w' b: ~3 \* q% \8 y* V. _/ x9 Z, n
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
! H5 @3 Q0 N6 M) c# u. G一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
% f* w5 x% M- J* G' n- i& q+ u创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

4 w- R# ~% F) g' {8 a2 C2 q+ V请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
- S6 e$ v4 ^  w5 k( P在linux启动时,打印的信息是:
5 z6 _' k/ u+ Q( u. i3 v1 h9 ^EMAC: MII PHY configured, RMII PHY will not be functional,! l( O6 \* H1 y4 x/ @4 v
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
8 W1 O: N. G8 e) D5 V谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:462 J! h1 _8 r$ |) u! f* p% u, p
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
3 J, ^' d5 M5 y, s
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40# z# C1 g( q+ B1 a# t& A5 A: P
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
7 `! v! e9 \$ T: |* c' X$ M) p2 o一般来说,板级的emac驱动都 ...
7 A% {4 q. k" T+ Y8 z; F
vefone您好,有些还需要请教下您。; }. }" }; m, E" ~8 H4 {
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为11 ?( Q* U/ f5 a; d, W3 h

& ~# B, N6 D6 U/ g) _void __init davinci_common_init(struct davinci_soc_info *soc_info)
4 K/ l. x, b  o
# d6 j" ]# p. ]# m( s{
" w+ j* k2 A  M3 O5 M& d- {" O) q9 l' x; N# J+ ]# L
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口: r  v: y6 w9 Z% w/ m$ \' W3 f

% m5 l+ ~2 H0 p}. D- q* c- O6 K- R# w: N6 _
  g  H( \  T- M; I6 V6 ?
//XXX 还是前面的( h( m( P, Z" O- Q5 t0 y4 Y7 M
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, ! p4 N) ]$ f. ~: y/ L9 L
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
7 }  ?: P# {: i[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
/ s; D4 x5 k- n% S+ m
9 f0 E1 a; e* n& C在后面# L$ V3 x$ p' x; z% z) U2 Y8 w

4 X: |$ d3 U$ v8 W& k& w. g[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
, Z& o' L" k4 u* [7 N  F[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
8 d1 t! E8 V- J4 e9 d9 B9 P7 }* E9 I8 k' N& _& c% ^
请问下这是什么原因?
* }1 Y9 k; U' W: y+ h  z
! Y, G4 ^9 X4 D4 x+ a我百度了一下相关的问题:有介绍的说
3 G9 b# ^8 \& O4 ~8 O( T" }# O' ?* |, b9 b
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。  }6 v; h& C+ P9 f
8 x1 U# @: Q' a$ ^
建议调试在u-boot中进行,方便确认问题。6 X2 B' O% X9 a, _8 y0 f
9 E, L1 j3 M  [4 I7 Z1 O
u-boot下主要确认三点:3 W0 V) P, I7 [+ ]4 y& E

5 p2 F* p7 l/ ~9 d$ {5 X1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
( D9 `8 b% o6 n# f
# D) {  A, S9 \0 v2)Pinmux configuration to support rmii interface                                //这个我应该已经满足0 g1 S' c# ]% p
9 m, G; s: V& O" }/ b* t0 f( H
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??; s9 X! q: z5 O' l/ m1 v
% P& Q- a, J( q. b0 W! z. w
Linux下调试也是确认以上三点。
" C6 {$ E/ Z4 l' h! K* z0 @
/ x5 {. n5 T0 N可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-29 10:53 , Processed in 0.061998 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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