当前位置:首页 » 币种行情 » 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