Răsfoiți Sursa

update: 更改Air8101 iperf demo所用网卡

tuoyiheng 3 luni în urmă
părinte
comite
94e52e08cb

+ 5 - 2
module/Air8101/demo/iperf/main.lua

@@ -11,6 +11,9 @@ iperf是一种网络性能测试工具,支持服务器模式和客户端模式
 本demo提供了两个独立的测试用例:
 1、iperf服务器模式 - 设备作为服务器等待客户端连接
 2、iperf客户端模式 - 设备作为客户端主动连接服务器
+3、netdrv_device:配置连接外网使用的网卡,目前支持以下两种选择(二选一)
+   (1) netdrv_eth_rmii:通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡
+   (2) netdrv_eth_spi:通过SPI外挂CH390H芯片的以太网卡
 
 更多说明参考本目录下的readme.md文件
 ]]
@@ -55,8 +58,8 @@ end
 --     log.info("mem.sys", rtos.meminfo("sys"))
 -- end, 3000)
 
--- 加载spi以太网卡驱动模块
-require "netdrv_eth_spi"
+-- 加载网络驱动设备功能模块
+require "netdrv_device"
 
 -- 加载 iperf 服务器测试模块
 require "iperf_server"

+ 77 - 0
module/Air8101/demo/iperf/netdrv/netdrv_eth_rmii.lua

@@ -0,0 +1,77 @@
+--[[
+@module  netdrv_eth_rmii
+@summary “通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡”驱动模块 
+@version 1.0
+@date    2025.07.24
+@author  马梦阳
+@usage
+本文件为“通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡”驱动模块 ,核心业务逻辑为:
+1、打开PHY芯片供电开关;
+2、初始化以太网卡,并且在以太网卡上开启DHCP(动态主机配置协议);
+3、以太网卡的连接状态发生变化时,在日志中进行打印;
+
+Air8101核心板和AirPHY_1000配件板的硬件接线方式为:
+Air8101核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关拨到OFF一端);
+如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的VIN管脚进行5V供电;
+| Air8101核心板 |  AirPHY_1000配件板  |
+| ------------ | ------------------ |
+|    59/3V3    |         3.3v       |
+|     gnd      |         gnd        |
+|     5/D2     |         RX1        |
+|    72/D1     |         RX0        |
+|    71/D3     |         CRS        |
+|     4/D0     |         MDIO       |
+|     6/D4     |         TX0        |
+|    74/PCK    |         MDC        |
+|    70/D5     |         TX1        |
+|     7/D6     |         TXEN       |
+|     不接     |          NC        |
+|    69/D7     |         CLK        |
+
+本文件没有对外接口,直接在其他功能模块中require "netdrv_eth_rmii"就可以加载运行;
+]]
+
+local function ip_ready_func(ip, adapter)
+    if adapter == socket.LWIP_ETH then
+        log.info("netdrv_eth_rmii.ip_ready_func", "IP_READY", socket.localIP(socket.LWIP_ETH))
+    end
+end
+
+local function ip_lose_func(adapter)
+    if adapter == socket.LWIP_ETH then
+        log.warn("netdrv_eth_rmii.ip_lose_func", "IP_LOSE")
+    end
+end
+
+
+-- 此处订阅"IP_READY"和"IP_LOSE"两种消息
+-- 在消息的处理函数中,仅仅打印了一些信息,便于实时观察“通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡”的连接状态
+-- 也可以根据自己的项目需求,在消息处理函数中增加自己的业务逻辑控制,例如可以在连网状态发生改变时更新网络图标
+sys.subscribe("IP_READY", ip_ready_func)
+sys.subscribe("IP_LOSE", ip_lose_func)
+
+
+-- 设置默认网卡为socket.LWIP_ETH
+socket.dft(socket.LWIP_ETH)
+
+
+-- 本demo测试使用的是核心板的VDD 3V3引脚对AirPHY_1000配件板进行供电
+-- VDD 3V3引脚是Air8101内部的LDO输出引脚,最大输出电流300mA
+-- GPIO13在Air8101内部使能控制这个LDO的输出
+-- 所以在此处GPIO13输出高电平打开这个LDO
+gpio.setup(13, 1, gpio.PULLUP)
+
+
+--初始化以太网卡
+
+--以太网联网成功(成功连接路由器,并且获取到了IP地址)后,内核固件会产生一个"IP_READY"消息
+--各个功能模块可以订阅"IP_READY"消息实时处理以太网联网成功的事件
+--也可以在任何时刻调用socket.adapter(socket.LWIP_ETH)来获取以太网是否连接成功
+
+--以太网断网后,内核固件会产生一个"IP_LOSE"消息
+--各个功能模块可以订阅"IP_LOSE"消息实时处理以太网断网的事件
+--也可以在任何时刻调用socket.adapter(socket.LWIP_ETH)来获取以太网是否连接成功
+netdrv.setup(socket.LWIP_ETH)
+
+--在以太网卡上开启动态主机配置协议
+netdrv.dhcp(socket.LWIP_ETH, true)

+ 0 - 0
module/Air8101/demo/iperf/netdrv_eth_spi.lua → module/Air8101/demo/iperf/netdrv/netdrv_eth_spi.lua


+ 25 - 0
module/Air8101/demo/iperf/netdrv_device.lua

@@ -0,0 +1,25 @@
+--[[
+@module  netdrv_device
+@summary 网络驱动设备功能模块
+@version 1.0
+@date    2025.07.24
+@author  马梦阳
+@usage
+本文件为网络驱动设备功能模块,核心业务逻辑为:根据项目需求,选择并且配置合适的网卡(网络适配器)
+1、netdrv_ethernet_rmii:socket.LWIP_ETH,通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡;
+2、netdrv_ethernet_spi:socket.LWIP_USER1,通过SPI外挂CH390H芯片的以太网卡;
+
+根据自己的项目需求,只需要require以上两种中的一种即可;
+
+
+本文件没有对外接口,直接在main.lua中require "netdrv_device"就可以加载运行;
+]]
+
+
+-- 根据自己的项目需求,只需要require以下两种中的一种即可;
+
+-- 加载“通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡”驱动模块
+require "netdrv_eth_rmii"
+
+-- 加载“通过SPI外挂CH390H芯片的以太网卡”驱动模块
+-- require "netdrv_eth_spi"

+ 33 - 14
module/Air8101/demo/iperf/readme.md

@@ -6,7 +6,11 @@
 
 3、iperf_client.lua:iperf客户端模块,引用网络初始化模块并连接到服务器进行测试;
 
-4、netdrv_eth_spi.lua:网络初始化模块,负责CH390网卡的初始化、SPI配置和DHCP获取;
+4、netdrv_device:配置连接外网使用的网卡,目前支持以下两种选择(二选一)
+
+   (1) netdrv_eth_rmii:通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡
+
+   (2) netdrv_eth_spi:通过SPI外挂CH390H芯片的以太网卡
 
 ## 演示功能概述
 
@@ -38,20 +42,35 @@
 
 - TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
 
-5、AirETH_1000配件板一块,Air8101核心板和AirETH_1000配件板的硬件接线方式为:
-
-Air8101核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关拨到OFF一端);
-如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的VIN管脚进行5V供电;
+5、AirETH_1000配件板一块,Air8101核心板和AirPHY_1000配件板的硬件接线方式为:
+
+| Air8101核心板 | AirPHY_1000配件板 |
+| ------------- | ----------------- |
+| 59/3V3        | 3.3v              |
+| gnd           | gnd               |
+| 5/D2          | RX1               |
+| 72/D1         | RX0               |
+| 71/D3         | CRS               |
+| 4/D0          | MDIO              |
+| 6/D4          | TX0               |
+| 74/PCK        | MDC               |
+| 70/D5         | TX1               |
+| 7/D6          | TXEN              |
+| 不接          | NC                |
+| 69/D7         | CLK               |
+
+6、可选AirETH_1000配件板一块,Air8101核心板和AirETH_1000配件板的硬件接线方式为:
+
+| Air8101核心板 | AirETH_1000配件板 |
+| ------------- | ----------------- |
+| 59/3V3        | 3.3v              |
+| gnd           | gnd               |
+| 28/DCLK       | SCK               |
+| 54/DISP       | CSS               |
+| 55/HSYN       | SDO               |
+| 57/DE         | SDI               |
+| 14/GPIO8      | INT               |
 
-| Air8101核心板    | AirETH_1000配件板  |
-| --------------- | ----------------- |
-| 59/3V3          | 3.3v              |
-| gnd             | gnd               |
-| 28/DCLK         | SCK               |
-| 54/DISP         | CSS               |
-| 55/HSYN         | SDO               |
-| 57/DE           | SDI               |
-| 14/GPIO8        | INT               |
 
 ## 演示软件环境