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 ...
随机推荐
- nyoj 数的长度
描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)? 输入 首行输入n,表示有多少组测试数据(n<1 ...
- HTML事件处理程序
事件处理程序中的代码执行时,有权访问全局作用域中任何代码. //为按钮btn_event添加了两个个事件处理程序,而且该事件会在冒泡阶段触发(最后一个参数是false). var btn_event ...
- zf框架的思想及学习总结
在Php的配置文件中可以设置日志文件 dos命令进入文件夹,然后利用命令:>zf.bat create project d:/hspzf这样就可以在d盘进行创建项目文件了:然后需要把框架的Zen ...
- 如何深入系统的学习一门编程语言——python自学笔记
前言 最早接触python的时候,他并没有现在这么火,我也没把他太当回事,那时候我对python的印象就是给运维人员使用的一门很古老的语言,显然随着tensorflow(以下简称tf)的兴起,pyth ...
- SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML
首先,请求通过accept请求头声明了支持的返回格式 然后,框架根据该请求头和代码实现(注解)选择了对应的MessageConverter处理返回! 一.验证过程 1.返回html 1.1.请求组装 ...
- 记java应用linux服务单个CPU使用率100%分析
之前在做项目的过程中,项目完成后在linux服务器上做性能测试,当服务跑起来的时候发现cpu使用率很奇怪,java应用把单个cpu跑满了,其他cpu利用率0%. 刚开始遇到这问题的时候我第一时间反应使 ...
- HTML初识
HTML初识 web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) so ...
- anaconda的使用
1. 查看已安装的库 pip list conda list 其中,pip list 只能查看库,而 conda list 则可以查看库以及库的版本 2. 安装或更新库 pip install scr ...
- 【贪心】Codeforces 349B.Color the Fence题解
题目链接:http://codeforces.com/problemset/problem/349/B 题目大意 小明要从9个数字(1,2,--,9)去除一些数字拼接成一个数字,是的这个数字最大. 但 ...
- MySQL · 引擎特性 · InnoDB 数据页解析
前言 之前介绍的月报中,详细介绍了InnoDB Buffer Pool的实现细节,Buffer Pool主要就是用来存储数据页的,是数据页在内存中的动态存储方式,而本文介绍一下数据页在磁盘上的静态存储 ...