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 ...
随机推荐
- IntelliJ IDEA插件——冷门神器分享
IntelliJ IDEA就不必介绍了,至今还能保持IDE前三的神器,如今java程序员的首选,今天介绍几款冷门但绝对是神器的IDEA插件. 前言 IDEA自不必说,IDEA插件是开发中必备的神器,相 ...
- 数据恢复案例分享:MSSQL 2000 错误823
一.故障描述 MSSQL Server 2000 附加数据库错误823,附加数据库失败.数据库没有备份,不能通过备份恢复数据库,急需恢复数据库中的数据. 二.故障分析SQL Server数据库 823 ...
- Centos7安装openvpn及客户端配置
1.openvpn介绍 VPN直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,使用OpenSSL加密库中的SSLv3/TLSv1协议函数库. 目前OpenVPN能在Sola ...
- vueJs 源码解析 (三) 具体代码
vueJs 源码解析 (三) 具体代码 在之前的文章中提到了 vuejs 源码中的 架构部分,以及 谈论到了 vue 源码三要素 vm.compiler.watcher 这三要素,那么今天我们就从这三 ...
- sql优化基础篇
优化的步骤: 0.先sql运行看看是否真的很慢,注意设置SQL_NO_CACHE 1.where条件单表查,锁定最小返回记录表.这句话的意思是把查询语句的where都应用到表中返回的记录数最小的表开始 ...
- python当中的 可迭代对象 迭代器
学习python有一段时间了,在学习过程中遇到很多难理解的东西,做一下总结,希望能对其他朋友有一些帮助. 完全是个人理解,难免有错,欢迎其他大神朋友们批评指正. 1 迭代 什么是迭代呢??我们可以这样 ...
- pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集
pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...
- terraform基本使用
安装terraform 下载terraform最新版本: wget https://releases.hashicorp.com/terraform/0.11.5/terraform_0.11.5_l ...
- JavaWeb小项目(一)
总结一下前段时间,在学了JSP.Servlet.JavaBean后,配合Tomcat服务器加上MySQl数据库搭的第一个简单网站. 前前后后,在学习了以上说的这些概念知识后,还进一步熟悉了整个搭建的流 ...
- spring boot / cloud (九) 使用rabbitmq消息中间件
spring boot / cloud (九) 使用rabbitmq消息中间件 前言 rabbitmq介绍: RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.它可以用于大型软件系统 ...