tag 标签: ethernet

相关博文
  • 热度 5
    2022-10-9 17:45
    1366 次阅读|
    0 个评论
    近年来,桌面计算机附带 Wi-Fi 与 Bluetooth® 功能的比例逐渐提高,其优点是不被 Ethernet(线材LAN) 连接限制摆放位置,并且可以随时与 Wi-Fi、蓝牙装置 进行联机,让桌面计算机的便利性提高。 在市场上,高阶定位的主板附带 Wi-Fi 与 Bluetooth 的网卡是非常常见的,虽然可以让使用者更便利,但在 ODM 的开发难度与成本则会提高,主流的桌面计算机开发厂商的 RD 背景为电子专长,而较大型的开发厂商会有专门的 RF 工程师团队进行射频相关设计与测试与整合,同时让 有线信号(LAN) 与 无线信号(Wi-Fi/Bluetooth) 的电路保持一定通讯质量。 各式桌面计算机,隐藏式天线或外接式天线 本篇文章主题探讨为ODM所设计的小型桌面计算机,如遇到吞吐量(Throughput)达不到规格时,ODM商可透过百佳泰与天线厂商三方进行讨论合作的案例。 从基本设计规格、天线设计、硬件电路布局、机构设计到驱动程序确认,多个方向同时下手一一排除问题 ,经验来看,过往发生状况通常都是多个小问题累积起来造成的,若只针对单一或两个问题排解处理,最终在Throughput测试时可能得不到明显改善,此篇文章也将以Wi-Fi通讯质量问题的实例进行分析与介绍。 一般RF Performance Debugging,遵照一定顺序进行确认,可减少找问题时的错误方向机率。百佳泰提供步骤参考如下: 01 进行 原始状态Throughput 测试数据(即 Baseline 数据),做为后续修改比较资料。 02 确认 基本软件、韧体与OS 相关是否正确,或存有已知问题作为判断,可参考以下范例。 ◈设备管理器不可出现 黄色惊叹号(Yellow Bang) ,惊叹号代表该装置的驱动程序安装不完全,处于非正常工作状态,可能发生以下情况: 网络适配器 :使用者无法确定状态是否正常,可能造成Throughput或联机等问题。 显示适配器 :因驱动装置不完整,可能造成显示适配器频率变动或者一直处于全功率状态,进而对Wi-Fi/Bluetooth频段造成干扰影响。 USB装置 :USB 3.x差分信号频率为2.5GHz,会对Wi-Fi/Bluetooth产生干扰,当未使用时,工作状态需确时关闭,避免影响Wi-Fi/Bluetooth性能。 03 确认 天线性能 是否符合需求,若未符合就需要进行微调,因为天线是最直接影响高频性能的零件,若天线的操作频率偏移, Throughput 数据与传输接收距离随即变差,故需要确认 VSWR、Isolation(隔离度) 性能参数,或者进一步确认天线场型 (Antenna Pattern) 。 04 确认 噪声(Noise)问题 ,所谓噪声即是通讯系统不需要的讯号都可称为噪声,噪声包含 非该传输系统的标准化讯号、热噪声、频率讯号 等,例如 Wi-Fi 与 Bluetooth 在同个频率下同时工作,两者互为对方的噪声,噪声会导致 Throughput 与传输接收距离变差,通常噪声透过两种路径来影响整个系统,分别为: 辐射性传导(Radiation)、接触性传导(Conductive) 。 ◈ 辐射噪声干扰(Radiation) ,可能造成的原因如下: 确认机构金属屏蔽密合度,是否因结构开孔与缝隙造成噪声泄漏而影响到天线。 确认产品内部那些零件噪声辐射强度较高,可进行屏蔽处理(e.g. 覆盖金属屏蔽、金属胶带)。 ◈ 接触性传导噪声干扰(conductive) ,可能造成的原因如下: 噪声透过电路板上的传输线、零组件传输至每个区块或空间。 以下为百佳泰按照顺序确认,一步一步将问题排除的案例分享 1.待测物原始状态Throughput测试数据(即Baseline数据): 下表为厂商Wi-Fi吞吐量(Throughput)规格,以及第一次原始机台Throughput测试。 以客户定义的规格与测试项目看,于 2.4GHz Band 标示 黄色底色 的RX是Fail的,标示 红字 的 Fail 数据在 20m 距离规格最多差了 42.3Mbps , 100m 距离规格最多差了 31.8Mbps 。 接下来先检查系统软件与驱动等,是否版本正确与安装确实。 2.软件、系统版本与驱动确认 经确认 Windows 版本正确,以及任务管理器列表,并没有 黄色惊叹号 ,代表各硬件装置的驱动程序没有问题,接下来确认 天线(Antenna) 部分。 3.天线(Antenna)确认 在硬件方面,需先确认产品天线的 VSWR 与 Isolation 状况,这两个天线性能的量测方式简单,可快速检视天线基础性能。 ➱ VSWR(电压驻波比) 可快速量测出天线搭配待测物机构的操作频率是否翩移,一般业界 VSWR 标准需 小于2,数值越接近1 ,可取得较好的天线特性。 ➱ Isolation(隔离度) Isolation特性量测皆发生于复数天线以上产品才需要量测,目的在于判断收发讯号时,天线间互相影响,造成整体 RF 特性下降,一般业界 Isolation 标准通常 约 -20~-30dB , 当值越小代表隔离度越好 。 可以使用 网络分析仪(Network Analyzer) 确认天线的 VSWR 与 Isolation 性能数据。 ➱VSWR Main 2.4GHz频带的2.5GHz频率VSWR 4.49 (红字标示) 比较差,再从曲线图中可得知天线操作频带往低频偏移了,这影响了2.4GHz频带的Throughput,但客户因物料管控问题于现阶段不能对天线结构进行调整,只能针对机壳做修改。所以我们接下来确认Isolation数据,确认是否能有所改善。 ➱Isolation Isolation于2.4GHz与2.5GHz频率分别为-11.23与-14.9Db (红字标示) ,一般业界标准为-20dB,而量测数值比一般业界标准偏差了将近10dB,故Isolation也需要进行改善。 主要影响Isolation特性的是:两天线的间隔距离以及极化两个因素 ,从产品外观可发现两天线都在前墙且距离仅3公分左右 (下图左) ,而两天线摆放已经有错开极化,故判断Isolation恶化可能是距离过近造成。为了验证此假设,透过两天线中间放置隔离材料 (下图左)) ,仿真提高两天线隔离度的实验。 使用网络分析仪(Network Analyzer,NA进行无隔离材料、隔离材料(铜箔与吸波材)的Isolation量测。发现加入隔离材料后2.4GHz Isolation从-12.23dB改善至-14dB、2.5GHz Isolation从-14.9dB改善至-16.5dB (下图右) 。 接下来进行Throughput验证比较,由下表可看出只要加入隔离材料Channel 1 20m 23.05Mbps改善至37.52 ~ 47.38Mbps,100m从6.5Mbps改善至11.24~18.32Mbps,改善Isolation确实可提高Throughput数据。 经过以上的Isolation优化与Throughput验证,证明两天线距离太近的假设是正确的 ,百佳泰与客户立即讨论更改天线位置,从前墙双天线改为前后墙各一个天线来改善Isolation问题,以下为天线新位置示意图与Throughput测试数据比较。 修改好天线一前一后的待测物,进行Throughput测试如下: 更改天线位置后,throughput数据明显改善, RX (黄色底色) Channel 1 20m从27.73改善至74.07得到Pass,其他Channel与距离也都得到提升。从以上的实验与天线设计变更,天线本体与布局设计的好坏,会直接影响Throughput测试结果。不好的天线设计会让终端使用者感受到并带来客诉机率与影响品牌市场口碑。 你们可能已经发现Throughput RX Channel 1 100m、Channel 11 20m与100m的数值仍是Fail,特别是高衰减100m的数值仅16.69~19.44Mbps,只有SPEC的一半不到,但TX的数值却非常好。这种现象通常都是 噪声干扰 造成,所以在 下集中 ,我们将进行 步骤4 RF Performance Debugging:噪声量测与除错 ,让制造商与设计者能更了解产品设计时RF所需要注意的地方。
  • 热度 14
    2021-6-25 15:58
    2057 次阅读|
    0 个评论
    B y Toradex 胡珊逢 Verdin iMX8M Plus 是 Toradex 采用 NXP 最新的 i.MX 8M Plus 处理器的计算机模块,其具有 4x Cortex-A53 和 Cortex-M7 核心,支持神经网络加速运算的 NPU , H .265 硬件编码, C AN FD ,以及双路千兆以太网。配合 Verdin 开发板,用户可以直接测试两路以太网。文章将对网络性能做简要的测试。 使用 Toradex Easy Installer 安装 Linux BSP v5.3.0 ,默认的配置已经支持两路千兆以太网。因此安装完成重启后即可看到两个网络接口。 ---------------------------------- root@verdin-imx8mp:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:14:2D:78:82:04 inet addr:192.168.20.120 Bcast:192.168.20.255 Mask:255.255.255.0 inet6 addr: fe80::214:2dff:fe78:8204/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5105505 errors:0 dropped:0 overruns:0 frame:0 TX packets:5988237 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:7344324802 (6.8 GiB) TX bytes:8611102924 (8.0 GiB) Interrupt:48 eth1 Link encap:Ethernet HWaddr 00:14:2D:68:82:04 inet addr:192.168.200.150 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::214:2dff:fe68:8204/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6686311 errors:0 dropped:0 overruns:0 frame:0 TX packets:247321 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6234153398 (5.8 GiB) TX bytes:8180651220 (7.6 GiB) ---------------------------------- Verdin 开发板分别和两台电脑相连,链路速度为 1000M bps 。 I P 地址设置如下。 P C1:192.168.200.1 P C2:192.168.20.132 E t h0: 192.168.200.150 E th1:192.168.20.120 测试场景为 l Eth0 和 Eth1 单独向 PC1 和 PC2 发送数据 l Eth0 和 Eth1 同时向 PC1 和 PC2 发送数据 l Eth0 和 Eth1 单独接收来自 PC1 和 PC2 的数据 l Eth0 和 Eth1 同时接收来自 PC1 和 PC2 的数据 l Eth 0 上的数据转发到 Eth 1 期间测试模块 Eth0 和 Eth1 的最大带宽以及 CPU 占用率。 Eth0 和 Eth1 单独向 PC1 和 PC2 发送数据 在 PC1 和 PC2 上运行 iperf3 服务器。 ---------------------------------- $ iperf3 -s ---------------------------------- 在 Verdin iMX8M Plus 运行 iperf 3 向 PC 发送数据。 Eth 0 和 Eth 1 的测试数据如下。 Eth 0: ---------------------------------- root@verdin-imx8mp:~# iperf3 -c 192.168.20.132 Connecting to host 192.168.20.132, port 5201 local 192.168.20.120 port 34982 connected to 192.168.20.132 port 5201 Interval Transfer Bitrate Retr Cwnd 0.00-1.00 sec 114 MBytes 957 Mbits/sec 0 373 KBytes 1.00-2.00 sec 112 MBytes 942 Mbits/sec 0 373 KBytes 2.00-3.00 sec 112 MBytes 937 Mbits/sec 0 410 KBytes 3.00-4.00 sec 112 MBytes 942 Mbits/sec 0 410 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate Retr 0.00-10.00 sec 1.10 GBytes 942 Mbits/sec 0 sender 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec receiver iperf Done. ---------------------------------- E th1: ---------------------------------- root@verdin-imx8mp:~# iperf3 -c 192.168.200.1 Connecting to host 192.168.200.1, port 5201 local 192.168.200.150 port 59206 connected to 192.168.200.1 port 5201 Interval Transfer Bitrate Retr Cwnd 0.00-1.00 sec 111 MBytes 934 Mbits/sec 0 1.14 MBytes 1.00-2.00 sec 112 MBytes 944 Mbits/sec 0 1.23 MBytes 2.00-3.00 sec 111 MBytes 933 Mbits/sec 0 1.23 MBytes 3.00-4.00 sec 112 MBytes 943 Mbits/sec 0 1.23 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate Retr 0.00-10.00 sec 1.09 GBytes 940 Mbits/sec 0 sender 0.00-10.00 sec 1.09 GBytes 937 Mbits/sec receiver iperf Done. ---------------------------------- Verdin iMX8M Plus CPU 占用率: Eth0 和 Eth1 同时向 PC1 和 PC2 发送数据 Eth 0 : ---------------------------------- root@verdin-imx8mp:~# iperf3 -c 192.168.20.132 Connecting to host 192.168.20.132, port 5201 local 192.168.20.120 port 34994 connected to 192.168.20.132 port 5201 Interval Transfer Bitrate Retr Cwnd 0.00-1.00 sec 113 MBytes 949 Mbits/sec 0 438 KBytes 1.00-2.00 sec 112 MBytes 937 Mbits/sec 0 464 KBytes 2.00-3.00 sec 112 MBytes 943 Mbits/sec 0 464 KBytes 3.00-4.00 sec 111 MBytes 935 Mbits/sec 0 464 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate Retr 0.00-10.00 sec 1.09 GBytes 940 Mbits/sec 0 sender 0.00-10.00 sec 1.09 GBytes 939 Mbits/sec receiver iperf Done. ---------------------------------- Eth 1 : ---------------------------------- root@verdin-imx8mp:~# iperf3 -c 192.168.200.1 Connecting to host 192.168.200.1, port 5201 local 192.168.200.150 port 59210 connected to 192.168.200.1 port 5201 Interval Transfer Bitrate Retr Cwnd 0.00-1.00 sec 111 MBytes 929 Mbits/sec 0 1.14 MBytes 1.00-2.00 sec 112 MBytes 944 Mbits/sec 0 1.14 MBytes 2.00-3.00 sec 111 MBytes 933 Mbits/sec 0 1.14 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate Retr 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec 0 sender 0.00-10.00 sec 1.09 GBytes 933 Mbits/sec receiver iperf Done. ---------------------------------- Verdin iMX8M Plus CPU 占用率: Eth0 和 Eth1 单独接收来自 PC1 和 PC2 的数据 在 Verdin iMX8M Plus 分别运行 iperf 3 服务器,针对 Eth 0 和 Eth 1 使用不同的端口。 ---------------------------------- root@verdin-imx8mp:~# iperf3 -B 192.168.20.120 -s root@verdin-imx8mp:~# iperf3 -B 192.168.200.150 -p 5202 -s ---------------------------------- Eth 0 : ---------------------------------- root@verdin-imx8mp:~# iperf3 -B 192.168.20.120 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 192.168.20.132, port 48674 local 192.168.20.120 port 5201 connected to 192.168.20.132 port 48676 Interval Transfer Bitrate 0.00-1.00 sec 111 MBytes 933 Mbits/sec 1.00-2.00 sec 111 MBytes 935 Mbits/sec 2.00-3.00 sec 111 MBytes 934 Mbits/sec 3.00-4.00 sec 111 MBytes 935 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec receiver ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- ---------------------------------- Eth 1 : ---------------------------------- root@verdin-imx8mp:~# iperf3 -B 192.168.200.150 -p 5202 -s ----------------------------------------------------------- Server listening on 5202 ----------------------------------------------------------- Accepted connection from 192.168.200.1, port 47290 local 192.168.200.150 port 5202 connected to 192.168.200.1 port 47292 Interval Transfer Bitrate 0.00-1.00 sec 110 MBytes 919 Mbits/sec 1.00-2.00 sec 112 MBytes 939 Mbits/sec 2.00-3.00 sec 112 MBytes 941 Mbits/sec 3.00-4.00 sec 112 MBytes 941 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate 0.00-10.00 sec 1.09 GBytes 938 Mbits/sec receiver ---------------------------------- Verdin iMX8M Plus CPU 占用率: Eth0 和 Eth1 同时接收来自 PC1 和 PC2 的数据 Eth 0 : ---------------------------------- root@verdin-imx8mp:~# iperf3 -B 192.168.20.120 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 192.168.20.132, port 48712 local 192.168.20.120 port 5201 connected to 192.168.20.132 port 48714 Interval Transfer Bitrate 0.00-1.00 sec 111 MBytes 931 Mbits/sec 1.00-2.00 sec 111 MBytes 934 Mbits/sec 2.00-3.00 sec 111 MBytes 934 Mbits/sec 3.00-4.00 sec 111 MBytes 935 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec receiver ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- ---------------------------------- Eth 1 : ---------------------------------- root@verdin-imx8mp:~# iperf3 -B 192.168.200.150 -p 5202 -s ----------------------------------------------------------- Server listening on 5202 ----------------------------------------------------------- Accepted connection from 192.168.200.1, port 47308 local 192.168.200.150 port 5202 connected to 192.168.200.1 port 47310 Interval Transfer Bitrate 0.00-1.00 sec 110 MBytes 919 Mbits/sec 1.00-2.00 sec 112 MBytes 941 Mbits/sec 2.00-3.00 sec 112 MBytes 941 Mbits/sec 3.00-4.00 sec 112 MBytes 941 Mbits/sec 4.00-5.00 sec 112 MBytes 941 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate 0.00-10.00 sec 1.08 GBytes 928 Mbits/sec receiver ----------------------------------------------------------- Server listening on 5202 ----------------------------------------------------------- ---------------------------------- Verdin iMX8M Plus CPU 占用率: Eth 0 上的数据转发到 Eth 1 为了将 Eth 0 的数据转发到 Eth 1 ,需要设置 /etc/sysctl.conf 。 ---------------------------------- # needed for routing, including masquerading or NAT net/ipv4/ip_forward=1 ---------------------------------- 然后运行 sysctl 另设置生效,当然重启系统也可以。 ---------------------------------- root@verdin-imx8mp:~# sysctl -p ---------------------------------- 设置转发规则。 ---------------------------------- root@verdin-imx8mp:~# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE root@verdin-imx8mp:~# iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT root@verdin-imx8mp:~# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT ---------------------------------- 在 PC2 上启动 iperf 3 服务器, P C 1 运行 iper 3 客户端发送数据,所有的数据由 Verdin iMX8M Plus 负责从 Eth 0 转发到 Eth 1 上。 P C2 Server: ---------------------------------- $ iperf3 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 192.168.20.120, port 55360 local 192.168.20.132 port 5201 connected to 192.168.20.120 port 55362 Interval Transfer Bitrate 0.00-1.00 sec 105 MBytes 881 Mbits/sec 1.00-2.00 sec 111 MBytes 928 Mbits/sec 2.00-3.00 sec 110 MBytes 921 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate 0.00-10.00 sec 1.08 GBytes 931 Mbits/sec receiver ---------------------------------- P C1 Client: ---------------------------------- $ iperf3 -c 192.168.20.132 Connecting to host 192.168.20.132, port 5201 local 192.168.200.1 port 55362 connected to 192.168.20.132 port 5201 Interval Transfer Bitrate Retr Cwnd 0.00-1.00 sec 108 MBytes 904 Mbits/sec 0 471 KBytes 1.00-2.00 sec 110 MBytes 926 Mbits/sec 0 492 KBytes 2.00-3.00 sec 109 MBytes 916 Mbits/sec 0 492 KBytes 3.00-4.00 sec 112 MBytes 938 Mbits/sec 0 492 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - Interval Transfer Bitrate Retr 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec 0 sender 0.00-10.00 sec 1.08 GBytes 931 Mbits/sec receiver ---------------------------------- Verdin iMX8M Plus CPU 占用率: 数据汇总如下。 两个千兆网口无论是在单独还是同时收发数据时都达到 920M bps 以上,包括网口之间的数据转发,基本接近满带宽。在 CPU 占用方面,当两个千兆网口以接近满带宽速率同时工作时,其中一个核心站占用率会超过 70% 。 总结 Verdin iMX8M Plus 的双网口设计为多网口需求的应用提供了理想的选择,例如在工业自动化中,一个网口运行实时性要求高的应用如 EtherCAT ,而另外一个则可以用于一般的网络通信。或者另一个网口可以用作冗余接口,或者连接两个不同的网络。 Verdin iMX8M Plus 还有许多其他实用的功能,我们会在后续的文章进行介绍
  • 热度 17
    2020-2-20 11:50
    1890 次阅读|
    0 个评论
    By Toradex 秦海 1). 简介 NXP iMX7 是 NXP 基于 Cortex-A7 和 Coretex-M4 异构多核架构的 ARM 处理器,其中 iMX7 Dual 型号 SoC 支持两路 MAC 控制器,可以通过外置百兆或者千兆 PHY 芯片扩展两路以太网接口,本文就基于 Toradex 基于 NXP iMX7 Dual SoC 的 ARM 核心板模块 Colibri iMX7D 示例扩展两路以太网。 2). 第一路以太网 a). Colibri iMX7D 模块已经通过模块上面部署的一个 Microchip KSZ8041NL 百兆 PHY 芯片默认支持了第一路百兆以太网 b). KSZ8041NL 的参考电路请参考 这里 (原理图示例的 SoC MAC 端来自 Toradex VF61 ARM 模块的定义,在 iMX7 或者其他平台上面不能直接引用,请只参考 PHY 一侧的连接) c). 由于选择的 iMX7D ENET1 MAC RMII 接口 50MHz 参考时钟输出引脚 GPIO1_IO12 和另外一个 M4 核心的 NMI 输入引脚冲突,因此最终在设计中,这一路的 KSZ8041PHY 使用了外部参考时钟,没有使用 iMX7 ENET1 的参考时钟输出 d). 基于上述配置的第一步以太网对应的 device tree 节点定义和 pinmux 定义请参考如下,内核基于 4.9.166 版本 --------------------------------------- # arch/arm/boot/dts/imx7-colibri.dtsi …… &fec1 { pinctrl-names = "default", "sleep"; pinctrl-0 = ; pinctrl-1 = ; clocks = , , , ; clock-names = "ipg", "ahb", "ptp", "enet_clk_ref"; assigned-clocks = , ; assigned-clock-parents = ; assigned-clock-rates = , ; phy-mode = "rmii"; phy-supply = ; fsl,magic-packet; }; … &iomuxc { … pinctrl_enet1: enet1grp { fsl,pins = < MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x73 MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x73 MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x73 MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER 0x73 MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x73 MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 0x73 MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 0x73 MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1 0x73 MX7D_PAD_SD2_CD_B__ENET1_MDIO 0x3 MX7D_PAD_SD2_WP__ENET1_MDC 0x3 ; }; pinctrl_enet1_sleep: enet1sleepgrp { fsl,pins = < MX7D_PAD_ENET1_RGMII_RX_CTL__GPIO7_IO4 0x0 MX7D_PAD_ENET1_RGMII_RD0__GPIO7_IO0 0x0 MX7D_PAD_ENET1_RGMII_RD1__GPIO7_IO1 0x0 MX7D_PAD_ENET1_RGMII_RXC__GPIO7_IO5 0x0 MX7D_PAD_ENET1_RGMII_TX_CTL__GPIO7_IO10 0x0 MX7D_PAD_ENET1_RGMII_TD0__GPIO7_IO6 0x0 MX7D_PAD_ENET1_RGMII_TD1__GPIO7_IO7 0x0 MX7D_PAD_GPIO1_IO12__GPIO1_IO12 0x0 MX7D_PAD_SD2_CD_B__GPIO5_IO9 0x0 MX7D_PAD_SD2_WP__GPIO5_IO10 0x0 ; }; --------------------------------------- 3). 第二路以太网 a). 第二路以太网通过模块预留的 RMII 或者 RGMII 接口连接百兆 PHY 或者千兆 PHY 来扩展, Colibri iMX7D RMII 或者 RGMII 接口管脚定义请参考 手册 5.4 章节。 b). 同样使用 KSZ8041NL 百兆 PHY 扩展的参考电路请参考 这里 (原理图示例的 SoC MAC 端来自 Toradex VF61 ARM 模块的定义,在 iMX7 或者其他平台上面不能直接引用,须按照上面手册定义连接),如需要连接千兆 PHY ,请参考所使用的千兆 PHY (如 Microchip KSZ9031RNL )手册进行连接 c). 通过 ENET2 RMII 接口连接 KSZ8041NL 百兆 PHY 的 device tree 配置参考如下 patch ,和上面第一路以太网不同,这次使用的 iMX7 SoC 内部的参考时钟输出给 PHY ,因此在 clock 项目配置会有不同 https://github.com/simonqin09/colibri_imx7_2nd_ethernet/blob/master/0001-imx7d-2nd-ethernet-support_update_20200218.patch // 对于 &fec2 节点中的 “fsl,mii-exclusive” 参数,因为 ENET1 和 ENET2 分别使用其对应的 MDIO 总线,而不是共享一个 MDIO 总线,在 4.9 kernel 下,如果不配置这个参数,驱动会默认都使用 ENET1 的 MDIO 去配置 ENET2 ,因此在这里是必须的。但在其他 i.MX 平台或者 mainline kernel 下则不一定需要。 // MX7D_PAD_EPDC_BDR0__CCM_ENET_REF_CLK2 配置为 0x40000073 ,因为使用 iMX7 SoC 内部参考时钟,这个时钟要同时给 PHY 和 MAC 提供参考时钟,因此 Input 和 Output 都要配置使能,因此需要为 0x40000073 ,关于 pinctrl 的更多说明请参考 这里 。 d). 通过 RGMII 连接千兆 PHY 的 device tree 配置请参考 这里 4). 总结 本文基于 iMX7 示例了双路以太网的设计和配置思路,同时对于其他支持双路 MAC 的 NXP i.MX ARM 处理器(如 iMX8 )的配置思路也都是一致的,只是具体的 clock 和 pinmux 定义等要做对应的适配
  • 热度 2
    2020-1-6 12:11
    4192 次阅读|
    1 个评论
    By Toradex 秦海 1). 简介 NXP iMX8 已经正式发布,相较于之前 NXP i.MX 系列的主力产品 iMX6 ,其性能有了大幅提升,本文就针对网络接口对 NXP iMX8 和 iMX6 两款 ARM 处理器进行对比测试。 本文演示所使用的 ARM 平台来自 Toradex 基于 NXP iMX8 SoC 的 Apalis iMX8 ARM 核心板和基于 NXP iMX6Q SoC 的 Apalis iMX6 ARM 核心板。 2). 准备 a). Apalis iMX8QM ARM 核心版配合 Apalis Evaluation Board 载板 , Apalis iMX8QM 安装 Toradex V3.0b2 Linux demo image ,同时连接调试串口 UART1 (载板 X29 )到开发主机方便调试。更多关于 Apalis iMX8 配合 Apalis Evaluation Board 载板的说明请参考 Datasheet 和 开发上手指南 。 b). Apalis iMX6Q ARM 核心版配合 Apalis Evaluation Board 载板 , Apalis iMX6Q 安装 Toradex V2.8 Linux demo image ,同时连接调试串口 UART1 (载板 X29 )到开发主机方便调试。更多关于 Apalis iMX6 配合 Apalis Evaluation Board 载板的说明请参考 Datasheet 和 开发上手指南 。 c). Ubuntu linux PC 主机, 用于分别和 Apalis iMX8 、 Apalis iMX6 进行收发测试。 d). 测试工具软件使用 iperf3 工具, Toradex Linux demo image 里面已经默认集成, Ubuntu 系统(这里以 18.04 为例)要通过 apt 命令来安装 iperf3 ---------------------- $ sudo apt update $ sudo apt install iperf3 ---------------------- e). 网络连接拓扑为 Apalis iMX8QM 、 Apalis iMX6Q 以及 Ubuntu PC 都通过千兆有线网络连接到同一个局域网。 3). TCP 网络传输性能测试对比 a). Apalis iMX6Q/Apalis iMX8QM 作为 Server 端接收, Ubuntu PC 作为 Client 端发送测试 ./ Apalis iMX6Q/Apalis iMX8QM Server 端运行下面命令 ---------------------- $ iperf3 -s ---------------------- ./ Apalis iMX6Q ---------------------- $ iperf3 -c -t 60 -i 10 -w 300K … Interval Transfer Bandwidth Retr 0.00-60.00 sec 4.01 GBytes 574 Mbits/sec 1 sender 0.00-60.00 sec 4.01 GBytes 574 Mbits/sec receiver ---------------------- ./ Apalis iMX8QM ---------------------- $ iperf3 -c -t 60 -i 10 … Interval Transfer Bandwidth Retr 0.00-60.00 sec 6.52 GBytes 934 Mbits/sec 0 sender 0.00-60.00 sec 6.52 GBytes 934 Mbits/sec receiver ---------------------- b). Apalis iMX6Q/Apalis iMX8QM 作为 Client 端发送, Ubuntu PC 作为 Sever 端接收测试 ./ Ubuntu PC server 端运行下面命令 ---------------------- $ iperf3 -s ---------------------- ./ Apalis iMX6Q Client 端连接测试 ---------------------- root@apalis-imx6:~# iperf3 -c -t 60 -i 10 … Interval Transfer Bitrate Retr 0.00-60.00 sec 2.84 GBytes 406 Mbits/sec 0 sender 0.00-60.00 sec 2.84 GBytes 406 Mbits/sec receiver ---------------------- ./ Apalis iMX8QM Client 端连接测试 ---------------------- root@apalis-imx8:~# iperf3 -c -t 60 -i 10 … Interval Transfer Bitrate Retr 0.00-60.00 sec 6.39 GBytes 915 Mbits/sec 0 sender 0.00-60.00 sec 6.39 GBytes 915 Mbits/sec receiver ---------------------- c). 测试结果汇总 项目 TCP 发送测试 TCP 接收测试 Apalis iMX6Q 406 Mb/s 574 Mb/s Apalis iMX8QM 915 Mb/s 934 Mb/s 4). UDP 网络传输性能测试对比 a). Apalis iMX6Q/Apalis iMX8QM 作为 Server 端接收, Ubuntu PC 作为 Client 端发送测试 ./ Apalis iMX6Q/Apalis iMX8QM Server 端运行下面命令 ---------------------- $ iperf3 -s ---------------------- ./ Apalis iMX6Q ---------------------- /* 100M 带宽测试 */ $ iperf3 -c -u -b 100M -t 60 -i 10 … Interval Transfer Bandwidth Jitter Lost/Total Datagrams 0.00-60.00 sec 714 MBytes 99.9 Mbits/sec 0.110 ms 0/91424 (0%) /* 400M 带宽测试 */ $ iperf3 -c -u -b 400M -t 60 -i 10 … Interval Transfer Bandwidth Jitter Lost/Total Datagrams 0.00-60.00 sec 2.79 GBytes 400 Mbits/sec 0.098 ms 4374/365993 (1.2%) /* 1000M 带宽测试 */ $ iperf3 -c -u -b 1000M -t 60 -i 10 … Interval Transfer Bandwidth Jitter Lost/Total Datagrams 0.00-60.00 sec 2.98 GBytes 426 Mbits/sec 0.167 ms 2304/390206 (0.59%) ---------------------- ./ Apalis iMX8QM ---------------------- /* 100M 带宽测试 */ $ iperf3 -c -u -b 100M -t 60 -i 10 … Interval Transfer Bandwidth Jitter Lost/Total Datagrams 0.00-60.00 sec 714 MBytes 99.9 Mbits/sec 0.078 ms 84/91416 (0.092%) /* 400M 带宽测试 */ $ iperf3 -c -u -b 400M -t 60 -i 10 … Interval Transfer Bandwidth Jitter Lost/Total Datagrams 0.00-60.00 sec 2.79 GBytes 400 Mbits/sec 0.092 ms 121/366076 (0.033%) /* 1000M 带宽测试 */ $ iperf3 -c -u -b 1000M -t 60 -i 10 … Interval Transfer Bandwidth Jitter Lost/Total Datagrams 0.00-60.00 sec 6.63 GBytes 949 Mbits/sec 0.064 ms 284/868752 (0.033%) ---------------------- b). Apalis iMX6Q/Apalis iMX8QM 作为 Client 端发送, Ubuntu PC 作为 Sever 端接收测试 ./ Ubuntu PC server 端运行下面命令 ---------------------- $ iperf3 -s ---------------------- ./ Apalis iMX6Q Client 端连接测试 ---------------------- /* 100M 带宽测试 */ root@apalis-imx6:~# iperf3 -c -u -b 100M -t 60 -i 10 … Interval Transfer Bitrate Jitter Lost/Total Datagrams 0.00-60.00 sec 715 MBytes 100 Mbits/sec 0.000 ms 0/517952 (0%) sender 0.00-60.00 sec 715 MBytes 100 Mbits/sec 0.005 ms 0/517952 (0%) receiver /* 400M 带宽测试 */ root@apalis-imx6:~# iperf3 -c -u -b 400M -t 60 -i 10 … Interval Transfer Bitrate Jitter Lost/Total Datagrams 0.00-60.00 sec 1.91 GBytes 273 Mbits/sec 0.000 ms 0/1413705 (0%) sender 0.00-60.00 sec 1.91 GBytes 273 Mbits/sec 0.021 ms 0/1413705 (0%) receiver /* 1000M 带宽测试 */ root@apalis-imx6:~# iperf3 -c -u -b 1000M -t 60 -i 10 … Interval Transfer Bitrate Jitter Lost/Total Datagrams 0.00-60.00 sec 1.92 GBytes 274 Mbits/sec 0.000 ms 0/1421514 (0%) sender 0.00-60.00 sec 1.92 GBytes 274 Mbits/sec 0.057 ms 0/1421509 (0%) receiver ---------------------- ./ Apalis iMX8QM Client 端连接测试 ---------------------- /* 100M 带宽测试 */ root@apalis-imx8:~# iperf3 -c -u -b 100M -t 60 -i 10 … Interval Transfer Bitrate Jitter Lost/Total Datagrams 0.00-60.00 sec 715 MBytes 100 Mbits/sec 0.000 ms 0/517950 (0%) sender 0.00-60.00 sec 715 MBytes 100 Mbits/sec 0.035 ms 0/517950 (0%) receiver /* 400M 带宽测试 */ root@apalis-imx8:~# iperf3 -c 10.20.1.126 -u -b 400M -t 60 -i 10 … Interval Transfer Bitrate Jitter Lost/Total Datagrams 0.00-60.00 sec 2.79 GBytes 400 Mbits/sec 0.000 ms 0/2071798 (0%) sender 0.00-60.00 sec 2.79 GBytes 400 Mbits/sec 0.026 ms 68/2071798 (0.0033%) receiver /* 1000M 带宽测试 */ root@apalis-imx8:~# iperf3 -c 10.20.1.126 -u -b 1000M -t 60 -i 10 … Interval Transfer Bitrate Jitter Lost/Total Datagrams 0.00-60.00 sec 4.71 GBytes 674 Mbits/sec 0.000 ms 0/3489592 (0%) sender 0.00-60.00 sec 4.71 GBytes 674 Mbits/sec 0.030 ms 103/3489586 (0.003%) receiver ---------------------- c). 测试结果汇总 UDP 发送测试 UDP 接收测试 100M 带宽 400M 带宽 1000M 带宽 100M 带宽 400M 带宽 1000M 带宽 Apalis iMX6Q 100 Mb/s 273 Mb/s 274 Mb/s 99.9 Mb/s 400 Mb/s * 426 Mb/s * Apalis iMX8QM 100 Mb/s 400 Mb/s 674 Mb/s 99.9 Mb/s 400 Mb/s 949 Mb/s * 注意此时丢包率已经到 1% 左右 5). 总结 本文对比测试了 NXP iMX6 和 NXP iMX8 处理器的网络性能,对于 iMX6 ,由于这个 Eratta 的限制, 400Mb/s 左右的性能也就把符合文档的描述, iMX8 则在大多数情况下能够接近千兆带宽。
  • 热度 24
    2015-8-31 16:42
    1507 次阅读|
    3 个评论
    Arduino实现 仪器放大仪对压力感应器读取数据 ,这样的理论能用来做什么呢?当然可以让你隔着房间就获知 DoES Liverpool 咖啡壶中装了多少咖啡!一个 “咖啡壶” 就可以做到! 关于咖啡机器的内容已经在网络上有先例了;第一个网络摄像机的灵感是,1991至2001年间在剑桥大学电脑实验室安装了Trojan房间咖啡监控器。所以利用DoES Liverpool,通过咖啡机器,壶和水的重量测量,我们可以进行咖啡容量的在线记录。 在厨房的咖啡机下面放置了浴室磅秤,并将其与Arduino Ethernet连接来测重,计算机器上咖啡杯数量,并将其数据传送至Xively。所有磅秤的测量电子器件都可以忽略,通过INA125仪器放大仪,Arduino读取磅秤每个角的压力传感器阻值变化,来测量咖啡机里面的水量。关于连接仪器放大仪和Arduino的细节,已经在 GitHub中的ArduinoInstAmp库 中列出, 我之前有写过 。   来自DoES Liverpool 咖啡壶的即时动态(刷新页面进行更新) 用于咖啡壶的电路和我之前描述过的INA125的压力传感器读取相同。唯一增加的是一个常见的接地按钮,连接到引脚2上,把LED与电阻(一头连的引脚5)的正极相连。代码在 github.com/DoESLiverpool/CoffeeBot/ 上。                               用于咖啡壶背面与Arduino的连接         在磅秤里面的远程压力传感器需要一个连接器                              压力传感器的惠斯通电桥布置                       INA125P的仪器放大器连接 一个普通的接地按钮输出 为了使得到的信息不在电脑前也可以利用起来,磅秤的远程监控器会将最新的杯子数量上传到Xively,并将结果显示在DoES主空间的刻度盘上。如果能通过网络连接获取到咖啡量,信息的可用性就没有了,因为你离机器太远了。使用咖啡壶的优先条件是,你看不到它,但还是在同一座楼里(为了保证是内网)。 机器中咖啡量的采集是一个很有趣的事,在起床之前就可以知道是不是有咖啡可以喝,数据被采集后就可以有更多实际应用了。每天消耗的咖啡杯平均数,可能在你下午做咖啡的时候就会给你指导,就知道最后一壶做多少杯了。跟踪杯子数量意味着你需要买多少咖啡豆,这样就可以让他们保持新鲜了。 DoES咖啡使用的最新及历史信息都会在  xively.com/feeds/106284  显示出来,用于咖啡壶运转的Arduino的全部代码及监控器信息都会在  github.com/DoESLiverpool/CoffeeBot 上提供。 文章来源:http://www.deferredprocrastination.co.uk/blog/2013/coffeebot-monitoring-with-arduino/ 感谢阅读!
相关资源