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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
( ?# m) Q0 R; [! m& k2 N; I[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff18 Q8 x% [. S; T& ?3 r
[    2.107743] davinci_mdio.0: probed
& ]2 O" r- y4 ]& ^5 n[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题0 q) n8 m/ h$ j' O! n& {
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown6 }) Y6 W9 m1 I/ m" e# a  E; u& F. p
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown' }+ A# ~& ]" M/ ~: b

7 b+ j/ i4 L! b& e[    2.137188] PPP generic driver version 2.4.2
% R& X" f% R5 G# d6 T0 H[    2.143236] PPP BSD Compression module registered
- g5 T' G7 W* t2 d# ^  z( O% J, n! t- L9 O

0 o4 f7 \3 |7 q7 y在linux内核中的代码应该是以下:* }! M. V/ B; d9 H
        // 注册mii_bus( G5 W% i# {$ ?) L( }4 F2 d5 H
        /* register the mii bus 2.   注册mii bus 2*/( b1 j. H) x) w6 w
        ret = mdiobus_register(data->bus);4 _6 I1 K7 S7 Y7 J. s
        if (ret)
% C: @2 `- S6 ]8 K                goto bail_out;
2 R5 W  S* i( W+ G* y' ^
3 U/ F" D! W3 j) V2 _$ `        /* scan and dump the bus 扫描和转储总线*/2 f. q4 L- j' V# t7 [3 n; s
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {+ O; z! K: B% ]# x, X" j
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
5 L: n) l+ f- w; N- _8 ?                if (phy) {+ m: L9 W) \" y8 @
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
( O- f1 {2 ]( O# K                                 phy->addr, dev_name(&phy->dev),3 T, B! x# y) [' @+ D; n  Z
                                 phy->drv ? phy->drv->name : "unknown");
0 X* \. j: G8 w8 P; [0 W                }
- G  W1 o( ~4 {( \6 U# ]! T9 M        }
2 j! B* s: |6 ^+ O
/ H' u7 b, s7 m. U
) C- F/ x( ~7 {最终在后面 网络启动有问题; }' ~; x* A, L9 w5 ~
[    2.387752] PHY davinci_mdio-0:00 not found" U! K" X6 I) X: e1 t; w, a# X; v8 ?& y
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:009 J( z% f8 X, e0 b
[    2.398254] IP-Config: Failed to open eth0& q& r3 Z& J# B3 n
[    2.402589] IP-Config: No network devices available.
0 `6 T+ E" g: l  T! M9 |9 b; A9 O! L- S* g# K$ f' |+ m

# g4 V3 ~- t  \. v) b
, I4 }! s) n$ x/ c" h
1,请问下,这是什么原因造成的?
6 c* U( @5 ~4 r& W/ {1 P7 H; ~6 a; X2,phy模块 和网络驱动开发的过程 是什么样的关系?7 Z2 G2 |! m. K. W  q
谢谢
) L- `' S7 j) p
分享到:  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:345 t: y5 ]7 R4 Q! e' s+ G7 H2 |2 D
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
; L- {% B, K# M- \% _
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,7 v: N5 U" S- w6 W
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
$ H7 R/ j- L9 W* I% z. j谢谢

点评

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" d1 w3 }9 ~4 h
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

* N7 F4 q$ ?" N. e8 Q1 A8 e: {linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。3 E+ s0 Y3 P. m; A( }
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
( H2 B1 }* Z! w- x; j8 l0 J! n创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
* o$ K' w5 W. t0 I/ W) G( ~
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?! C, V- m4 j" W. f2 z
在linux启动时,打印的信息是:: ^1 r# X8 _5 k. v5 W/ _6 i9 p
EMAC: MII PHY configured, RMII PHY will not be functional,1 |. J5 F) f" n) l: P4 t# j3 G
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。) w7 u* G/ Q3 e, w# I- d* i4 V, Z0 I
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:465 X# i0 s& w9 E! b/ V' N
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
5 l% y  ?4 [7 v
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
6 o. e2 F- I: m/ O' T; flinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
; N' v+ t4 e& h" \) ?一般来说,板级的emac驱动都 ...
& h" `5 C2 p( r1 ?4 d
vefone您好,有些还需要请教下您。
: d4 Y* j: p. N+ x. u- c然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为11 S+ n3 s* j6 g1 [1 c# e% U. Q, \
" ^2 ]# J! N: x. v
void __init davinci_common_init(struct davinci_soc_info *soc_info): g; }2 _3 ~( f5 a2 Q# m
3 E& x+ ^- S: ]' z# }4 Z
{
1 q: |% i) e: b+ D
, n6 K5 C+ O$ d. V! t             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
  t2 A& x5 [! N' E! W# Y/ }2 i# b7 n* M8 U; x
}5 C$ l9 v5 }) J7 p: P
3 C9 z- L! D# L6 K5 T
//XXX 还是前面的( G6 w" [- L/ A( b
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, + d: ^5 q4 _. p$ l) z4 h7 t# S
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown! c( r7 @9 s! U& T0 b
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown9 K4 A7 B' T2 {: D1 o

# C, O* q8 c0 v; b5 G$ ]3 e在后面* ?( b0 \7 g& K8 \) d0 b% v5 U

# B8 \0 `- d( V, W5 `. x[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
% X3 M- t" U) n4 k# J[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
6 v# p4 n! A1 |  s. N: b
: @- Y. U9 h( ^请问下这是什么原因?/ j4 a! x$ m/ r6 M, Y) |; o

% o3 ~# R# q8 ?! q. S我百度了一下相关的问题:有介绍的说
. _2 s2 t; m$ J# c, j8 u+ j6 E: n7 {- d) c4 q5 [
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。! b' V' H4 F5 C9 n( G5 C5 C
9 R) Q/ z6 z% ]/ Y1 N
建议调试在u-boot中进行,方便确认问题。* E% A/ P0 a& e$ Q& G

& M- y( i8 G" o/ xu-boot下主要确认三点:
$ j. G) d9 e& [* ]# m4 M# j: Q+ Z" g2 s. y
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
; f2 O* c4 y0 W- a
! _+ \: k! E- Z  ]# I& r9 l# s9 ?2)Pinmux configuration to support rmii interface                                //这个我应该已经满足/ _" T3 d+ H* q  M& o. E
. K3 e# F* f7 {$ w$ K5 Z
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
2 X- w0 ]# n6 v# ~3 z0 ~" J4 |+ x' M% y/ V
Linux下调试也是确认以上三点。
$ n7 o- o* p/ p4 c: u4 o0 G0 R2 @+ N* T# [
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 02:24 , Processed in 0.041428 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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