1. PHY芯片簡介
phy:工作在網絡模型的物理層,是IEEE802.3規(guī)定的一個標準模塊。IEEE802.3規(guī)定了 地址0~15共16個通用寄存器,只要配置好這些通用寄存器就能保證phy芯片正常工作。16~31地址的寄存器有廠家自行定義。
mac:工作在網絡模型的數據鏈路層,通過rgmii或rmii接口連接phy,mac控制器中的mdio控制器提供mdio接口,用于訪問phy寄存器。
MDIO:Management Data Input/Output的縮寫。MDIO接口包含在IEEE802.3協(xié)議中,是專用于MAC與PHY管理的串行總線接口。主要用于配置PHY芯片狀態(tài)、讀取寄存器、讀取PHY地址、獲取LINK狀態(tài)等操作。與網口MII、RMII(TX_CLK、RX_CLK)等數據通訊無關。MDIO接口最多可以掛載32個PHY設備。
2. 驅動修改指南
2.1 驅動代碼說明
執(zhí)行以下命令進入net/phy文件夾查看跟以太網驅動程序相關的源碼。
cd ~/EASY-EAI-kernel/kernel/drivers/net/phy ls

2.2 驅動代碼修改
源代碼修改:
把xxx.c(比如motorcomm.c)放到kernel/drivers/net/phy
把xxx.h(比如motorcomm_phy.h)放到kernel/drivers/include/linux
Makefile修改:
cd ~/EASY-EAI-kernel/kernel/drivers/net/phy vim Makefile
加入以下內容:
obj-$(CONFIG_MICROCHIP_PHY) += microchip.o obj-$(CONFIG_MOTORCOMM_PHY) += motorcomm.o

Kconfig修改(這樣幾可以從make menuconfig找到新加的驅動配置項)
vim Kconfig
在PHYLIB之間(如下所示)加入以下內容:
config MOTORCOMM_PHY tristate "Motorcomm PHYs" ---help--- Supports the YT8010, YT8510, YT8511, YT8512 PHYs.

2.3 驅動配置
回到kernel目錄,執(zhí)行make menuconfig:
cd ~/EASY-EAI-kernel/kernel/ make menuconfig
注意:ARCH、GCC_FULLPATH、CROSS_COMPILE三個環(huán)境變量。具體的值可以參考build-kernel.sh腳本。
3. 設備樹修改指南
執(zhí)行以下命令進入/arch/arm/boot/dts文件夾查看rv1126相關的設備樹配置。
cd ~/EASY-EAI-kernel/kernel/arch/arm/boot/dts ls -l rv1126-nano*

3.1 設備節(jié)點位置說明
打開設備樹找到以太網卡相關的位置。
vim rv1126-nano.dts

3.2 設備樹節(jié)點參數說明
PHY ID(以YT8512H百兆PHY為例):
寄存器ID(以YT8512H百兆PHY為例):
因此設備樹【mdio】要填:
因此設備樹【gmac】要填:
4. 編譯及驗證設計
4.1 編譯
編譯及燒錄見《嵌入式底層開發(fā)/內核驅動/內核開發(fā)流程說明》。
4.2 查看設備情況
adb shell進入開發(fā)板,看驅動是否正確加載:
dmesg | grep -i eth
若出現下列信息(以YT8512H為例),則說明驅動被正確加載:
[ 68.212302] YT8512B Ethernet stmmac-0:01: attached PHY driver [YT8512B Ethernet] (mii_bus:phy_addr=stmmac-0:01, irq=POLL)
通過執(zhí)行以下命令,確認驅動工作正常:
ifconfig
若IP地址被成功分配,則說明PHY網卡可正常使用(設備通常是eth0,但要以MAC地址為準)
eth0 Link encap:Ethernet HWaddr 4A:EF:6D:E8:5C:BA inet addr:192.168.1.168 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:63
最后ping一下局域網內任意一臺主機(如果是PC,注意一下防火墻),進行聯(lián)網測試:
ping 192.168.1.191 -I eth0
返回以下信息,則說明網卡能夠正常聯(lián)網:
PING 192.168.1.191 (192.168.1.191) 56(84) bytes of data. 64 bytes from 192.168.1.191: icmp_seq=1 ttl=64 time=1.03 ms 64 bytes from 192.168.1.191: icmp_seq=2 ttl=64 time=1.55 ms 64 bytes from 192.168.1.191: icmp_seq=3 ttl=64 time=2.00 ms 64 bytes from 192.168.1.191: icmp_seq=4 ttl=64 time=1.51 ms 64 bytes from 192.168.1.191: icmp_seq=5 ttl=64 time=1.52 ms
5. 常見問題排查
5.1 找不到PHY
錯誤提示如下:
[ 5.217653] rk_gmac-dwmac ffc40000.ethernet eth0: Could not attach to PHY [ 5.219021] rk_gmac-dwmac ffc40000.ethernet eth0: stmmac_open: Cannot attach to PHY (error: -19)
硬件角度排查:確認原理圖是否與手上的硬件對應(含圖紙版本是否與硬件匹配、無聊參數是否與硬件一致)?排查phy芯片供電是否正常?排查RST引腳是否有按規(guī)格書所描述的要求進行控制?【若有】排查外部晶振是否起振?
軟件角度排查:設備樹中mdio中的phyid是否填對?mdio中的reg是否有根據硬件的實際情況配置?
5.2 網卡功能異常
具體異常表現為:
* 無法DHCP。
* 用ifconfig手動配置IP,能配置成功,但通信異常。
原因:大概率是因為驅動不兼容,具體做法如下:
* 把mdio的compatible改成"ethernet-phy-ieee802.3-c22"。
* 使用通用網卡驅動(通過make menuconfig把motorcomm的驅動去掉)。
審核編輯 黃宇
-
開發(fā)板
+關注
關注
25文章
5682瀏覽量
104788 -
rv1126
+關注
關注
0文章
108瀏覽量
3540
發(fā)布評論請先 登錄
分享一份有關TB-RV1126Ds開發(fā)板硬件的規(guī)格書
RV1126開發(fā)板數據手冊
rv1126和rk3568對比

基于RV1126開發(fā)板網絡配置方法

基于RV1126開發(fā)板修改GPIO內核設備樹

基于RV1126開發(fā)板修改CAN內核設備樹

基于RV1126開發(fā)板實現人臉檢測方案

基于RV1126開發(fā)板實現人臉識別方案

基于RV1126開發(fā)板實現人臉檢測方案

基于RV1126開發(fā)板實現人臉檢測方案

評論