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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
跳转到指定楼层
楼主
发表于 2017-4-13 09:52:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
大家好,我准备在omapl138上ARM核实现移植linux系统,网络驱动出现了问题
4 @1 b! t6 ]7 C6 J7 H[    2.096413] davinci_mdio davinci_mdio.0: detected phy mask fffffff1
$ N, s- q+ F; o; m7 L$ }: C: G[    2.107743] davinci_mdio.0: probed
/ |/ d: C' S  X& `[    2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  //在这里有问题
1 C' Y8 A" E( s# @: f[    2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown
$ V! K. ^7 M( Y- M2 Q0 O[    2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
  @' }& ?" `8 u. |9 c0 C  g
: {0 W, [8 Q( I( [7 @. C% g" I[    2.137188] PPP generic driver version 2.4.2
( B6 D# C+ z; e% M[    2.143236] PPP BSD Compression module registered
3 v; \4 b" W( U$ ^& e4 q
/ X, _# F4 [4 y$ J
! G9 @# N  n6 S1 i( ^) k在linux内核中的代码应该是以下:) C9 h8 b/ k( W2 ?# ~7 v9 B
        // 注册mii_bus6 G: e( ], s3 _
        /* register the mii bus 2.   注册mii bus 2*/: P1 `/ e! T: j, z% l
        ret = mdiobus_register(data->bus);2 p# D' b/ r' I% s$ Y
        if (ret)3 W6 X* R8 U- m- ~6 n
                goto bail_out;, u1 S/ J* r$ t5 d. J

. f/ l% K' b! v/ Z. f! ^! u1 x        /* scan and dump the bus 扫描和转储总线*/! K5 {3 \; W2 P" A6 n. z0 Z+ z
        for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
# p( [7 X9 T- w' p6 J/ Q. ~                phy = data->bus->phy_map[addr];   // 应该从 phy_map下手  phy_map[0] 没有数据
2 }, R2 s; S& P0 f5 T" i5 C  q6 f                if (phy) {7 I1 |; }/ @. z; V+ }  m- e
                        dev_info(dev, "phy[%d]: device %s, driver %s\n",
" I  [+ E4 v5 L6 {& [& m8 u                                 phy->addr, dev_name(&phy->dev),/ x% |/ w7 Z5 L% ]8 q+ U
                                 phy->drv ? phy->drv->name : "unknown");4 S: K- L' S1 h/ Y: l
                }
* G& q2 T9 z# z1 B  a  e        }
0 Y+ C! m" s4 w8 d$ B  ]; g3 [
0 h5 R# c2 C5 g1 h& H, m. I8 F7 Z% Z$ [% V
最终在后面 网络启动有问题8 v6 _8 I- H5 a2 |# O
[    2.387752] PHY davinci_mdio-0:00 not found
( u8 t* _! e# A% F0 Z[    2.392184] net eth0: could not connect to phy davinci_mdio-0:001 S) b8 @4 z) W  m& c
[    2.398254] IP-Config: Failed to open eth0* l( h. q* E0 D% j# t* f& m
[    2.402589] IP-Config: No network devices available." p0 P  g# M5 z; Q4 g- z- ~
: w+ W3 U. w: n" w
, w2 C6 c4 q* T0 S6 R. \

" Y, S0 l7 K- Z- m' Q1,请问下,这是什么原因造成的?( ^& |, W6 M" o' r5 I4 L
2,phy模块 和网络驱动开发的过程 是什么样的关系?
0 e4 ]  M2 z1 v9 N& b& \" c谢谢2 T  N' ]' z4 J2 w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
8#
 楼主| 发表于 2017-4-21 15:31:34 | 只看该作者
vefone 发表于 2017-4-17 20:40
. y4 P& J$ Q0 u; T" Q* elinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。, `* [+ V  ~$ u
一般来说,板级的emac驱动都 ...
; x8 s2 d# a& G. u7 c  V1 K
vefone您好,有些还需要请教下您。
+ _/ Q4 P+ B' R2 X" H0 G然后,我另一个板子的PHY芯片是KSZ8893,是RMII接口的,我没找到在哪里修改为RMII,我就在最初配置的时候将rmii_en设置为1
9 c0 f' S+ R9 A( f% q' }% R
! l5 N0 I- \2 k0 K1 O% b( q7 Kvoid __init davinci_common_init(struct davinci_soc_info *soc_info)1 _- G3 R! I$ u7 [6 }

6 S& F) j! B% K" p8 O{
2 w8 F( D7 l* k: B. s7 x; {- V& L5 G9 q& T2 w8 g
             davinci_soc_info.emac_pdata->rmii_en = 1;  //在后面验证了一下是没有被清零,一直为1,说明使用的是rmii接口5 \: T) x% ?; o; N" a3 d

* @( o3 g0 W) x+ K}+ b' ?, X2 N  e5 p7 U7 h- @  M  W; w
  n) @, i# c6 n
//XXX 还是前面的9 t: @) t+ s& O; i6 ~# R
[ 2.111605] davinci_mdio davinci_mdio.0: phy[1]: device davinci_mdio-0:01, driver unknown  // 这里我发现是device  davinci_mdio-0:01, 3 V3 m4 J! U. G5 S8 `
[ 2.119866] davinci_mdio davinci_mdio.0: phy[2]: device davinci_mdio-0:02, driver unknown1 K( d6 E/ K- j2 A: ]* W8 D
[ 2.128281] davinci_mdio davinci_mdio.0: phy[3]: device davinci_mdio-0:03, driver unknown
9 M6 h  P6 q6 P/ r8 u; H, B1 v9 W3 X" l1 ^. O
在后面, ?/ {5 H! f( L
9 j, H4 g$ ^( q
[ 2.387752] PHY davinci_mdio-0:00 not found                    //  这里应该是没有和前面匹配好。这里就是davinci_mdio-0:00了
+ h, A7 t, W6 z2 ~; S6 z[ 2.392184] net eth0: could not connect to phy davinci_mdio-0:00
7 H7 x- H3 z0 _/ x, `3 K( x6 p' X* A0 O" Y. `- Z; y
请问下这是什么原因?. E1 s* c2 O  @7 H. C1 u2 h3 I: u
9 |. ~3 d; z. R* D
我百度了一下相关的问题:有介绍的说
) I! P4 p! I- a: S4 w& W) b
- V0 `- l" p: E+ z* ^6 W$ J2 B" c由于TI的SDK包中使用的general PHY driver,所以修改很简单,更明确地说,是确认配置。
) _3 w6 J  Y* z* ?. U! m: U
2 l0 w; z/ {0 G# z2 p8 B建议调试在u-boot中进行,方便确认问题。/ B: m: j* J1 O0 ~$ N

+ H" j: \; X. x: t  A# r9 Yu-boot下主要确认三点:7 T! i. H% s2 w) @

: }! K6 a. {% m; F8 O$ Q1)Program GMII_SEL in control module with 0x5 for RMII Interface    // 请问下对于omapl138 如何操作
- Z' j9 F( Z' j* a: r, N% {; I! O" S( ]# ^% i
2)Pinmux configuration to support rmii interface                                //这个我应该已经满足
+ k0 ~6 ^# s9 H- B) m; x, C4 H' `/ [- U; d! w4 r; n8 W3 ]/ W4 E
3)Phy ID setting in Platform data(由PHY的硬件电路决定,通过在PHY_ID的三个管脚上下拉来决定)  //这里我一直没有找到配置的具体地方??0 a( L1 n) G2 @" G5 f/ k( H" H; w& i

. F7 _$ J" F" n3 _( w8 uLinux下调试也是确认以上三点。
" d* ~* B* M! Q& l; N3 B( c5 `! d, a- P' k  o5 z  ?" b, T
可以指点下吗?
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
7#
 楼主| 发表于 2017-4-18 10:36:56 | 只看该作者
human 发表于 2017-4-14 14:46
1 j7 p* W6 }7 s1 Z4 C创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

! W$ I! A4 S" O: F  p7 {5 W  Q我已经将 emac-mode修改为rmii了
回复 支持 反对

使用道具 举报

39

主题

95

帖子

389

积分

中级会员

Rank: 3Rank: 3

积分
389
6#
 楼主| 发表于 2017-4-18 10:35:46 | 只看该作者
human 发表于 2017-4-14 14:46
2 G/ }2 e: }# F& |' D" b" t! ~创龙的内核支持mii和rmii,可在U-Boot命令行中设置emac-mode变量值为rmii

0 i& ?' F. U) d/ X( X3 e# A- {请问下,emac-mode是设置 uboot的emac接口的,还是设置linux启动时emac接口的?/ g* D* c- B) [5 o. u. g6 p( }0 H
在linux启动时,打印的信息是:
4 @( J  M* @- R( ~8 Y  O0 FEMAC: MII PHY configured, RMII PHY will not be functional,% F. h6 K$ A6 |
应该说明没有才用RMII接口,请教下,如何修改menuconfig,来修改为RMII接口。
( A# ?6 H) E* E0 p! `2 `谢谢
回复 支持 反对

使用道具 举报

0

主题

83

帖子

426

积分

创龙

Rank: 8Rank: 8

积分
426
5#
发表于 2017-4-17 20:40:02 | 只看该作者
小石 发表于 2017-4-14 09:33
+ z' j+ g2 b) q/ ~9 {# S, F用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RM ...

7 ~- Y8 Z+ I  t( Jlinux的网络驱动部分基本不用你去作修改。因为板级和底层的驱动都已经写好。% b# C+ p5 G- A
一般来说,板级的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:346 J+ u' X6 l: T! h+ j
请问您移植的是哪个版本的内核?对比一下我们的内核和emac相关的驱动
' K3 @' Q8 N5 ?
用的就是创龙的linux3.3内核,在创龙板子是可以的,唯一不同的是接口用的是RMII,打印信息也提示使用了RMII,没有使用MII,
. J1 ?0 J/ X# b请教下,linux内核中的phy模块 和网络驱动开发的过程 是什么样的关系?4 \4 Y% W# R* `
谢谢

点评

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, 2025-8-3 03:10 , Processed in 0.041801 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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