MAC to MAC ,网卡驱动应该如何调整

正常情况下,完整的网卡由MAC和PHY两部分组成。

PHY的含义很广,不知道的wiki之。

简单地说,是物理层芯片。在TCP/IP协议中,数据链路层之上的所有数据,都可以在你的内存里由软件来访问控制。但是最终在网线和光纤上的数据,不会严格按照内存里的数据发送。这是由物理特性决定的。例如高速串行总线上,如果有大量连续的1出现,会导致AC耦合电容充满,影响信号完整性。所以4/5b 、 8/10b转换是phy常见的工作。

MAC和phy之间是由MII以及衍生升级的RMII、RGMII、SGMII 连接。其中还有2根类似i2c的MDC/MDIO总线。MII用来传输大量的数据。MDC/MDIO用来访问PHY的寄存器,获取和配置链路状态。

phy的另外一头,再经过网络变压器,出来的就是熟悉的RJ45 了。

典型用法如下:

MAC ----MII及其衍生总线----PHY  -------网线、光纤------  PHY ----MII及其衍生总线---- MAC

MAC和PHY可以集合在一个芯片内,也可以分开,都很常见。phy寄存器也有一部分是遵循通用标准的。

在嵌入式产品中,典型的如交换机,很可能核心就是一个交换机芯片。高级的交换机芯片允许通过管理口IMP进行配置,这个IMP口通常连接到嵌入式cpu的网口上。这个cpu和交换机芯片都在同一个紧凑电路板上,如果它们之间再经过2个phy,实在浪费钱和电。

于是另一种经典应用诞生了: MAC to MAC

MAC----MII及其衍生总线---- MAC

在这种配置下,因为缺少了关键的phy,对于软件的影响很严重。没办法进行链路自动配置了,不知道速度、link、全双工/半双工。

在嵌入式linux环境下,需要uboot和linux都进行修改。

uboot需要配置交换机,强行设置交换机端的MAC为需要的速度和工作模式,强行设置为link 。

然后也需要强行设置cpu的对应网口,忽略phy的操作,强行配置速度和工作模式。然后才能在uboot下使用这个网口。

linux下也一样,会简单些,因为交换机端MAC已经配置好了。

linux的操作有些通用的可能么就简单写一下:

genphy_config_init 开头添加,

点击(此处)折叠或打开

#if 1

//xy add

if(phydev->addr==0x1e)

{

printk("p1013 eth1 has no phy,force to fixup ,step 1\n");

features |= SUPPORTED_Autoneg;

features |= SUPPORTED_1000baseT_Full;

goto end;

}

#endif

在phy_state_machine 的开头添加

点击(此处)折叠或打开

#if 1

//xy add

if(phydev->addr==0x1e)

{

phydev->link=1;

phydev->speed = SPEED_1000;

phydev->duplex = DUPLEX_FULL;

phydev->autoneg = AUTONEG_DISABLE;

phydev->state = PHY_RUNNING;

if(phydev->fix==0)

{

printk("p1013 eth1 has no phy,force to fixup,step 2 \n");

netif_carrier_on(phydev->attached_dev);

phydev->adjust_link(phydev->attached_dev);

phydev->fix=1;

}

}

#endif

这里增加了一个struct phy_device的成员fix,记录只需要修复一次。

嵌入式linux 修改mac,MAC to MAC 环境下,嵌入式linux的修改相关推荐

  1. Windows环境下使用Linux命令

    1.说明 如何在Windows环境下使用Linux命令, 这是一个屡见不鲜的问题, 而且已经有很多解决方法, 下面仅推荐几个我觉得好用的工具, 这些工具可能就是我们常用的软件, 而且已经在Window ...

  2. Linux系统编程及应用——ubuntu环境下

    Linux系统编程及应用--ubuntu环境下 程序由业务逻辑和系统访问两部分构成的.其中,业务逻辑是根据业务需求,按照设计好的逻辑规则,处理信息,与系统(平台)无关的:而系统访问则是利用操作系统所提 ...

  3. 缺少nst linux.mbr文件,用EasyBCD2.0在Windows环境下引导Linux启动

    用EasyBCD2.0在Windows环境下引导Linux启动 以在Win7环境下用EasyBCD2.0.2引导Ubuntu启动为例(Ubuntu安装在Win7之前,倘若反了进不去Win7,可以用Wi ...

  4. 成功解决Windows10环境下运行Linux系统下的.sh文件

    成功解决Windows10环境下运行Linux系统下的.sh文件 目录 解决问题 解决方法 解决问题 Windows10环境下运行Linux系统下的.sh文件 解决方法 .sh是shell scrip ...

  5. windows下学习linux,在Windows环境下学习Linux命令行的几种方法

    Linux高手通常将Windows工作平台的人鄙视得一无是处, 其实这完全没有必要.请不要装. 对于想进军linux的人来说, 学好linux命令行无疑是最基本的东西. 本文讲述如何在Windows环 ...

  6. Ubuntu环境下基于Linux进行DOL配置

    Ubuntu环境下基于Linux进行DOL配置 Description The distributed operation layer (DOL) is a framework that enable ...

  7. Android在Shell环境下运行Linux命令

    Android的底层其实linux,所以可以在android shell下运行linux命令,尤其是经过root处理的Android系统,基本上可以通过调用linux命令完全操作手机,下面的RootC ...

  8. MAC OX 10.8 环境下运行TLD算法(MATLAB版)

    关于TLD算法,就不具体阐述了,谷歌百度搜索一下,介绍的文章相当多. 概述: 一.安装和编译高性能OpenCV 2.4.6 二.安装xcode和command line tool 三.MATLAB安装 ...

  9. linux 查看mysql安装目录_Linux环境下安装MySQL数据库示例教程

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 Linux环境对大多数SQL初学者还是比较陌生,今天给大家演示一下如何在Linux环境 ...

  10. soc eds能 编译linux,【转】在SoCEDS环境下编译和更新preloader和uboot程序的方法

    [转]在SoCEDS环境下编译和更新preloader和uboot程序的方法 [复制链接] 在SoCEDS环境下编译和更新preloader和uboot程序的方法 前面有介绍preloader在HPS ...

最新文章

  1. iBATIS.NET
  2. Java编程中的基本概念
  3. hdfs中与file数组类似的数组_EXCEL中数组的应用专题之十二:行列数相同数组的运算...
  4. final、finally 和 finalize的区别
  5. Futter基础第4篇: 实现基础列表组件、 水平列表组件 、 图标组件【ListView、Axis.vertical、Axis.horizontal】
  6. 判断某个值是否存在指定枚举类中
  7. SQL SERVER 2005 批量收缩数据库
  8. 开源字体dejavu-fonts-ttf-2.37 的使用和测试
  9. 【重识云原生】第四章云网络第二节——相关基础知识准备
  10. 邮件系统html源码,SpringBoot系列—简单的邮件系统(附完整项目代码)
  11. 做自媒体视频剪辑到哪里找素材?
  12. 使用Java在浏览器页面无法导出excel表格
  13. 我们开发了一款待办事项分享平台——待办库(Todo Store)
  14. strace命令总结
  15. Linux全面解析讲解
  16. 网络请求未知错误 CLEARTEXT communication to XX not permitted by network security policy 解决方案
  17. 山洪灾害监测预警系统解决方案
  18. 如何让excel中一部分表格显示但不打印?
  19. Android SDK简介
  20. mysql 面试题 查出每门课程成绩都不低于80分同学的名字

热门文章

  1. seaweedfs上传文件为什么要先申请文件号?(/dir/assign)(两种工作模式:Volume模式与Filer模式)(seaweed上传文件)
  2. C语言:二维数组:求平均数
  3. Linux 字体微调
  4. 物联网在车联网中的应用
  5. 171029 windows10 桌面美化
  6. java中高效遍历list_Java中四种遍历List的方法总结(推荐)
  7. oracle通过imp导出数据库时提示:这些对象由***导出,而不是当前用户解决方法
  8. IndexedDB踩坑必须注意点!!!
  9. SpringCloud 基本使用
  10. Vue移动网页开发调试过程(第二篇)——weinre