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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
# D# h, I& u! V/ N[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1  s* E$ [/ l, E6 J
[    2.107743] davinci_mdio.0: probed
1 J/ F. p( ~# J* v' M, `[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题* R7 u" m6 D0 t$ V, A1 }
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown7 x7 ^# s5 m1 p( r, U) i& S
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown6 U$ X- y% R0 A! r, x4 }/ {! ^, E

: {" ]! S0 E5 _9 m* b. j[    2.137188] PPP generic driver version 2.4.2, L4 X2 ]1 T# N7 Z  R2 t; x
[    2.143236] PPP BSD Compression module registered. ?. ]2 N7 L; u  o# l6 r

6 O' C; k) P$ b7 l1 T7 Y: w/ Z* I1 l5 G, c; l. D
在linux内核中的代码应该是以下:/ [: k3 J) ^3 `" p: M
        // 注册mii_bus
. T* x8 h, D$ |% f8 }; V3 _6 v        /* register the mii bus 2.   注册mii bus 2*/
* ~  _( X0 E: L* l8 t( P4 h        ret = mdiobus_register(data->bus);# @8 ]' m. m( ^7 i; A& {
        if (ret)) P1 X2 @/ h' K
                goto bail_out;
& b8 U$ a: w. |9 C5 P; N
. t9 y  _0 a! D9 z# T' b        /* scan and dump the bus 扫描和转储总线*/
7 y4 h% |7 l5 s$ l! [6 l5 E9 Y; R        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {$ [1 X: C% i1 V. j
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据* t+ @# u- q' j: J7 N
                if (phy) {
8 ?5 C4 O7 Y7 v, E! v: q: d- y                        dev_info(dev, "phy[%d]: device %s, driver %s\n",- q, T! A9 y& u6 C+ `$ G! ^
                                 phy->addr, dev_name(&phy->dev),) S; M' G6 n0 Q) r( h
                                 phy->drv ? phy->drv->name : "unknown");3 J8 m' n# T9 W* j
                }
  N% [' y4 A/ e0 z, F% f9 C        }  k5 s& Z# c/ A) R% r6 H( p1 y' T% N

: [8 Q& }0 V1 W0 L4 p0 y3 X4 {
7 z7 x5 w1 t9 q! y  P) {7 {最终在后面 网络启动有问题
0 l: w8 x: }7 `3 B/ g[    2.387752] PHY davinci_mdio-0:00 not found' D. N7 P% d  w' H
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
; j# o/ o4 e- l0 d[    2.398254] IP-Config: Failed to open eth0$ K. p& E) _1 q- m" ]3 Q- c
[    2.402589] IP-Config: No network devices available.
: n: e4 ?4 A6 [$ ^: \& d* O7 ?8 Z( {! @
  U4 ~1 C# a% ~! H6 }9 A% F' |; y7 B  A+ }' L  y' m* b" g
+ l4 J' |, w% ?$ a4 L# y
1,请问下,这是什么原因造成的?# Q2 w+ U' d5 ^8 R; j" E& X
2,phy模块 和网络驱动开发的过程 是什么样的关系?: o5 Y' A8 l! P/ y) u
谢谢
: g: g5 n0 g8 ^) 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
4 C- l: q: q( l2 A& M* C请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

( ]7 k" i1 c3 p. |2 S. k用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
5 R9 x2 T  y2 W9 ?" k* ]2 `请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?; d+ ?# T# `% `3 }0 ]% ]
谢谢

点评

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
; N4 k0 m8 b2 L1 P0 Y/ R  w- y; Y用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
+ ?+ ~, K* W7 t- V: ?1 Q
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。/ [, \2 T6 ~: @% Y! O; ~
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46  ~0 {. R/ U8 R2 S' q
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
! Z, k) E" d9 K3 ^% M& f& ~
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?) o* k: K8 P1 N5 h7 q! s
在linux启动时,打印的信息是:) {" ^$ @4 a+ o9 m: Q
EMAC: MII PHY configured, RMII PHY will not be functional,2 w7 G& b! E# ^% b' |- l. h
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
5 D) a- G; W, w4 Y* U# ^3 |+ p( o5 ~谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
! @: g$ V$ ]- K* Y+ i创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
( S$ r5 T* R4 Y0 a# @+ y
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:404 z) \0 S( i% c0 o& F/ G  Q
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。- E- i- k: X" m! |3 E& w( b" |
一般来说,板级的emac驱动都 ...

' }9 `; X7 K3 |& }5 }& I# vvefone您好,有些还需要请教下您。
( v/ ^- [3 g# }! O( ]然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为14 p3 N' ]) S$ u* s) m
) L& {2 ]2 T+ |
void __init davinci_common_init(struct davinci_soc_info *soc_info)! a  \2 h1 _! @: I
/ ^0 p$ \; J0 c9 L, h
{: o! }- u- |* |" [

2 _. p# {1 f* f8 ?7 l/ i             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口& t+ ], l1 ?  o- \; ^
7 s; t" {: v* u: p1 i8 Q; S
}8 Y1 ?: P& B+ g: `. h; e9 `
6 p% I# d# U$ C) s2 g3 W
//XXX 还是前面的
. ~; q6 i9 b" ?2 ]( O[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, , M  O8 v3 ]2 T' E
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
( f" _( q4 {. B: b+ E7 S9 U7 m0 h[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown- g* d; {' Y" [+ M8 d8 C

$ e. F7 b( E- a" }在后面
4 E& p. M- c% q  L9 ?5 n( A- b8 U
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了, t5 O/ T4 p% u% t- ~' `
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
% F( G4 v7 G* C+ G+ T6 F% X& z: J
) P7 Z7 [  F7 u% k( X请问下这是什么原因?
. Z- N0 a+ H: Q+ R8 K
6 H5 _; l8 ^% G9 a7 V" A* o我百度了一下相关的问题:有介绍的说7 S6 H; v/ b+ m* b( I) f

4 |  S0 K5 N, g# L# [由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。1 m  e8 A6 x9 V9 R! f" X* M# C7 g
) u& J) G, @) {# U
建议调试在u-boot中进行,方便确认问题。; Q) Y3 l9 y. R
- h8 `0 u4 T0 [0 M, o$ t. D$ |
u-boot下主要确认三点:
( P) M- B+ X5 \, Z3 y; {4 N- S9 g" \' V* D
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作3 A6 D4 [' O" r1 h+ m
% U" X% U1 u5 c8 G* A
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
2 f! \9 ?2 ]" q- @# i' y7 X9 a
6 o& \- N# J0 H) Y7 x3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
5 E5 @3 d% s" ?' `$ Q& Q* _- `: A/ X6 T* z7 ^7 e& }2 _: [
Linux下调试也是确认以上三点。5 r7 |) F0 f7 z: V. O
1 v; B8 v0 w/ \5 ]# I* }/ u
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 11:30 , Processed in 0.045155 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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