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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题+ ~) M4 l( c/ q& A( L% v2 A
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
$ ~) L* x8 T% R6 N; _[    2.107743] davinci_mdio.0: probed2 t: P! X5 B7 @/ h4 p* u& ?  l) \6 U
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题2 W: A4 g6 N. ~, y2 M$ \
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown  }8 c3 b- t; B' o' h% U0 P
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown# o) h4 u) M' v4 ?+ X2 N

6 U& d5 p% V6 g1 U* O% t[    2.137188] PPP generic driver version 2.4.2
8 @6 c+ L0 S# O& m8 @2 E( B7 O6 j8 C[    2.143236] PPP BSD Compression module registered
, y0 @9 Y, u# _& s  H. Q8 P( [& p( i
% A* _/ p+ A. b7 J- A
在linux内核中的代码应该是以下:+ y5 E) P4 w. j' ]+ m
        // 注册mii_bus$ a8 [8 w# B! A. i; ?. s
        /* register the mii bus 2.   注册mii bus 2*/& ~1 V$ {5 q( S7 V
        ret = mdiobus_register(data->bus);% i4 c4 T6 S; _( [2 r) [8 @3 |2 t5 @1 k
        if (ret)
: N; C: q' g' C                goto bail_out;2 a2 T, I9 }+ g4 I) L

. ^' p. L" v1 F6 u5 P/ b8 s        /* scan and dump the bus 扫描和转储总线*/
+ E4 S3 w5 N5 [( }+ Y  J$ E        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {* @: u7 J; x; J0 s
                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
: ~7 u" \1 y7 T  V                if (phy) {
4 O) t' Y  a6 j- i# q                        dev_info(dev, "phy[%d]: device %s, driver %s\n",6 v; l9 {" Q+ A; ~7 m  K9 L
                                 phy->addr, dev_name(&phy->dev),% }+ p* i7 g" n8 Y
                                 phy->drv ? phy->drv->name : "unknown");2 N5 x4 X8 ?2 |( {& u6 g
                }
& u" k& r  r% ?: A* n$ p        }
. V( z4 O  ]* j/ p  ?& U) {; S5 P7 x
; |+ Q/ r+ M" Z% Q
最终在后面 网络启动有问题
, ]; Z# b# I* _8 n' f8 B7 f[    2.387752] PHY davinci_mdio-0:00 not found
) _. k2 n8 v; Y# V/ G9 B[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00& o* J2 J/ c& L  ?% B5 b2 n
[    2.398254] IP-Config: Failed to open eth07 L/ R7 m, G$ y- V, J+ J
[    2.402589] IP-Config: No network devices available.
. f( i! Z( H5 w7 T" `0 c- v. q- k9 s/ K5 G$ w5 J3 x

$ S- @& l. B) c+ z; @4 T  M; \

' B1 e8 z. Z1 G5 ?) e1,请问下,这是什么原因造成的?
! D, l+ i5 k( f2,phy模块 和网络驱动开发的过程 是什么样的关系?: Z! z. b( J' E! T2 V  e: v
谢谢
0 G  f" C' }" n1 A6 j
分享到:  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
" l& O, [) \" o3 [6 n1 T/ p请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
  ~$ o( o  a: D! d
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
7 o0 M$ b  a$ X$ r% g+ @0 k请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?  n9 O6 a9 {1 d% Z- V
谢谢

点评

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$ u8 b+ D# X* D, S  V
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
: P" O$ e7 ^" v. |* s5 m
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
& `! ?' n4 H0 _# w. q$ \& y一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:468 f# f2 _/ n0 [7 \, i: h- L/ R
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
& m% O0 p& k7 s" v; _2 I6 X' u" k
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?$ O) u0 q$ c# [& x, S6 J
在linux启动时,打印的信息是:  {, N8 R5 G) l& j3 G6 h
EMAC: MII PHY configured, RMII PHY will not be functional,4 m( V# T0 ]1 [$ N" }4 ?8 ~
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。+ n; Q4 I; }9 Y2 Q6 x+ \+ g
谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
) a8 w' E# J, I  f) r创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
, f" N$ {* a% A5 g
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40* p6 O' z1 s; Z* U
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。' V, Q0 r4 S# p% y" a% Z! F
一般来说,板级的emac驱动都 ...
& L4 a$ L8 q  C5 \7 [, }4 l3 {
vefone您好,有些还需要请教下您。
: d& g0 J  @/ z7 L. B" S  Q$ q* h然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为19 x3 D6 d  @: j" e% E
7 c+ M; ]% w  Z3 M8 s
void __init davinci_common_init(struct davinci_soc_info *soc_info)
0 E) K8 c: N2 S+ {$ o: d- n
5 \# d' I. u$ B{9 b" f3 R  K7 O4 d& D4 j3 G+ l( @4 e
2 a+ ]. A# c% ?) O3 R
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
' l$ k; X# i. @% k' o( C
" C' P5 F- K) ?0 ~4 `* l}
3 v" J! p0 |9 v, S: g
1 N8 E1 `6 }7 P. R0 q: j: y//XXX 还是前面的
! T, u& c- _+ Q3 N- G' ][ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
) {- @9 z  q$ P) J* g[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown; T" M% ^* F% a. t$ A' \
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown( |0 I  Z  Z/ B# d# E
! w" J: g) P$ z! _8 F
在后面& M7 h7 l+ |* Y0 h

4 q7 |) ^6 q9 ^" b0 c1 p[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了! Y9 f& t9 ~& L& y
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
# J% C5 f; O/ ?# ^; h
  D8 W% e( i; L请问下这是什么原因?$ d* Y& ?1 M( q8 ^, D# N5 Y5 l
& @6 L% ~8 E6 e& t* e& I8 y
我百度了一下相关的问题:有介绍的说
' V  z# L' w3 L6 B  V- [! {9 `
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
& Q! D* {( n$ b+ R  g9 l4 ^& r: q0 s) P: s+ c2 J8 {
建议调试在u-boot中进行,方便确认问题。
7 S3 c% S6 f! {, S) [- q
( x# y" F- x0 a4 m  a  s; a" eu-boot下主要确认三点:$ ^6 f" D2 h% B2 [) m
# k7 u; k0 m/ o+ f4 A1 A/ y2 }! l
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作7 {9 a- ?: L/ H# |) e

/ X8 G" K: [( u- d/ D6 V" T2)Pinmux configuration to support rmii interface                                //这个我应该已经满足- p6 j1 M6 v# S1 V) i2 d
$ Q" W9 T: R4 F
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
# B2 H- {6 u6 b5 i" [: ?( S0 K3 J# ], K% v
Linux下调试也是确认以上三点。. \- g: w) {+ B+ T+ ~& {

  X) G1 v' `: U; o可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 17:46 , Processed in 0.047892 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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