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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
1 N$ m" o) i9 e* f. H9 N[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1' }+ H" E( e  X' [; X' F7 S
[    2.107743] davinci_mdio.0: probed
* O" q( ^. c2 D0 c* A8 C[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题# N0 E9 B) _9 P1 N3 T* l
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
! M+ p# e7 Y  {' j' R3 O[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown' W& B3 F, R  d+ {% a

( Z5 X2 V4 Y/ f- L6 l[    2.137188] PPP generic driver version 2.4.2
+ z9 ~! a% f$ X5 q/ d, Q[    2.143236] PPP BSD Compression module registered7 J. v# A' a8 R: A# P2 A8 @
( b9 z4 P( @. i4 m# S' A

/ W% O; n2 ~4 k% u1 `. W8 h% P在linux内核中的代码应该是以下:
7 i  |6 v$ ]9 ?. b1 Y1 _        // 注册mii_bus
& b% N8 s' p- |' ]9 ?: x        /* register the mii bus 2.   注册mii bus 2*/; s: P0 X, u! ]# l. B& O; A$ h4 C7 f
        ret = mdiobus_register(data->bus);
+ J. [2 o8 v: x0 J4 l        if (ret)
+ ^9 ~3 h( t8 d+ F  r* k) p8 |; X                goto bail_out;
: y5 T3 T0 c# T" T. c( |
6 {; }3 s0 X) }7 e. `9 I        /* scan and dump the bus 扫描和转储总线*/$ l0 B& K* i) E6 L3 u, V( j
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
8 z; f9 {. v- [6 S                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
- {8 G3 Y. `+ Y                if (phy) {
: ^6 W' O4 b, `2 D: v                        dev_info(dev, "phy[%d]: device %s, driver %s\n",$ ?5 y' [) }6 T" L& n
                                 phy->addr, dev_name(&phy->dev),8 E7 U. G) d) S: {5 t; N
                                 phy->drv ? phy->drv->name : "unknown");0 d. I8 D4 d. z, D" {( b' S% h
                }" v5 g! Y0 T3 @8 y3 s& P. c" Q  d$ ~
        }
% l( v# t4 M6 c) `, G9 \6 e' X' S/ s' C# r) V& z2 n
$ D8 j# ], ^# j7 f3 i8 ]/ {
最终在后面 网络启动有问题
+ a4 Q2 e0 {; A! [' |5 F  P5 @[    2.387752] PHY davinci_mdio-0:00 not found
, Y. o$ ~7 w( ]9 o) v" E& x5 @[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00! ~3 h+ E, n6 H
[    2.398254] IP-Config: Failed to open eth0
& }3 S3 t7 L6 U: ?[    2.402589] IP-Config: No network devices available.
, U( L* I& A- ^4 Y9 d4 N1 w9 ~, a: l0 {, h7 B' O1 q
2 b- K& P! O  B: v" r' h; f1 U# Z

. o" V" |+ i/ i7 {( U$ {; z/ q1,请问下,这是什么原因造成的?. Z4 S5 I3 _  _9 V1 A6 ~
2,phy模块 和网络驱动开发的过程 是什么样的关系?
% w6 b+ n/ o) H- T谢谢
# H5 e$ Q+ \( J0 s9 I" z
分享到:  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:349 I, s# b# l2 |/ F, w" c( R
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

  o7 s( S/ |( o用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,2 e6 S2 b# k  N5 h2 T
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
& A) [2 n2 B) I0 \& t- v/ }( D谢谢

点评

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 _( v7 Y9 M. G5 C用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
7 {1 G/ |. ?$ k& @6 F; c
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。5 S" s* U7 P2 K. G$ {1 T, W
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46! r0 J1 ]+ T4 N
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
7 u( \# f" m$ q2 Q
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?8 b) o3 v" t! K' N# @
在linux启动时,打印的信息是:
- y, |/ B" n- z( ], s9 e1 a! H5 z4 \! bEMAC: MII PHY configured, RMII PHY will not be functional,
# _+ Q, B- ]  k/ _应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
: L+ @+ b; e; i$ n4 C8 w7 J  O谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:462 K8 r* H7 m# N- e: V# |
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

! a/ _5 k3 I& K" G/ e  @+ e# W我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
2 c% y+ L5 e. Plinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
& R# \- |, U1 Y4 l4 r* C% r一般来说,板级的emac驱动都 ...

% C$ W/ {# M. p/ h/ ~+ vvefone您好,有些还需要请教下您。
  K. e- c9 I2 O. g2 [: v9 ?然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
7 z9 n2 s" i( P8 |0 r- W2 S* q8 V4 u/ q7 r; M$ r2 j
void __init davinci_common_init(struct davinci_soc_info *soc_info)
6 e, [9 u2 L, y1 I8 t5 g' p5 C! `. r+ R' q6 k
{8 {2 v4 m6 d6 R& }0 O
: x7 G- I+ S4 F, j' F6 P
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
' G( x* e7 p1 G& c
8 m7 {; ^* B5 b' K4 d}
. t  j2 j5 S2 V; u$ o' `, Z* j! N9 N2 U2 t7 ~
//XXX 还是前面的
; r$ ~% l) k% J+ _; d[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
5 [# z2 S9 h2 y[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
/ L" t1 w" G* w[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
) V6 b! \, O" ?+ }1 s& r9 U1 ?# ~) b0 }4 m  u' C3 e+ Q! {
在后面
+ I. V" ?1 Z2 D! A5 u* K( Y  ?! `9 c
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
1 T; k4 o5 J$ E  }5 `9 s[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
( C* ~, `9 |  K4 O$ k& V
9 p- _% R- ~1 o0 y" H7 u# i" K3 s$ L请问下这是什么原因?
7 ~( {' o  ]9 Z' |5 O9 @- @( n; Q/ z. w1 s& g( E) }
我百度了一下相关的问题:有介绍的说
- ]# B' U0 L' j- B& b9 h* y* ]" ^0 k# }+ h; b: F( i
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
' S  v4 I- S3 g1 z
& _$ E2 {) b! p建议调试在u-boot中进行,方便确认问题。* J% v) A  |8 J% W$ V

! V( A1 Y: Y: eu-boot下主要确认三点:
3 j, y7 ~  s4 j' ?1 W3 ^- ]8 x7 w, ?4 }/ B7 F' I
1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作% C, `' L2 D& B' k% S, H

3 B* Y6 p$ m+ C! M* l2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
% e0 w, ~4 `, D7 P# f, |0 O- |( U3 D, s& o' |
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
5 X5 C$ \) ]( F! B' B9 g3 F8 N( b- l: @6 D4 M+ d0 J) p+ T1 T
Linux下调试也是确认以上三点。& S, m  E+ a; n! ~# V

3 v5 m) z; v" o可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 05:28 , Processed in 0.043229 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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