產(chǎn)品上網(wǎng)口沒(méi)有顯示?無(wú)法進(jìn)行ping命令?速度拉跨?還經(jīng)常丟包?那一定是漏掉了什么細(xì)節(jié)了,看看下面操作,說(shuō)不定能夠幫到你。
?網(wǎng)口驅(qū)動(dòng)移植的準(zhǔn)備
本次我們使用的平臺(tái)是致遠(yuǎn)電子M3568系列核心板,網(wǎng)口模塊是致遠(yuǎn)電子ePort系列的ePort-G型號(hào)產(chǎn)品,速率可達(dá)千兆,而且簡(jiǎn)化硬件設(shè)計(jì),縮短開(kāi)發(fā)時(shí)間。
配置網(wǎng)口驅(qū)動(dòng)時(shí),我們得先了解原理圖中網(wǎng)口對(duì)應(yīng)的模式以及地址,確認(rèn)好用到的引腳,方便之后的設(shè)備樹(shù)配置,如下圖參考:

可以看到我們要使用的物理地址及PHY的工作模式,同時(shí)也要注意電壓的配置,與硬件工程師確認(rèn)網(wǎng)口模塊所需要的IO電壓,根據(jù)需求不同去配置電源域(3.3V或1.8V)。
?驅(qū)動(dòng)程序的移植及設(shè)備樹(shù)的修改
調(diào)試之前需要根據(jù)官方說(shuō)明去修改drivers/net/phy下的Makefile和Kconfig,然后將官方的驅(qū)動(dòng)拷貝到該目錄下?;蛘咧苯有薷腗akefile將該驅(qū)動(dòng)文件編譯到內(nèi)核,不修改Kconfig,這樣就不用make menuconfig去勾選上網(wǎng)口驅(qū)動(dòng)。之后在RK平臺(tái)下調(diào)整設(shè)備樹(shù)部分,由于ePort-G該網(wǎng)口型號(hào)支持千兆,官方說(shuō)明千兆時(shí)鐘應(yīng)設(shè)為125M,如下參考(注:其他如復(fù)位引腳和設(shè)置pinctrl的引腳未寫(xiě)出),根據(jù)原理圖實(shí)際配置來(lái)修改設(shè)備樹(shù)。
&gmac1 { phy-mode = "rgmii"; //PHY接口模式 clock_in_out = "output"; //時(shí)鐘輸入輸出方向,該為MAC輸出給PHY,input則相反 //設(shè)置千兆所需要的時(shí)鐘 assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>; assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&cru CLK_MAC0_2TOP>; assigned-clock-rates = <0>, <125000000>;
//根據(jù)PCB布線(xiàn)不同修改值 tx_delay = <0x21>; rx_delay = <0x2f>;
phy-handle = <&rgmii_phy0>; status = "okay";};&mdio1 { rgmii_phy1: phy@2 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <7>; //PHY的物理地址,原理圖上有標(biāo)出 };}
之后編譯內(nèi)核,查看drivers/net/phy下有無(wú)生成對(duì)應(yīng)驅(qū)動(dòng)的.o文件,若驅(qū)動(dòng)程序在編譯過(guò)程出現(xiàn)報(bào)錯(cuò),可能要根據(jù)自己內(nèi)核版本去修改官方的驅(qū)動(dòng)程序,將一些沒(méi)有的函數(shù)屏蔽或替換。編譯完成后將boot.img燒錄到開(kāi)發(fā)板上(內(nèi)核和設(shè)備樹(shù))。
查看網(wǎng)口是否配置成功及網(wǎng)口調(diào)試
1. 配置檢查
進(jìn)入開(kāi)發(fā)板,查看sys/bus/mdio_bus/下面的drivers和devices,分別進(jìn)入查看是否在devices中生成對(duì)應(yīng)節(jié)點(diǎn)以及查看devices下的phy_id是否與驅(qū)動(dòng)程序中自己網(wǎng)口型號(hào)的phy_id一致,如果沒(méi)有出現(xiàn)對(duì)應(yīng)節(jié)點(diǎn)情況檢查設(shè)備樹(shù)中compatible的屬性,如果還不一致則將iee部分改成id+網(wǎng)口型號(hào)的phy_id。如下圖:
輸入命令ifconfig ethx dowm和ifconfig ethx up(x為網(wǎng)口號(hào))檢查是否能正常起來(lái),嘗試更改設(shè)置ip地址,連接網(wǎng)線(xiàn)進(jìn)行ping命令查看可否通同一網(wǎng)段下的網(wǎng)線(xiàn)另一端地址。
2. 網(wǎng)口調(diào)試
在ping通外網(wǎng)之后可以嘗試使用iperf3來(lái)進(jìn)行網(wǎng)絡(luò)測(cè)試,測(cè)試通過(guò)iperf3功能從板子做服務(wù)器接收速度和板子做客戶(hù)端發(fā)送速度的數(shù)據(jù)來(lái)觀(guān)測(cè)是否達(dá)到要求。如下圖:

當(dāng)然,也可能存在丟包情況,這種情況需要適當(dāng)?shù)恼{(diào)整MAC的tx_delay和rx_delay,也可以通過(guò)在驅(qū)動(dòng)程序中調(diào)整寄存器值的方式來(lái)控制phy的tx_delay和rx_delay,一般調(diào)整MAC。通過(guò)RK平臺(tái)下中/sys/device/platform/fe….ethernet/rgmii_delay可以調(diào)試修改tx_delay和rx_delay,輸入命令echo 0x2a 0x26 > rgmii_delay(第一個(gè)延遲參數(shù)為tx,第二個(gè)為rx),修改的數(shù)值可以根據(jù)該目錄下的phy_ld_scan工具來(lái)查看。拔掉網(wǎng)線(xiàn),輸入命令echo 1000> phy_ld_scan后,如下圖所示:

有0的表示通路,根據(jù)橫(TX的延時(shí))縱(RX的延時(shí))坐標(biāo)來(lái)觀(guān)察出TX和RX的延時(shí)應(yīng)設(shè)置為多少。如果根本沒(méi)有0或者0很少的情況則考慮下硬件走線(xiàn)是否過(guò)長(zhǎng)導(dǎo)致。
-
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1956瀏覽量
88538 -
核心板
+關(guān)注
關(guān)注
6文章
1399瀏覽量
32012
發(fā)布評(píng)論請(qǐng)先 登錄
尋求 IOT-MKC3568-Main-v1.1 (基于 EVB1-V10) 開(kāi)發(fā)板的移植幫助.
迅為驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):iTOP-RK3568開(kāi)發(fā)板e(cuò)DP屏幕移植全攻略
【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板Linux驅(qū)動(dòng)開(kāi)發(fā)實(shí)戰(zhàn):RK3568內(nèi)核模塊符號(hào)導(dǎo)出詳解
【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開(kāi)發(fā)板驅(qū)動(dòng)開(kāi)發(fā)第4章驅(qū)動(dòng)模塊傳參實(shí)驗(yàn)
【作品合集】視美泰M-K1HSE、3568開(kāi)發(fā)板測(cè)評(píng)
M3568系列核心板:多屏同顯異顯,智能交互新體驗(yàn)
【RA-Eco-RA6M4開(kāi)發(fā)板評(píng)測(cè)】2、I2C外設(shè)驅(qū)動(dòng)OLED屏幕和移植u8g2
【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】合眾HZ-RK3568開(kāi)發(fā)板測(cè)評(píng)
高效開(kāi)發(fā) | 瑞迅基于瑞芯微系列主板QT移植部署(上)
【HZ-RK3568開(kāi)發(fā)板免費(fèi)體驗(yàn)】HZ-RK3568開(kāi)發(fā)板初步接觸
硬件調(diào)試:JLink 驅(qū)動(dòng)配置與調(diào)試技巧
RK3568驅(qū)動(dòng)指南|第十二篇 GPIO子系統(tǒng)-第130章 GPIO的調(diào)試方法
基于EPCM3568B-LI的無(wú)線(xiàn)模塊應(yīng)用 — 4G篇
北京迅為RK3568開(kāi)發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開(kāi)發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
【技術(shù)分享】在M3568上移植ePort-G驅(qū)動(dòng)及調(diào)試技巧
評(píng)論