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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
' g  d: w" a3 g/ K% |[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
8 W9 w/ v; {7 d2 I- m[    2.107743] davinci_mdio.0: probed" f3 P9 ]9 P+ v( t# t9 Y
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
) M, V0 G7 G& k" ^( ?[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown+ ^+ S' R, r5 E8 v$ [3 a/ Z9 S
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
& h8 h; v7 f8 q6 s5 m' O" ?, i4 b; L4 b4 N& y  i' G+ j
[    2.137188] PPP generic driver version 2.4.2
" B) }0 B  z# S0 `  ][    2.143236] PPP BSD Compression module registered  c4 ?  {% W0 ~% L& v2 z
) y9 [+ y( R$ K" T- R

$ |* \& E* K7 K; B5 h: Q1 c! J1 D在linux内核中的代码应该是以下:  c: A/ c/ o- x# |
        // 注册mii_bus1 K6 d! w! |9 W. I( g
        /* register the mii bus 2.   注册mii bus 2*/
. m8 K1 v# ~5 J8 a        ret = mdiobus_register(data->bus);
6 S- Q& l+ J8 X* b: _' \        if (ret)$ w, O0 K- H2 s" d) j; B0 j) j
                goto bail_out;
& W: ?: h1 f0 N# m
1 r4 T( T1 a3 U' \$ s; k; @1 \        /* scan and dump the bus 扫描和转储总线*/
" T5 n0 |3 ]4 w6 P        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
2 _. n/ ^5 C* W( P" [) B) t6 r$ }5 u                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据6 H' f2 m$ F2 d7 A2 G2 P
                if (phy) {
, z3 B% [5 N- ]8 A  o4 A                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
& S# e' Q/ {& R# R: W3 f3 w- s                                 phy->addr, dev_name(&phy->dev),2 U2 {8 G. ]" }3 `
                                 phy->drv ? phy->drv->name : "unknown");$ H, J' O( ]/ N' U& |/ P" U
                }0 {8 k9 [) g# k9 x! T9 @
        }
/ ~2 r5 V. Q. n' I: u" n/ }
; F/ B% z9 j$ |5 I- L, l$ p1 j, ?( h- k7 Q, y7 S$ N! n$ U$ c1 o
最终在后面 网络启动有问题8 K% Y; J$ d3 K! k- L$ U
[    2.387752] PHY davinci_mdio-0:00 not found3 t  G% |, y4 n+ D' B! d8 V
[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00: ?/ l+ W4 D! m- A2 o! |
[    2.398254] IP-Config: Failed to open eth01 b9 C% ]" W# p7 b! U3 ^8 x
[    2.402589] IP-Config: No network devices available., X4 s9 @/ N0 {1 y/ e3 P4 ?, T
2 ^  D2 l; A+ ]7 L1 @: L. o

% ~5 @7 T% Q# H

4 r1 S, b, H0 @' a1,请问下,这是什么原因造成的?- `! n3 r1 ?& T: k& u
2,phy模块 和网络驱动开发的过程 是什么样的关系?
( @0 w3 N: Q4 U7 o7 t谢谢
/ }5 P, y, \% ]9 Y8 J& Y
分享到:  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" {, q( `& A' d. O* A
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

4 n- m7 s1 [# j用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,. Y& q: H' _% O9 S
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?) k3 o! c2 t' G  z4 a
谢谢

点评

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
" k$ h0 v5 N/ \7 j用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...
9 @& U) D; i# D% L$ B5 V
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。3 ~8 k9 D: h6 H" D: A7 O2 d
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
1 C. u: }2 t9 B. w  I8 R! ^创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

! {* }0 y* w' U; O( z( x6 g请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?* I2 P6 ?+ ^: M# Y  W+ @
在linux启动时,打印的信息是:
/ G7 R$ `; h' Q$ X% e; tEMAC: MII PHY configured, RMII PHY will not be functional,1 {, @3 ?  T7 ?3 a; a
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
6 N- O8 m: p- Z: ]& j谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
4 s* O5 t4 V6 C% J创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
, |) j4 h8 Y  i  @$ K0 W' f) Z, Z1 y
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
( q0 X8 T- ~" |$ ?% c  wlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。
4 Y6 u, \8 o% N& Q# p一般来说,板级的emac驱动都 ...

8 d; T* ^/ m7 N( x7 D- G* {% J  ^vefone您好,有些还需要请教下您。
' {7 {% }% |4 [$ d. Y8 a然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
) x& ~, N; k) p6 {
2 v; j3 ?2 i! @) k; gvoid __init davinci_common_init(struct davinci_soc_info *soc_info)+ E6 F* {0 f  r# |( z

0 G) U) T7 n( J# t% A& j5 H; P4 v. C{
/ `0 A! e9 ]( i; Z' W2 Y8 O, {% m; N7 U: M
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口9 c$ u# h% [$ m4 d: \) k
* ~  a; K; N1 O1 K
}4 E5 Z( B5 y# ^4 j* O9 w# g. e

: y2 a. t) }3 \+ r" a+ P, e% N, N4 Z//XXX 还是前面的2 V0 D) f5 ~) N8 t6 V
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
% D" _3 p9 L5 g[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown  j* V  A+ j0 y
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown) f9 K9 l7 Q4 p  z3 ]8 |6 L! v

5 ]1 C$ e, J! U7 ^% T2 V+ |在后面
7 r0 q+ {! O# u/ q& P
5 m/ P# H: _3 H/ o" T+ u' c. E[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
7 _5 [4 `9 H) l! f0 Z3 G[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:002 Y6 M* u% G6 j7 [( z9 {

8 I) {; C4 R: R/ x请问下这是什么原因?
' i$ [' ^3 \/ y: q1 Z( [5 a3 t
9 T7 ?7 k$ Q4 o' s  w' a/ y我百度了一下相关的问题:有介绍的说
' o2 x) Y( w) I% v" T1 g$ @- B. }: V" x* @
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
+ p7 X+ [7 Z& O6 l. J. u7 `/ u- h( ~; B8 d
建议调试在u-boot中进行,方便确认问题。
% R  f% n6 |' u$ e  }
( c$ u7 \% q0 B  B4 {5 g/ l' z, ^u-boot下主要确认三点:
7 T" \! `  k$ w
" G3 }* ~  p& I1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作0 |9 N% s- V' y  s5 Z
2 K+ D7 T' `' F; C' F: \2 D3 a
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
( T# H  K. M9 g6 T& s& l- i3 |; o: _# J3 k; |
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??
' m0 z9 d0 O# I% @: n- f3 Q. b) A* l7 C
Linux下调试也是确认以上三点。
! B  I! [& i" n! q+ y2 U  ^2 j4 q7 y9 V' a, s
可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 06:19 , Processed in 0.042222 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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