0 概述

  QSDK平台中,我所接触到的版本,能支持MIPS架构的,是基于Openwrt AA版本;虽然CC版本上就已经能很好地支持AR8035了,可是AA版本它本身是不支持的,于是不断有人要求提供补丁方法,一般统一固件开发平台,从而减轻固件维护工作量。

  简单看了一下,如果直接将CC版中at803x降级以便适配到AA版本,改动工作量还是比较多的,怕麻烦,所以就只能另想办法,在百度/谷歌上找了好一番后,发现Matus Ujhelyi的at803x实现最简单,只要将用不到的wol功能砍掉,余下的代码就没几行了;然后再检查现有的ar80xx.c,它是能成功驱动AR8033的;而且,从驱动的角度上看,8033和8035相差不大,因此,适宜以ar80xx结合at803x,组建一个最小代码量的新at803x,来实现此需求了。

1 具体实施

  首先下载一份Matus Ujhely最早期的at803x驱动,可直接到百度上找“at803x.c”即可;然后将现有的ar80xx.c和ar80xx.h分别拷贝为at803x.c和at803x.h;将网上下载到的at803x.c中的at803x_enable_rx_delay和at803x_enable_tx_delay拷贝到新at803x.c中,在新at803x.c的ar803x_config_init中,强制使能“RGMII mode”、at803x_enable_rx_delay和at803x_enable_tx_delay;在ar803x_read_status,将uboot/board/ar7240/common/athrsf1_phy.c中athr_phy_speed中配置10M/100M/1000M时寄存器的配置值,通过phy_write函数,配置到对应的寄存器上即可。再其次,修改Kconfig文件,在AR80XX_PHY选项后增加AT803X_PHY选项;在Makefile中增加obj-$(CONFIG_AR80XX_PHY)预编译指令即可;最后,将phy_id修改为0x004dd072。如果phy_id错误,还是驱动不了该PHY的。

此外,按照网上CC版本驱动AR8035的通用方法,将mach-db120.c中的eth1的注册代码关闭掉;然后,要修改正确eth0的phy_mask值。如果是AR9344,它最多支持5个Port,也就是BIT(0)-BIT(4)而已。如果uboot启动时,串口打印信息无法确定是哪个port,则请在确保你的uboot是能正常驱动8035时,直接修改athrsf1_phy.c中athr_auto_neg中的打印信息,将"Neg Success"语句直接printf出来,这样就知道是那个Port了,从而就可以确定是哪个BIT(?)了。如果BIT(?)选填错误,网口还是不能通的,插拔网线串口也不会有打印。故如果实在没有办法,就启用BIT(0)到BIT(4),编译出5个固件,总有一个固件是能成功驱动起来的。

2 结论

  利用此方法,改动量非常小,且能正常驱动8035;插拔网线串口打印正常;100M/1000M协商正常(无10M口验证);跑流正常;稳定性正常。从而可以放心将原有固件迁移到QSDK平台上。

QSDK下驱动AR8035的更多相关文章

  1. Windows7下驱动开发与调试体系构建——0.概述

    本文集内容为windows7x64下驱动开发与调试体系构建,内容目录如下: 1.驱动开发的环境准备 2.R3与R0的通信示例 3.自建调试体系概述 4.在x64下使用汇编代码 5.实战反调试标记位(N ...

  2. linux下驱动webcam

    linux自带驱动只支持一些型号的camera,具体型号见http://www.ideasonboard.org/uvc/ 所以有些购买的webcam不能够在linux中被点亮,而且有些厂家只为了在W ...

  3. 2013-6-2 [转载自CSDN]如何入门Windows系统下驱动开发

    [序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概 ...

  4. [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)

    去年地摊买的破无线鼠标坏掉了.看上微软的Designer Mouse蓝牙鼠,但是买之前我要确认我能不能驱起来. 这款鼠标只支持蓝牙4.0.系统支持windows8以上,不支持xp和windows7. ...

  5. ARM&Linux 下驱动开发第二节

    驱动文件:qudong.c,make生成qudong.ko文件,烧录到ARM板上 #include<linux/init.h> #include<linux/module.h> ...

  6. Mac下驱动BCM20702A0 USB蓝牙

    偶然高了一个USB蓝牙,查到Mac下能识别,无法驱动,就去找了一下.方法很简单,就是把蓝牙的PID和VID加入到驱动里边去,具体方法和步骤如下: 1. 进入到/System/Libary/Extens ...

  7. Win8/8.1下驱动安装“数据无效”错误的有效解决方法

    Windows8.1 安装完vmware 后并没有安装 vmnet1,vmnet8 这两个虚拟网卡,纠结了半天,原来是两个服务没打开. 如果你使用的是Windows8或者8.1,并且精简过系统,那么在 ...

  8. 如何正确入门Windows系统下驱动开发领域?

    [作者]猪头三个人网站 :http://www.x86asm.com/ [序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文 ...

  9. 腾达Tenda W311MA无线网卡Linux下驱动安装

    菜鸟看这里https://help.ubuntu.com/community/WifiD ... enda_W311M 最近也买了颗Tenda W311M网卡,简单说一下驱动的安装和hostapd做S ...

随机推荐

  1. IntelliJ IDEA插件——冷门神器分享

    IntelliJ IDEA就不必介绍了,至今还能保持IDE前三的神器,如今java程序员的首选,今天介绍几款冷门但绝对是神器的IDEA插件. 前言 IDEA自不必说,IDEA插件是开发中必备的神器,相 ...

  2. 数据恢复案例分享:MSSQL 2000 错误823

    一.故障描述 MSSQL Server 2000 附加数据库错误823,附加数据库失败.数据库没有备份,不能通过备份恢复数据库,急需恢复数据库中的数据. 二.故障分析SQL Server数据库 823 ...

  3. Centos7安装openvpn及客户端配置

    1.openvpn介绍 VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,使用OpenSSL加密库中的SSLv3/TLSv1协议函数库. 目前OpenVPN能在Sola ...

  4. vueJs 源码解析 (三) 具体代码

    vueJs 源码解析 (三) 具体代码 在之前的文章中提到了 vuejs 源码中的 架构部分,以及 谈论到了 vue 源码三要素 vm.compiler.watcher 这三要素,那么今天我们就从这三 ...

  5. sql优化基础篇

    优化的步骤: 0.先sql运行看看是否真的很慢,注意设置SQL_NO_CACHE 1.where条件单表查,锁定最小返回记录表.这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始 ...

  6. python当中的 可迭代对象 迭代器

    学习python有一段时间了,在学习过程中遇到很多难理解的东西,做一下总结,希望能对其他朋友有一些帮助. 完全是个人理解,难免有错,欢迎其他大神朋友们批评指正. 1 迭代 什么是迭代呢??我们可以这样 ...

  7. pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集

    pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...

  8. terraform基本使用

    安装terraform 下载terraform最新版本: wget https://releases.hashicorp.com/terraform/0.11.5/terraform_0.11.5_l ...

  9. JavaWeb小项目(一)

    总结一下前段时间,在学了JSP.Servlet.JavaBean后,配合Tomcat服务器加上MySQl数据库搭的第一个简单网站. 前前后后,在学习了以上说的这些概念知识后,还进一步熟悉了整个搭建的流 ...

  10. spring boot / cloud (九) 使用rabbitmq消息中间件

    spring boot / cloud (九) 使用rabbitmq消息中间件 前言 rabbitmq介绍: RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.它可以用于大型软件系统 ...