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

2.2 驅(qū)動(dòng)代碼修改
源代碼修改:
把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
加入以下內(nèi)容:
obj-$(CONFIG_MICROCHIP_PHY) += microchip.o obj-$(CONFIG_MOTORCOMM_PHY) += motorcomm.o

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

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

3.1 設(shè)備節(jié)點(diǎn)位置說(shuō)明
打開(kāi)設(shè)備樹(shù)找到以太網(wǎng)卡相關(guān)的位置。
vim rv1126-nano.dts

3.2 設(shè)備樹(shù)節(jié)點(diǎn)參數(shù)說(shuō)明
PHY ID(以YT8512H百兆PHY為例):
寄存器ID(以YT8512H百兆PHY為例):
因此設(shè)備樹(shù)【mdio】要填:
因此設(shè)備樹(shù)【gmac】要填:
4. 編譯及驗(yàn)證設(shè)計(jì)
4.1 編譯
編譯及燒錄見(jiàn)《嵌入式底層開(kāi)發(fā)/內(nèi)核驅(qū)動(dòng)/內(nèi)核開(kāi)發(fā)流程說(shuō)明》。
4.2 查看設(shè)備情況
adb shell進(jìn)入開(kāi)發(fā)板,看驅(qū)動(dòng)是否正確加載:
dmesg | grep -i eth
若出現(xiàn)下列信息(以YT8512H為例),則說(shuō)明驅(qū)動(dòng)被正確加載:
[ 68.212302] YT8512B Ethernet stmmac-0:01: attached PHY driver [YT8512B Ethernet] (mii_bus:phy_addr=stmmac-0:01, irq=POLL)
通過(guò)執(zhí)行以下命令,確認(rèn)驅(qū)動(dòng)工作正常:
ifconfig
若IP地址被成功分配,則說(shuō)明PHY網(wǎng)卡可正常使用(設(shè)備通常是eth0,但要以MAC地址為準(zhǔn))
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一下局域網(wǎng)內(nèi)任意一臺(tái)主機(jī)(如果是PC,注意一下防火墻),進(jìn)行聯(lián)網(wǎng)測(cè)試:
ping 192.168.1.191 -I eth0
返回以下信息,則說(shuō)明網(wǎng)卡能夠正常聯(lián)網(wǎng):
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. 常見(jiàn)問(wèn)題排查
5.1 找不到PHY
錯(cuò)誤提示如下:
[ 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)
硬件角度排查:確認(rèn)原理圖是否與手上的硬件對(duì)應(yīng)(含圖紙版本是否與硬件匹配、無(wú)聊參數(shù)是否與硬件一致)?排查phy芯片供電是否正常?排查RST引腳是否有按規(guī)格書(shū)所描述的要求進(jìn)行控制?【若有】排查外部晶振是否起振?
軟件角度排查:設(shè)備樹(shù)中mdio中的phyid是否填對(duì)?mdio中的reg是否有根據(jù)硬件的實(shí)際情況配置?
5.2 網(wǎng)卡功能異常
具體異常表現(xiàn)為:
* 無(wú)法DHCP。
* 用ifconfig手動(dòng)配置IP,能配置成功,但通信異常。
原因:大概率是因?yàn)轵?qū)動(dòng)不兼容,具體做法如下:
* 把mdio的compatible改成"ethernet-phy-ieee802.3-c22"。
* 使用通用網(wǎng)卡驅(qū)動(dòng)(通過(guò)make menuconfig把motorcomm的驅(qū)動(dòng)去掉)。
審核編輯 黃宇
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5683瀏覽量
104875 -
rv1126
+關(guān)注
關(guān)注
0文章
108瀏覽量
3544
發(fā)布評(píng)論請(qǐng)先 登錄
分享一份有關(guān)TB-RV1126Ds開(kāi)發(fā)板硬件的規(guī)格書(shū)
RV1126開(kāi)發(fā)板數(shù)據(jù)手冊(cè)
rv1126和rk3568對(duì)比

RV1126 實(shí)現(xiàn)人臉檢測(cè)方案

基于RV1126開(kāi)發(fā)板網(wǎng)絡(luò)配置方法

基于RV1126開(kāi)發(fā)板修改GPIO內(nèi)核設(shè)備樹(shù)

基于RV1126開(kāi)發(fā)板修改CAN內(nèi)核設(shè)備樹(shù)

基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)駕駛員行為檢測(cè)方案

基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)人臉檢測(cè)方案

基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)人臉識(shí)別方案

基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)人臉檢測(cè)方案

基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)人臉檢測(cè)方案

評(píng)論