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平台上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM