arm板eth1静态配置
㈠ 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/
【完】
㈡ 用arm盒子+MT7620/7621作VLAN交换机实现单臂路由
使用廉价的arm64盒子,例如s905/rk3328等,搭配廉价的MT7620/7628/7621路由器可以实现高性能单臂路由,适合于各种类型的网络应用
以常见的5口路由器为例,原WAN(Port4)和原LAN1-3(Port0-2)保持不变,Port3配置成trunk接口并接入arm64盒子:圆雀
在上图的网络拓扑中,如果SBC是全双工千兆接入的,那么对于Port0-2的LAN内设备而言,NAT的单向流量(在同一时间仅下行或者仅下行测速)最快可以达到千兆,而如果同时进行上下行测速的话,理论上下行与上行可以各自分得500M带宽。
为了便于进行配置,你的arm64盒子需要安装好OpenWrt,并确保当前内核中包含8021q支持
对于内核中集成8021q模块的,开机后查看内核日志可以看到以下内容:
对于编译成内核模块的,请尝试加载8021q,如果没有报错则可以继续
对于没有OpenWrt支缓丛持的arm盒子,可以参考下面这篇文章,利用其它Linux发行版的内核加上OpenWrt的rootfs快速生成OpenWrt固件:
https://www.jianshu.com/p/3a48c6a7cc7a
修改 /etc/config/network ,追加以下内容,openwrt会自动为eth0生成vlan id为2的WAN口
如果需要ipv6支持,则继续向 /etc/config/network 追加以下内容:
重新启动netifd
查看 ifconfig ,观察是否成功生成了 eth0.2
将电脑直连到arm盒子,等待DHCP获取地址后进入luci界面,查看网络信息:
将mt7620/7628/7621的路由器刷成Padavan系统,并 确保机器的实际网口次序与webui中看到的一致 ,否则你需要调整之后的命令参数:
对于MT7620/7628,在启动脚本后面加入以下命令:
对于MT7621(仅适用于带GMAC2的机器,对于不启用扰腔樱GMAC2的机型,例如NEWIFI3,请参考MT7620的配置命令),在启动脚本后面加入以下命令:
上述命令将Port4配置成WAN口(VLAN ID=2);Port 0-2配置成LAN口(VLAN ID=1);Port 3配置成trunk口,也就是连接arm64盒子的接口,该接口上同时存在tagged(来自WAN,VLAN id=2)和untagged(来自LAN)的数据包,这与之前在OpenWrt里面配置的参数一致;同时还设置了Port3的PVC寄存器,允许此接口收发任意tag的数据包。
配置好的交换机如下表所示,可以将普通的vlan交换机按此配置,也能达到相同的效果。
将Padavan设置为AP模式,路由器将自动重启:
将trunk口与arm64盒子连接起来(参考本文开头的接线图),单臂路由配置完成。
㈢ 将arm板连接到无线路由,PC通过无线路由访问ARM板,请问怎么设置啊
你arm是wifi的毕弊话用ifconfig eth0 down (关闭eth0网卡)
ifconfig wlan0 up 启动无线wifi
然后ping 192.168.1.1
如果ping通就证明无线wifi启动,硬件已经手袜族连接到网上(前提必须保证wifi驱动上)
如果arm 是用线连接就什么都不用设置了
我不知道你所谓的访问是什么意思,通信?用socket 通信,貌似你自己得编写程序,如果用arm上internet,必须的配置网关, dns。你没有说清到底干什么,我无从好晌说起。
㈣ 如何启动arm开发板 nfs 服务
开发环境:
PC环境是ubuntu9。04,开发板为友善之臂的MINI2440
主机IP:192.168.50.72 网关:192.168.50.1 子网掩码:255.255.255.0
开发板IP:192.168.50.168 网关:192.168.50.1 子网掩码:255.255.255.0
为了能和主机建立起连接我必须得把开发板IP改成和主机一个网段的 .
这里首先要说明的是ubuntu的静态IP设置问题:
默认安装完成后,右上角的网络配置上 wired ..和eth0为灰色。不能点选 。
然后禁用networdmanager启动network以太网设置静态IP的时候,不管怎么设置, 子网掩码都和网关一样,
比如说:地址:192.168.0.22
子网掩码: 192.168.0.1 //不管怎么输入255.255.255.0 ,都不行!
网关: 192.168.0.1 //这里改了255.255.255.0的话,上面就也成255.255.255.0了。(auto ethernet是可以联上网的)。所以就上GG找答案,找解决方法。
进入FC10,执行终端命令(也可以用VI修改)
$ su -c ‘gedit /etc/sysconfig/networking/devices/ifcfg-eth0′
直接修改文件中的子网掩码信息就可以
代码为:
# Broadcom Corporation NetXtreme BCM5752 Gigabit Ethernet PCI Express
DEVICE=eth0
HWADDR=00:16:e6:db:c2:96
ONBOOT=yes
BOOTPROTO=static //这个应该是“static”,而不是“dhcp”或“none”;
USERCTL=yes
PEERDNS=yes
IPV6INIT=no
NM_CONTROLLED=yes//这个应该是“yes”,如不修改,链接仍是disconnected;
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.50.72
GATEWAY=192.168.50.1
然后重新激活下网卡就可以了.
#service network restart
设置完成后,仔做棚右上角的网络配置上System eth0与auto ethernet就可以点选了.
需要说明的是因为我之前没有设置静态IP之前通过 NFS 启动系统启动不了.
连接主机和开发板
我选择了串口线和网线连接起了主机和开发板
连接好电源,串口线,网线,打开串口终端
配置minicom(在FC10终端输入命令minicom -s)
进入到minicom配置界面后选择 :Serial port setup
然后按照下面的设置下就OK了
A – Serial Device : :/dev/ttyS0
B – Lockfile Location : /var/lock
C – Callin Program :
D – Callout Program :
E – Bps/Par/Bits : 115200 8N1
F – Hardware Flow Control : No
G – Software Flow Control : No
胡如建立和配置 NFS 服务
(1)设置共享目录
运行命令
#gedit /etc/exports
编辑 nfs 服务的配置文件(注意:第一次打开时该文件是空的),添加以下内容:
/opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash)
其中:
/opt/FriendlyARM/mini2440/root_qtopia 表示 nfs 共享目录,它可以作为开发板的根文件系统通过 nfs 挂接;
* 表示所有的客户机都可以挂接此念则目录
rw 表示挂接此目录的客户机对该目录有读写的权力
no_root_squash 表示允许挂接此目录的客户机享有该主机的 root 身份
(2)通过命令启动和停止 nfs 服务
在命令行下运行:
#/etc/init.d/nfs restart
这将启动 nfs 服务,可以输入以下命令检验 nfs 该服务是否启动。
# mount -t nfs 192.168.50.72: /opt/FriendlyARM/mini2440/root_qtopia /mnt/
如 果 没 有 出 现 错 误 信 息 , 您 将 可 以 浏 览 到 /mnt 目 录 中 的 内 容 和
/opt/FriendlyARM/mini2440/root_qtopia 是一致的。
使用这个命令可以停止 nfs 服务:
#/etc/init.d/nfs stop
检查nfs服务器是否开启: #service nfs status
重启对应的2个服务: #service portmap restart
#service nfs restart
检查防火墙看是否屏蔽了nfs端口
#service iptables stop
#service iptables status
㈤ 嵌入式linux实现双网切换
某些信息设备为了增强通讯可靠性,硬件上往往配备局竖双冗余网卡,当一块网卡出现问题时,另一块网卡州蔽可以接管工作保持网络通畅。本文介绍一种基于册腊州嵌入式linux系统的双冗余网卡的主备切换实现方法。linux内核提供了bond技术,利用该技术可以将多块网卡虚拟成为单一网卡,对外表现为一块网卡并且仅有一个IP地址。
1、硬件平台:主机是windows+ubuntu虚拟机,目标机是altera cyclone V SoC平台。
2、查看嵌入式linux是否已经将bond编译进内核,可以通过menuconfig进行配置。如下图所示
3、开机查看嵌入式linux是否已经存在ifenslave工具,如果没有需编译生成,找到内核中ifenslave.c,在其所在目录下打开终端,输入arm-linux-gnueabihf-gcc -Wall -o -I linux-socfpag/include ifenslave.c -o ifenslave进行编译。将ifenslave拷贝到目标机系统中。
1、目标机上cd到/etc/network,修改interface文件添加如下命令
auto bond0
ifface bond0 inet static
address 192.168.3.12
netmask 255.255.255.0
bond-mode active-backup
bond-miimon 10
auto eth0
iface eth0 inet manual
auto eth1
iface eth1 inet manual
3、使用ifenslave 工具,在rc.local中添加如下命令
exec ~/ifenslave bond0 eth0 eth1
㈥ 移动互联网 arm linux哪个好
1、对开发板配置静态IP:
将根文件系统/etc/network/interface文件中
auto eth0
iface eth0 inet dhcp
pre-up /bin/grep -v -e "ip=[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" /proc/cmdline > /dev/null
将eth0的DHCP配置修改为static ip方式:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
gateway 192.168.1.1
即可以静态方式IP启动。
2、复制文件系统网卡名eth0变化的解决方法:(同样适合虚拟机文件拷贝)
根文件系统每复制一次,网卡名字后缀就要加1,比如复制两次根文件系统eth0就会变成虚指eth2。其原因是Linux为防止网络内有相同的MAC地址而采用一种自动探测机制,同时也会改为网卡名字。其解决方法:
修改/etc/udev/rules.d/70-persisten-net.rules文件
#PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="……", ……, KERNEL=="eth*", NAME="雀喊eth0"
#PCI device 0x1022:0x2000 (vmxnet)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="……", ……, KERNEL=="eth*", NAME="eth1"
#PCI device 0x1022:0x2000 (vmxnet)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="……", ……, KERNEL=="eth*", NAME="eth2"
将SUBSYSTEM开头的所有3行都注释掉即可。
#PCI device 0x1022:0x2000 (pcnet32)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="……", ……, KERNEL=="eth*", NAME="eth0"
#PCI device 0x1022:0x2000 (vmxnet)
#SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="……", ……, KERNEL=="eth*", NAME="eth1"
#PCI device 0x1022:0x2000 (vmxnet)
#SUBSYSTEM=="net", ACTION=="add"顷誉野, DRIVERS=="?*", ATTR{address}=="……", ……, KERNEL=="eth*", NAME="eth2"
重新启动系统网卡名又会变成eth0了。
3、为根文件系统设置DNS服务器:
只需要在/etc/resolv.conf文件中加入一行(原来默认为空)
nameserver DNS服务器地址
举例:
nameserver 202.106.196.115
启动/重启/停止网络命令:
/net/init.d/networking start | restart | stop
重启网络即可从开发板通过telnet或浏览器上网了。
㈦ 遇到一个ARM板与PC机通信的问题,麻烦高手们看一下
你是ARM与pc直接连接吗?我没试过,之槐没姿前我都是用交换机连的,直接接好像不行(如果连铅绝上cp没有连接显示的话,一般ARM开发察缺板里面送的是直连线);ip地址要统一网段,子网掩码要一致;有时getway也要设置;你找个交换机或者路由器,应该就可以了
㈧ linux怎么修改ip
1、临时生效
#ifconfig eth0 192.168.10.10 255.255.255.0
2、永久生效。修改网卡的配置文件
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=static #静态分配
IPADDR=192.168.10.10 #如果没有就加上去,有就直接修改
3、重启network 服务生效
#service network restart
㈨ 在ArchLinux的arm版本上设置固定IP
2019-11-01 遇到的一点小问题
最近在 树莓派 上做东西,有几张SD卡需要来回切换。使用 ssh 经常遇到IP变掉的事。
系统是通过 Systemd-networkd 来进行IP管理的。
因为半年前做的功能是通过修橘段改 dhcpcd 的配置文件 /etc/dhcpcd.conf ,重启服务 systemctl restart dhcpcd ,重启网卡 ip link set eth0 down 和 ip link set eth0 up 来进行设备的动态IP和静态IP设置管理。
所以继续通过修改DHCP配置文件 /etc/dhcpcd.conf 来设置固定IP:
在文件后面添加上面内容,命令 systemctl start dhcpcd 启动dhcpcd服务就可以正困禅常设置静态IP了,需要动态IP只需圆尺誉要删掉添加的内容就行。
使用 ip addr 看会有两个IP,命令 systemctl disable systemd-networkd 和 systemctl enable dhcpcd 设定开机启动项。重启就可以了。