QSDK下驱动AR8035
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的更多相关文章
- Windows7下驱动开发与调试体系构建——0.概述
本文集内容为windows7x64下驱动开发与调试体系构建,内容目录如下: 1.驱动开发的环境准备 2.R3与R0的通信示例 3.自建调试体系概述 4.在x64下使用汇编代码 5.实战反调试标记位(N ...
- linux下驱动webcam
linux自带驱动只支持一些型号的camera,具体型号见http://www.ideasonboard.org/uvc/ 所以有些购买的webcam不能够在linux中被点亮,而且有些厂家只为了在W ...
- 2013-6-2 [转载自CSDN]如何入门Windows系统下驱动开发
[序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文为主,这样让很多驱动初学者很头疼.本人从事驱动开发时间不长也不短,大概 ...
- [daily][device][bluetooth] 蓝牙怎么办!(archlinux下驱动蓝牙鼠标,以及三星手机)
去年地摊买的破无线鼠标坏掉了.看上微软的Designer Mouse蓝牙鼠,但是买之前我要确认我能不能驱起来. 这款鼠标只支持蓝牙4.0.系统支持windows8以上,不支持xp和windows7. ...
- ARM&Linux 下驱动开发第二节
驱动文件:qudong.c,make生成qudong.ko文件,烧录到ARM板上 #include<linux/init.h> #include<linux/module.h> ...
- Mac下驱动BCM20702A0 USB蓝牙
偶然高了一个USB蓝牙,查到Mac下能识别,无法驱动,就去找了一下.方法很简单,就是把蓝牙的PID和VID加入到驱动里边去,具体方法和步骤如下: 1. 进入到/System/Libary/Extens ...
- Win8/8.1下驱动安装“数据无效”错误的有效解决方法
Windows8.1 安装完vmware 后并没有安装 vmnet1,vmnet8 这两个虚拟网卡,纠结了半天,原来是两个服务没打开. 如果你使用的是Windows8或者8.1,并且精简过系统,那么在 ...
- 如何正确入门Windows系统下驱动开发领域?
[作者]猪头三个人网站 :http://www.x86asm.com/ [序言]很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都以英文 ...
- 腾达Tenda W311MA无线网卡Linux下驱动安装
菜鸟看这里https://help.ubuntu.com/community/WifiD ... enda_W311M 最近也买了颗Tenda W311M网卡,简单说一下驱动的安装和hostapd做S ...
随机推荐
- org.hibernate.hibernate.connection.release_mode
org.hibernate.connection包的主要封装了通过JDBC来连接数据库的操作,用户可以以数据源的方式,或者通过特定数据库驱动的方式,甚至是自己定义连接类的方式来完成数据库的连接操作,包 ...
- 解决vue2.0路由 TypeError: Cannot read property 'matched' of undefined 的错误问题
刚开始使用vue-router2.0,虽然也用了vux,用起来却发现一个问题--具体如下: 正常情况下使用脚手架跑完之后,然后修改源项目,首先在main.js入口里把该import进去的vuex,vu ...
- OpenGL中怎么把世界坐标系变成屏幕坐标系
对这个3D坐标手动进行OpenGL的四个变换,得到的结果就是屏幕上的像素坐标.前三个变换(Model, View, Projection)都是4x4矩阵,操作对象是四维向量,所以需要把(100, 10 ...
- php析构方法
析构方法说明: 1. 析构方法会自动调用 2. 析构方法主要用于销毁资源(比如释放数据库的链接,图片资源...销毁某个对象..); 析构函数会在到对象的所有的引用都被删除或者当对象被显示销毁时执行. ...
- JAVA_SE基础——37.main方法的详解
主函数 大家都会写吧. 大家一直都不知道为何这样设计,这样设计有什么好处呢? 白话解释: main函数的修饰符是public: 公共的 为何不用private 等等的修饰符 而规定只用public呢? ...
- C语言头文件引用
1,引用分为两种 firs:include<fileName.h> 引用系统头文件一般用<>. second:include"fileName.h" 引用自 ...
- C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)
通过 人打电话 来谈谈自己对IOC的理解 版本1.0 public class Person { public AndroidPhone Phone { get; set; } public void ...
- netty : NioEventLoopGroup 源码分析
NioEventLoopGroup 源码分析 1. 在阅读源码时做了一定的注释,并且做了一些测试分析源码内的执行流程,由于博客篇幅有限.为了方便 IDE 查看.跟踪.调试 代码,所以在 github ...
- BizTalk Server 2016配置 WCF SAP Adapter
BizTalk Server 2016配置 WCF SAP Adapter 最近公司内部需要使用BizTalk与SAP 系统进行对接,虽然SAP/PI可以以发布WebService 的方式实现与外部系 ...
- SpringBoot应用的监控与管理
spring-boot-starter-actuator模块 /health /autoconfig /beans /configprops:应用配置属性信息 /env:环境属性,如:环境变量.jvm ...