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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题! u) L) m0 E8 e! F. C; X
[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
# l8 N/ P/ K' o! h0 T[    2.107743] davinci_mdio.0: probed& S0 {, ^0 M: W+ p: T+ i: t5 ^, P
[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题! P/ k) a9 d4 N0 n7 q: ^
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown( {3 @  Y) k. X2 h
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
; R* H1 Q4 y- w1 s, M# u! j0 E7 e4 U9 L4 M+ q& M
[    2.137188] PPP generic driver version 2.4.2* e( `7 y& T/ a1 h; E9 f% O
[    2.143236] PPP BSD Compression module registered- ~" J0 `& w4 r( g

" Q. {8 E7 c) w9 W4 B& S: ?* E; z. t1 [; z1 a3 D5 t( T
在linux内核中的代码应该是以下:3 A& {: E5 b' J0 N. T' P! \6 i
        // 注册mii_bus
1 F- r( L. A5 D7 ~        /* register the mii bus 2.   注册mii bus 2*/
5 e. z0 n! j6 ~* @# y6 v        ret = mdiobus_register(data->bus);2 C* Q2 E0 B1 L+ I0 m
        if (ret)
4 t7 [6 \) y+ c4 g                goto bail_out;5 j5 j- g! n* [$ j; @0 b
* _# Q6 }% ?; @% O; `; `8 s
        /* scan and dump the bus 扫描和转储总线*/
" V. y6 B: A2 ~" z6 h+ B. `        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
  x8 f- U, R! r4 S# z  D                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据# I/ b  `' V3 }. W
                if (phy) {
1 v' U) p( h( ]7 H* D  F                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
5 D3 ~, Z* n5 k  x* e3 s- B                                 phy->addr, dev_name(&phy->dev),
: y, S* U& `& |9 r                                 phy->drv ? phy->drv->name : "unknown");; Q, Q' X) B& o( p" J* E
                }
$ [9 E2 o! H/ s0 B" i, s3 c4 Y1 }( |        }% j" T6 ?$ s3 J1 \( V( v
- E" m' t" C5 P/ i' t3 v

! V7 p3 w$ B: M, o6 Z4 _最终在后面 网络启动有问题' ^, \" R2 T0 m
[    2.387752] PHY davinci_mdio-0:00 not found
% Y0 X$ B: L2 U$ `1 y[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00
: @- K  n% }  @' i) G0 P[    2.398254] IP-Config: Failed to open eth0
8 V+ K( {" C$ t7 }# U$ I3 F4 t' f[    2.402589] IP-Config: No network devices available.' q) J1 w0 J$ A: \& H$ i
  ~( s: b% h. e2 l  q/ w) g; L
4 u4 I  U. ^( O6 ?

& Z/ a. E' z- ^, V* A8 s5 t1,请问下,这是什么原因造成的?
2 x2 _3 ^: o/ T4 `2,phy模块 和网络驱动开发的过程 是什么样的关系?# R* @+ G8 h1 S
谢谢
& [0 E% q8 a# a1 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
* j( @/ v: w* q" |linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。0 Q8 L& Q, t6 B2 b9 W8 j
一般来说,板级的emac驱动都 ...

/ V8 A! F# U# X4 x3 Cvefone您好,有些还需要请教下您。2 i+ Y, j3 A2 I7 w1 R$ C
然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
( p1 s; N2 T  m+ @* E1 W! E2 Q4 y! M5 ]% ?4 e9 |
void __init davinci_common_init(struct davinci_soc_info *soc_info), h  _: U' x' F7 l' V) K  n2 R' U

6 H4 N5 G$ N: f) J) K{
4 ?  V/ t5 W$ B/ z% K, R; n4 p8 d1 e5 s9 I( [
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
0 N0 i! ~& i9 X  \% q1 a2 \' ~2 ]" }- Q+ l3 B: O
}  x: P  e2 C8 X, |8 X- y

. L' L: n* `0 z" C4 }//XXX 还是前面的
# C# @) `, T3 P4 _[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, * @6 w& r$ w2 C& R7 @
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
+ U9 `- y1 F3 v' t1 K[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown8 a0 r7 ~3 e; _- w
: ?( h; M& a( a( o! v5 {
在后面. ?6 Q  y8 x) O0 _0 [
+ M& G" X. K) f' _& y1 o1 v
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
! T) }& k! }. r+ d[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00. i7 |6 V6 N9 D
' h  X; c( u, _5 Z: ~4 f) F/ M
请问下这是什么原因?
& U; l9 i9 ^) E
* ~) V5 r% c; w我百度了一下相关的问题:有介绍的说
% V; v: K; p. O. X; Q0 Q! H* P/ l' m/ L
由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
+ G( y6 Q% }1 H: u/ u% w+ q% K0 P) \' c+ W4 s
建议调试在u-boot中进行,方便确认问题。
4 ^! L: J4 T1 L. s/ u
  L) E) B+ C( j% fu-boot下主要确认三点:
1 n0 Y+ u* H% N4 Y8 n
# P, g7 i  Z1 L1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
, I/ ^1 i! Z$ D6 i% U% [
5 C2 I' ]: |: @1 G3 C* J1 y2)Pinmux configuration to support rmii interface                                //这个我应该已经满足2 b; B6 D2 k$ D- {7 T3 C7 q5 P

. X( G- n* E* d" }! A3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??9 Q; n' x+ f. k" W5 A/ O

& D9 L7 R! }$ m& |9 X6 T% r" CLinux下调试也是确认以上三点。
0 h; D/ o/ E5 E2 p0 o1 ]: Z- P) X6 _- z) ~9 \% b/ B9 n! N( I( E# o
可以指点下吗?
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:462 c2 T1 H! U5 \4 I1 d  S
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
: h5 t& h% Z. m/ h  C: n  r
我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:468 d4 q, X( N4 x2 X
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

! h4 k7 T2 L6 }% S请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?! t6 ^* h4 ^3 O7 i6 j  Z
在linux启动时,打印的信息是:% i, z7 a" C5 e
EMAC: MII PHY configured, RMII PHY will not be functional,; ?- i5 b' S% |: w# K* `9 Z
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。) R7 L7 @2 ?' f; B! F: W2 q
谢谢
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
5#
发表于 2017-4-17 20:40:02 | 只看该作者
小石 发表于 2017-4-14 09:33
8 W9 h4 Q5 n9 F) Z( i用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

+ ], ^9 n4 U0 U, w" _7 slinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。. e2 ]/ z% `4 K) X
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
地板
发表于 2017-4-14 14:46:38 | 只看该作者
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
板凳
 楼主| 发表于 2017-4-14 09:33:48 | 只看该作者
vefone 发表于 2017-4-14 08:34
0 p: O  `* G. d2 X1 {# U请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

1 g, e% @$ ^0 d8 {6 M: w- H用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
1 G! J$ c& ^$ {请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
! G4 R& o/ b$ t谢谢

点评

linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。 一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配  详情 回复 发表于 2017-4-17 20:40
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
沙发
发表于 2017-4-14 08:34:48 | 只看该作者
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 13:16 , Processed in 0.055685 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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