當前位置:首頁 » 幣種行情 » eth1phy什麼意思

eth1phy什麼意思

發布時間: 2023-12-17 05:00:52

1. wndr4300多線多撥求教

參考:http://www.right.com.cn/forum/thread-147109-1-1.html
首先是創建WAN口。來到網路/交換機。
P.S.
Ralink的網路還是相當清晰的。這是RT3052的交換機配置頁面。埠1到埠4是LAN口,埠0是WAN口(埠5是千兆GMAC,連接千兆
PHY用的。但是hg255d的千兆WAN因為官方OP驅動不足所以無法使用),CPU口連接著CPU的eth0。具體怎麼看 下面講解……

另附一張WDR4900的交換機設置……CPU是eth1 埠6是eth0…………

好吧回到正題……下面連接網線。本次使用HG255D的WAN LAN4 LAN3作為三個WAN口。判斷哪個交換機埠對應哪個物理埠最簡單的辦法就是連接網線的時候查看埠狀態。

先用我覺得比較通俗的說法解釋下交換機設置:
交換機設置中,每一行都是一個VLAN分組,每個VLAN分組內的介面都是橋接在一起的。
每個埠在分組中有三個選項: 關 不關聯 關聯。
關:這一分組中不使用這個介面
不關聯:這個介面將被直接橋接到這個分組
關聯:這個介面需要通過VLAN ID來訪問這一分組

以一開始的兩張交換機圖為例。
第一張HG255D的圖中,cpu埠(網路設置中的eth0)在vlan1和vlan2 中都是 關聯,那麼我在配置網路設置的時候eth0.1是和埠1到埠4橋接的,eth0.2是和埠0 埠5橋接的。
第二張WDR4900的圖中,埠1和埠6(eth0)直接橋接,CPU(eth1)和埠2到埠5直接橋接。
在WDR4900的設計中,CPU通過兩個網口與交換機連接,這時候判斷網路設置中的介面和交換機埠的對應狀況,看一組只有兩個未關聯埠的VLAN,一個埠是WAN對應的介面,另外一個是物理WAN介面。通過插拔網線就能判斷哪個是哪個了。
解釋結束。
交換機設置完就像這樣:

這個設置中,eth0.1與埠3 4 橋接,eth0.2對埠0,eth0.3對埠1,eth0.4對埠2
交換機配置結束,保存並且應用。

註:
以上交換機配置針對Ralink系列。
WR841N v3/941N v2不需要配置交換機,因為88e6060不支持這種VLAN配置方式,openwrt中默認已經把所有埠劃分開了,到網路裡面添加WAN時直接選擇埠就行。
AR724X AR93XX
QCA953X內置交換機默認只有一組VLAN,他的WAN直接由CPU連接到埠,不歸交換機管。這種情況在交換機設置裡面添加幾組VLAN,CPU端
口全部關聯,先保存不要應用,然後去更改LAN的介面為一組VLAN(比如eth0.1),再點擊右上角未保存的配置 保存並應用。

然後是設置WAN介面。

點擊左下角 添加

名稱命名為wan2,介面eth0.3
協議選擇你需要的連接協議。我這里3個wan是同一個路由器上的,所以協議選DHCP

然後,防火牆設置,分配到區域 「wan」

然後,
到高級設置中為每一個介面配置不同的網關躍點(不配置網關躍點的話無法使用MWAN3進行疊加)
(我由於所有WAN在同一個區域網內所以修改MAC避免沖突)

然後保存。
用類似的方法配置每一個WAN介面,配置完就像這樣……

點擊右上角未保存的配置,保存並且應用。

之後介面應該全部正常連接了。

WAN配置部分結束。下面是重點:MWAN3的使用

來到MWAN3配置界面……(那啥……我隨便翻譯了一下……你們的英文版就對著位置看吧……)
只留下一個WAN的時候是這樣的。MWAN3默認配置文件包括一個已經啟用的WAN和一個禁用的WAN2

轉到配置部分:

首先需要配置的是MWAN3使用的介面。那啥……作用看圖吧……看圖上的翻譯就行了……

在左下角填上剛才創建的介面名稱(我這里是WAN2),點擊添加。
呃……自己看圖吧……建議順便編輯WAN的設置把PING的IP改成國內的,不然容易被誤判掉線……

保存,別應用……
用相同的方式添加WAN3:

添加完就像這樣……

結束。下一頁。

成員配置。同樣……說明看圖……
這里的躍點數和介面比重的作用請先跳到下面的政策配置頁說明……

左下角輸入成員名稱,點擊添加。這里配置的是三個介面負載均衡,所以三個介面的躍點數和介面比重全部一樣。

成員配置完就像這樣……

下一頁。政策配置頁。
政策對成員進行了分組,由下面一頁配置的規則把流量劃分進不同政策,再由政策根據成員的躍點數和介面比重分配流量。
具體怎麼分配繼續看下圖頁面說明……如果希望創建一個政策,實現把兩個介面其中一個作為備用鏈路,那麼上面創建兩個成員的時候主介面設置較低的躍點數,備用介面設置較高的躍點數。然後兩個介面劃分到同一個成員中即可。

因為是三個介面負載均衡,所以我們只創建了一個名為balanced的成員。
添加三個介面,然後保存即可。

啊……就像這樣……

終於到了最後一頁……規則。根據不同規則把流量劃入不同政策。沒有被匹配到的流量會交給系統默認路由表處理(MWAN3使用單獨的一套路由表,不是nexthop均衡方式。)

只有一條規則,匹配目標主機為0.0.0.0/0(即所有經過路由器流量)到政策balanced

配置完,保存。

到右上角未保存的配置,保存並且應用。

配置結束:

2. ZYNQ+linux網口調試筆記(3)PL-ETH

在ZYNQ上使用gigE Vision協議的網路介面相機。

第一步:調通PS側網口GEM0(Xilinx BSP默認配好)。

第二步:調通PS側網口GEM1(見前一篇文檔:開發筆記(1))。

第三步:調通PL側網口(本文闡述)。

第四步:在PL側網口上驗證Jumbo Frame特性,並在應用層適配gigE Vision協議。

根據《xapp1082》可知,PL側的PHY支持1000Base-X和SGMII兩種配置,這兩種配置對應兩種不同的PHY引腳介面(連接到MAC)。而我們的hdf文件使用的是1000Base-X的配置。

關於網口的Linux驅動,我們在官網找到一份資料: Xilinx Wiki - Zynq PL Ethernet 。資料很長,我們只看與我們相關的2.4.1 PL Ethernet BSP installation for 1000Base-X」這一章節就可以了。

首先導入FPGA設計同事提供的hdf文件:

在彈出的圖形界面里,進入Subsystem AUTO Hardware Settings——Ethernet Settings——Primary Ethernet,確認可以看到PL側網路設備axi_ethernet_0,說明hdf文件里已包含了必要的網口硬體信息:

上圖中被選中的網口將成為Linux上的設備eth0。這里我們默認選擇ps7_ethernet_0,即使用GEM0作為首選網口。

啟用Xilinx AXI Ethernet驅動

進入Device Drivers -- Network device support – 選中Xilinx AXI Ethernet(以及Xilinx Ethernet GEM,這是PS側網口的驅動)

進入Networking support – 選中 Random ethaddr if unset

進入Device Drivers -- Network device support -- PHY Device support and infrastructure – 啟用Drivers for xilinx PHYs

進入~~~~Device Drivers -- DMA Engine Support -– 禁用~~~~Xilinx AXI DMAS Engine~~~ (對應的配置項名為 ~~ CONFIG_XILINX_DMA ~~~)

注意: Xilinx Wiki里對設備樹節點的引用有誤(&axi_ethernet),導致編譯報錯,應改為&axi_ethernet_0。

註:PL-ETH驅動所在路徑:<project>/build/tmp/work-shared/plnx_arm/kernel-source/drivers/net/ethernet/xilinx/xilinx_axienet_main.c和xilinx_axienet_mdio.c。對應的內核配置項為CONFIG_NET_VENDOR_XILINX和CONFIG_XILINX_AXI_EMAC。

啟用ethtool和tcpmp(調試用,非必須):

然後將生成的BOOT.BIN和image.ub拷貝到SD卡根目錄下,將SD卡插入板子上,上電運行。

上電後,使用ifconfig eth1查看網口信息,觀察MAC地址與設置的一致,且ifconfig eth1 192.168.1.11 up沒有報錯。

測試網路通路:ping PC是通的。說明網口工作正常。

Linux下eth1(即PL-ETH)的MAC地址有誤

問題描述:

開機列印:

注意:

MAC地址是錯的,驅動里解析出的是GEM0的MAC地址。

試驗發現,即使在system-user.dtsi里不寫local-mac-address,也照樣解析出的是GEM0的MAC。

而將system-user.dtsi里的local-mac-address改名為pl-mac-address,並將驅動里解析的字元串也對應更改為pl-mac-address,則可以正確解析出來:

Passing MAC address to kernel via Device Tree Blob and U-Boot:

http://zedboard.org/content/passing-mac-address-kernel-device-tree-blob

通過更改u-boot環境變數和設備樹,為每個板子設置一個獨特的MAC地址:

https://www.xilinx.com/support/answers/53476.html

U-Boot里的環境變數ethaddr會覆蓋掉設備樹里pl-eth的local-mac-addr欄位,從而影響Linux啟動後的網卡MAC地址;

但U-Boot里的環境變數ipaddr不會對Linux啟動後的配置產生任何影響。因為設備樹里根本就沒有關於IP地址的配置。

phy-mode怎麼會是sgmii?查了下官方的提供的BSP里,也是「sgmii」。說明這個沒問題。具體原因不清楚。

@TODO: 設備樹里的中斷號的順序如何影響功能?

為何讀出來的IRQ號不對呢?這是因為這里讀到的不是硬體的中斷號,而是經過系統映射之後的軟體IRQ number。兩者不具有線性關系。

關於中斷號的疑問:

Linux上的網口eth0、eth1的順序,似乎是按照phy地址從小到大來排布的。

Xilinx xapp1082-zynq-eth.pdf (v5.0) July 16, 2018

https://www.xilinx.com/support/documentation/application_notes/xapp1082-zynq-eth.pdf

Xilinx Wiki - Zynq PL Ethernet:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841633/Zynq+PL+Ethernet

Xilinx Wiki - Linux Drivers:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841873/Linux+Drivers

Xilinx Wiki - Linux Drivers - Macb Driver:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841740/Macb+Driver

Xilinx Wiki - Zynq Ethernet Performance:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841743/Zynq+Ethernet+Performance

查到關於Jumbo frame MTU的定義,當前值為9000,可否改大一些?

驅動源碼里關於jumbo frame的說明:

設置MTU為9000,發現ping包最大長度只能設為ping 192.168.1.10 -s 1472

https://lore.kernel.org/patchwork/patch/939535/

【完】

3. openWRT如何修改MAC地址

1、修改 eth0 mac地址:
編輯 /etc/rc.local,ifconfig eth0 down;ifconfig eth0 hw ether d8:64:c7:5e:f1:c6;ifconfig eth0 up。
2、修改wireless mac地址。
這就最糾結了直接修改 /etc/config/wireless中的mac是沒用的,並且修改後無線網路會無法啟動。
在研究了/sbin/wifi腳本後,只能通過迂迴戰術來進行解決。
編輯 /sbin/wifi;修改如下一段,增加內容。
set_wifi_up() {
echo wifi_up;ls /tmp/run/*.conf

kill `cat /var/run/wifi-phy0.pid`
sed -i s/^bssid=.*/bssid=d8:64:c7:5f:f1:c6/ /var/run/hostapd-phy0.conf
hostapd -P /var/run/wifi-phy0.pid -B /var/run/hostapd-phy0.conf

local cfg="$1"
echo wifi_up 2;ls /tmp/run/*.conf
local ifname="$2"
echo wifi_up 3;ls /tmp/run/*.conf
uci_set_state wireless "$cfg" up 1
uci_set_state wireless "$cfg" ifname "$ifname"

}

3、修改完成 。
sync;reboot 重啟,就能看到所有修改都生效了。

4. 如何使用STM32CubeMX配置ETH

具體配置過程:
1、打開STM32CubeMX,並選擇好相應的晶元。文中的晶元為STM32F207VCT6,選擇後如下圖:

2、配置RCC時鍾、ETH、PA8以及使能LWIP;
由於此處我們的開發板硬體上為RMII方式,因此選擇ETH-RMII,若有同志的開發板為MII方式,請參考MII的配置方法,此處只針對RMII;
RCC選擇外部時鍾源,另外勾選MCO1,軟體會自動將PA8配置為MCO1模式,該引腳對於RMII方式很重要,用於為PHY晶元提供50MHz時鍾;
使能LWIP;

3、時鍾樹的相關配置,必須保證MCO1輸出為50Mhz,如果這個頻率不對會導致PHY晶元無法工作;
我這里因為晶元為207VCT6,為了使MCO1輸出為50Mhz,做了PLL倍頻參數的一些調整,總體如下:(同志們配置時可根據自己的晶元靈活配置,但需保證MCO1的輸出為50Mhz)

4、ETH、LWIP、RCC相關參數設置;
至此,比較重要的都在前面了,但是還有一點仍需要注意,即PA8引腳輸出速度,幾次不成功都是因為這個引腳沒注意。

後續的參數設置可以根據同志們自己的需求分別設置,這里給出我的設置供參考;
ETH參數保持默認,但中斷勾選一下;

LWIP參數設置如下:(因為我這里是配置UDP伺服器,IP選擇靜態分配)

5、生成工程,做最後的函數修改;
給生成的工程添加UDP伺服器的初始化以及埠綁定等相關函數;
我這里直接將之前的官方常式中的UDP伺服器文件加進來,如下:

之後將.c文件添加到用戶程序,主函數添加Udp的.h頭文件;如下:(udp文件的具體內容在後面給出)

6、主函數還需要添加一下幾個函數,在這里不對函數作用及實現原理講解,僅做添加說明。

附:udp_echoserver相關文件內容(該文件為官方的示常式序,版權歸官方,此處做轉載)
udp_echoserver.c的內容如下:

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "lwip/pbuf.h"
#include "lwip/udp.h"
#include "lwip/tcp.h"
#include <string.h>
#include <stdio.h>

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define UDP_SERVER_PORT 7 /* define the UDP local connection port */
#define UDP_CLIENT_PORT 7 /* define the UDP remote connection port */

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port);

/* Private functions ---------------------------------------------------------*/

/**
* @brief Initialize the server application.
* @param None
* @retval None
*/
void udp_echoserver_init(void)
{
struct udp_pcb *upcb;
err_t err;

/* Create a new UDP control block */
upcb = udp_new();

if (upcb)
{
/* Bind the upcb to the UDP_PORT port */
/* Using IP_ADDR_ANY allow the upcb to be used by any local interface */
err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);

if(err == ERR_OK)
{
/* Set a receive callback for the upcb */
udp_recv(upcb, udp_echoserver_receive_callback, NULL);
}
}
}

/**
* @brief This function is called when an UDP datagrm has been received on the port UDP_PORT.
* @param arg user supplied argument (udp_pcb.recv_arg)
* @param pcb the udp_pcb which received data
* @param p the packet buffer that was received
* @param addr the remote IP address from which the packet was received
* @param port the remote port from which the packet was received
* @retval None
*/
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{

/* Connect to the remote client */
udp_connect(upcb, addr, UDP_CLIENT_PORT);

/* Tell the client that we have accepted it */
udp_send(upcb, p);

/* free the UDP connection, so we can accept new clients */
udp_disconnect(upcb);

/* Free the p buffer */
pbuf_free(p);

}

udp_echoserver.h的內容如下:

#ifndef __ECHO_H__
#define __ECHO_H__

void udp_echoserver_init(void);

#endif /* __MINIMAL_ECHO_H */

7、至此,所有的工作完成,編譯工程,下載至開發板。由於udp_echoserver中綁定的埠號為7,這里我們通過測試工具測試網路的功能

熱點內容
比特幣技術指標kdj 發布:2025-06-07 06:11:55 瀏覽:997
區塊鏈技術的特點是去中心化 發布:2025-06-07 05:53:24 瀏覽:934
以太坊交易所最小交易單位 發布:2025-06-07 05:51:45 瀏覽:216
區塊鏈代碼如何編寫 發布:2025-06-07 05:46:51 瀏覽:852
算力480多久能挖一個比特幣 發布:2025-06-07 05:33:53 瀏覽:817
一天能挖幾個以太坊幣 發布:2025-06-07 05:29:08 瀏覽:705
比特幣私鑰如何保密 發布:2025-06-07 05:14:31 瀏覽:375
比特幣區塊鏈民法中的貨幣 發布:2025-06-07 05:00:36 瀏覽:464
挖出比特幣是偶然還是必然 發布:2025-06-07 05:00:34 瀏覽:574
區塊鏈與大數據無關對m 發布:2025-06-07 04:57:53 瀏覽:939