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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
6 c5 c4 v& C8 x6 Q( E# Z[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1# l2 `# d+ h* g
[    2.107743] davinci_mdio.0: probed
$ ^" j1 q# t: S* M. s5 c[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题1 v# P. |, t* R* z" D: i+ M! p
[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown$ w% U5 I0 E# K) ^
[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown* G# h/ p' E% x2 ]5 g$ R& ~
$ m. k! n/ ^" T+ k( S" @( [
[    2.137188] PPP generic driver version 2.4.2, I* f+ P- J8 O7 v0 n1 D0 M
[    2.143236] PPP BSD Compression module registered
$ T; o& m2 v6 T+ l0 H$ j, x6 l1 J: [3 j5 \* c$ z

: m2 Q( R% e, ~在linux内核中的代码应该是以下:$ E- j+ j! \' r4 L3 j6 |
        // 注册mii_bus
& h0 X, G- E) W4 T+ G/ r8 o4 H        /* register the mii bus 2.   注册mii bus 2*// Y. Y7 S# ~" _2 S% ~/ V, c
        ret = mdiobus_register(data->bus);
6 K4 z# S( a$ ^' }        if (ret)
" ^+ p+ ]1 j! e7 P+ w( J# w3 C                goto bail_out;
( t/ `; E" S9 b: D8 C: B0 L
5 K* {4 A" P9 _1 J& u) V8 a& F        /* scan and dump the bus 扫描和转储总线*/& s9 k1 r) ^3 e% d7 E  E. d" j6 P& A
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
/ p( C* n" B, F6 s  T, v                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
+ ^0 m$ ?$ ]/ l- Q2 N4 ~% U8 g) F2 U                if (phy) {: B: {/ b' U) @. }+ s
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",' l7 p. l# r+ D$ t  b# J- c
                                 phy->addr, dev_name(&phy->dev),
5 ~4 A" y/ R, m                                 phy->drv ? phy->drv->name : "unknown");- o+ Y1 S2 D. a' t* f2 ]
                }) g: G0 ^' I5 C0 f" C( \: m
        }
+ ~& P! j1 J3 G9 T
* l! C5 y  i4 k
! F4 \' A* Y1 k# K4 P; _; a# g9 _最终在后面 网络启动有问题
. ?5 @: q/ l1 a! ]1 ~[    2.387752] PHY davinci_mdio-0:00 not found
7 j. v/ A1 r4 {" X[    2.392184] net eth0: could not connect to phy davinci_mdio-0:00. v8 k( b& x: m9 V# y8 ?* N, a
[    2.398254] IP-Config: Failed to open eth0
& \; O" B' y" F- ?2 W* ?[    2.402589] IP-Config: No network devices available., r, y! X/ O& i: K

3 n  c$ X/ m+ \' @. Z
) d" {; o& ~6 M$ z8 x" w: X

" f2 P% n* j& j& c$ e* C1,请问下,这是什么原因造成的?0 V; p0 G  e! Q% M  k. y
2,phy模块 和网络驱动开发的过程 是什么样的关系?( {8 }* H4 I3 o- V. ?& }: k
谢谢
) S5 l/ {# O- N2 k* ?
分享到:  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' r, n1 w& Y: O! |" S: G" Q6 D
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动

+ h5 c7 V9 C1 w- L1 y. [. \用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,3 c/ ^' q6 b5 F5 e, T/ M* T
请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?
! Z% m- H3 z& I- e谢谢

点评

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
9 O/ s' G; R9 ~/ u% s# a用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

, {6 T* S' c, plinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。, C# s* }8 v: P% z: O
一般来说,板级的emac驱动都是通用的(我接触过到的TI相关平台基本都是这样),所以不需要phy的特定驱动。如果需要用到比较特殊的phy,配置相关的驱动就行,在板级的驱动添加对应的信息就行。
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:468 g5 O7 }% \9 \
创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii
% o" @( T# v: W8 k' Z4 q
请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?
; U8 M- H) a2 }# G% U在linux启动时,打印的信息是:0 h, T6 c! Q8 |; O3 ^
EMAC: MII PHY configured, RMII PHY will not be functional,/ M( E4 y& y2 H
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
2 ?% [9 r/ P) s: v- C谢谢
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
& a. C/ v+ F: Y. Y创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

9 Q' f8 c! y/ H我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40- A- C- n$ h4 n5 F
linux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。# Y. ^8 g* P( H1 Y+ E6 K2 z; _  R) ^
一般来说,板级的emac驱动都 ...
1 O: @* w# H4 o: H. X8 F- P3 q; M% Q
vefone您好,有些还需要请教下您。
$ ?4 J/ L/ U+ v然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
/ K; w7 ^) b  u% z" s* x. Q6 [% q% S5 f
void __init davinci_common_init(struct davinci_soc_info *soc_info)
' H: a6 k# s8 ^  f. D* `& B2 G5 t
0 l+ _/ D6 ?5 `4 a' Y0 T{# b5 I' G: h6 F' C# F; h- X
- i, }1 a# [6 B# V9 M6 w$ h
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口
1 ]0 ?2 |! f4 w! L& [( k2 g' R9 m/ J8 b" K8 ~: r
}! }) W/ S9 P! ]/ {! t! V5 J  k
6 w5 p. k; z2 H6 h# J. F' l0 u
//XXX 还是前面的
5 W0 o% @% N* b2 c5 H3 c0 S, d2 P( L[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01,
' R' @4 s' i/ S- k: B& k[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
- ?2 S/ \; g+ p# o; x[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
4 D0 z3 ~8 Z6 i, y* L; [* R2 r* ~; ]/ |+ }7 X* r7 b( t6 K- H+ o
在后面8 p0 u% }4 I# }7 r

5 j% a$ y  r8 D+ P[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了, {2 v$ h$ U+ g/ R* g7 x5 z
[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
! G$ E# h3 o' Z, H: Z4 A  f3 b! e3 b: I. M8 k$ p( k
请问下这是什么原因?. i( E' b# [9 x. z9 h/ {  h4 S

" K" k6 W6 W* B4 I* d* [3 t5 r# x我百度了一下相关的问题:有介绍的说
2 X5 i" z8 _! U9 L
6 q* Q& O% y* R+ z5 V由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
1 X. j7 s0 z9 `# H$ E1 X5 |
9 X2 A& W1 H6 l3 L" n  _建议调试在u-boot中进行,方便确认问题。
1 {: }# N. W+ k  O2 q% x
, H2 s6 z- E5 ^7 w( x: g$ `$ Nu-boot下主要确认三点:
* [0 ?0 [6 H* C% t  @
' ~) [3 o6 D- b9 `& A" v1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作+ t$ E* f9 D4 {& h8 m

- L4 j" {; y) N) x2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
& ^0 R6 ]6 H, Z' T) G, t; t9 [7 y4 L4 C
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??- O# a2 y4 k! C
: K8 g! m& `2 M" T$ b  L+ u7 T
Linux下调试也是确认以上三点。
$ ?( u/ R/ _6 y+ G5 c# m
) }( y# U5 F2 T3 L* J3 a# S" Q可以指点下吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 19:35 , Processed in 0.042519 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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