Browse Source

update:1、修改Air8000和Air8101下的socket/long_connection的demo注释和readme文件; 2、Air8101下的socket/long_connection的demo支持netdrv_4g功能模块,初步验证功能正常,后续内核固件还要完善一些功能,到时候再同步修改demo

zhutianhua 7 months ago
parent
commit
35cceacbbe

+ 1 - 1
module/Air8000/demo/socket/client/long_connection/netdrv/netdrv_eth_spi.lua

@@ -2,7 +2,7 @@
 @module  netdrv_eth_spi
 @summary “通过SPI外挂CH390H芯片的以太网卡”驱动模块 
 @version 1.0
-@date    2025.07.024
+@date    2025.07.24
 @author  朱天华
 @usage
 本文件为“通过SPI外挂CH390H芯片的以太网卡”驱动模块 ,核心业务逻辑为:

+ 113 - 0
module/Air8101/demo/socket/client/long_connection/netdrv/netdrv_4g.lua

@@ -0,0 +1,113 @@
+--[[
+@module  netdrv_4g
+@summary “通过SPI接口外挂4G模组(Air780EHM/Air780EHV/Air780EGH/Air780EPM)的4G网卡”驱动模块 
+@version 1.0
+@date    2025.07.27
+@author  朱天华
+@usage
+本文件为 “通过SPI接口外挂4G模组(Air780EHM/Air780EHV/Air780EGH/Air780EPM)的4G网卡”驱动模块,核心业务逻辑为:
+1、初始化和外部4G网卡的配置(初始化AirLINK、配置桥接网络、配置SPI、静态配置IP地址/子网掩码/网关);
+2、4G网卡的连接状态发生变化时,在日志中进行打印;
+
+
+硬件环境使用以下两种环境中的一种即可:
+1、Air8101核心板+Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板
+2、Air8101核心板+Air780EHM/Air780EHV/Air780EGH/Air780EPM开发板
+
+一、当使用第1种硬件环境时,Air8101核心板和Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板的硬件接线方式为:
+
+1、Air8101核心板:
+- 核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关拨到OFF一端);
+- 如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的VIN管脚进行5V供电;
+
+2、Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板:
+- 核心板通过TYPE-C USB口供电(TYPE-C USB口旁边的ON/OFF拨动开关拨到ON一端);
+- 如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的5V管脚进行5V供电;
+
+3、
+| Air8101核心板 | Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板  |
+| ------------ | ---------------------------------------------- |
+|     gnd      |                     GND                        |
+|  54/DISP     |                     83/SPI0CS                  |
+|  55/HSYN     |                     84/SPI0MISO                |
+|    57/DE     |                     85/SPI0MOSI                |
+|  28/DCLK     |                     86/SPI0CLK                 |
+|    43/R2     |                     19/GPIO22                  |
+|  75/GPIO28   |                     22/GPIO1                   |
+
+二、当使用第2种硬件环境时,Air8101核心板和Air780EHM/Air780EHV/Air780EGH/Air780EPM开发板的硬件接线方式为:
+
+1、Air8101核心板:
+- 核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关拨到OFF一端);
+- 如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的VIN管脚进行5V供电;
+
+2、Air780EHM/Air780EHV/Air780EGH/Air780EPM开发板:
+- 核心板通过TYPE-C USB口供电(外部供电/USB供电拨动开关拨到USB供电一端);
+- 如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对开发板的4V管脚进行4V供电;
+
+3、
+| Air8101核心板 | Air780EHM/Air780EHV/Air780EGH/Air780EPM开发板  |
+| ------------ | ---------------------------------------------- |
+|     gnd      |                     GND                        |
+|  54/DISP     |                     SPI_CS                     |
+|  55/HSYN     |                     SPI_MISO                   |
+|    57/DE     |                     SPI_MOSI                   |
+|  28/DCLK     |                     SPI_CLK                    |
+|    43/R2     |                     GPIO22                     |
+|  75/GPIO28   |                     GPIO1                      |
+
+三、以上两种硬件环境,Air8101使用的SPI0默认的一组引脚,也可以使用SPI1;使用SPI1时,硬件连接说明的更多资料参考:
+https://docs.openluat.com/air8101/luatos/hardware/design/4gnet/
+软件代码需要做以下配置:
+airlink.config(airlink.CONF_SPI_ID, 1)
+airlink.config(airlink.CONF_SPI_CS, 10)
+
+四、测试本功能模块时,Air780EHM/Air780EHV/Air780EGH/Air780EPM需要烧录以下软件:
+1、最新版本的内核固件
+2、脚本:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8101/demo/multi_network/WIFI_4G_ETH/Air8101_Air780EPM/Air780EPM_master
+
+本文件没有对外接口,直接在其他功能模块中require "netdrv_4g"就可以加载运行;
+]]
+
+local function ip_ready_func()
+    log.info("netdrv_4g.ip_ready_func", "IP_READY", socket.localIP(socket.LWIP_USER0))
+end
+
+local function ip_lose_func()
+    log.warn("netdrv_4g.ip_lose_func", "IP_LOSE")
+end
+
+
+
+--此处订阅"IP_READY"和"IP_LOSE"两种消息
+--在消息的处理函数中,仅仅打印了一些信息,便于实时观察“通过SPI接口外挂4G模组(Air780EHM/Air780EHV/Air780EGH/Air780EPM)的4G网卡”的连接状态
+--也可以根据自己的项目需求,在消息处理函数中增加自己的业务逻辑控制,例如可以在连网状态发生改变时更新网络图标
+sys.subscribe("IP_READY", ip_ready_func)
+sys.subscribe("IP_LOSE", ip_lose_func)
+
+
+
+
+-- 初始化airlink,Air8101和4G网卡之间,在spi之上,基于airlink协议通信
+airlink.init()
+-- 创建桥接网络设备
+-- 此处第一个参数必须是socket.LWIP_USER0,是因为Air780EHM/Air780EHV/Air780EGH/Air780EPM使用的也是socket.LWIP_USER0,双方是点对点通讯的对等网络
+-- 此处第二个参数必须是netdrv.WHALE,表示虚拟网卡的实现方式
+netdrv.setup(socket.LWIP_USER0, netdrv.WHALE)
+-- 启动airlink,配置Air8101作为SPI从机模式。
+airlink.start(airlink.MODE_SPI_SLAVE)
+
+-- 静态配置IPv4地址
+-- 本地ip地址为"192.168.111.1",网关ip地址为"192.168.111.2",子网掩码为"255.255.255.0"
+-- 此处设置的本地ip地址要和Air780EHM/Air780EHV/Air780EGH/Air780EPM中设置的网关ip地址完全一样
+-- 此处设置的网关ip地址要和Air780EHM/Air780EHV/Air780EGH/Air780EPM中设置的本地ip地址完全一样
+-- 此处设置的子网掩码要和Air780EHM/Air780EHV/Air780EGH/Air780EPM中设置的子网掩码完全一样
+netdrv.ipv4(socket.LWIP_USER0, "192.168.111.1", "255.255.255.0", "192.168.111.2")
+
+--4G联网成功后,内核固件会产生一个"IP_READY"消息
+--各个功能模块可以订阅"IP_READY"消息实时处理4G联网成功的事件
+--也可以在任何时刻调用socket.adapter(socket.LWIP_USER0)来获取4G网络是否连接成功
+
+--4G断网后,内核固件会产生一个"IP_LOSE"消息
+--各个功能模块可以订阅"IP_LOSE"消息实时处理4G网络断网的事件
+--也可以在任何时刻调用socket.adapter(socket.LWIP_USER0)来获取4G网络是否连接成功

+ 1 - 1
module/Air8101/demo/socket/client/long_connection/netdrv/netdrv_eth_rmii.lua

@@ -2,7 +2,7 @@
 @module  netdrv_eth_rmii
 @summary “通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡”驱动模块 
 @version 1.0
-@date    2025.07.024
+@date    2025.07.24
 @author  朱天华
 @usage
 本文件为“通过MAC层的rmii接口外挂PHY芯片(LAN8720Ai)的以太网卡”驱动模块 ,核心业务逻辑为:

+ 1 - 1
module/Air8101/demo/socket/client/long_connection/netdrv/netdrv_eth_spi.lua

@@ -2,7 +2,7 @@
 @module  netdrv_eth_spi
 @summary “通过SPI外挂CH390H芯片的以太网卡”驱动模块 
 @version 1.0
-@date    2025.07.024
+@date    2025.07.24
 @author  朱天华
 @usage
 本文件为“通过SPI外挂CH390H芯片的以太网卡”驱动模块 ,核心业务逻辑为:

+ 24 - 19
module/Air8101/demo/socket/client/long_connection/netdrv/netdrv_multiple.lua

@@ -29,7 +29,7 @@ Air8101核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关
 |    69/D7     |         CLK        |
 
 
-通过SPI外挂CH390H芯片的以太网卡:
+通过SPI外挂CH390H芯片的以太网卡(此网卡和4G网卡硬件连接有冲突,如果使用以太网,可以优先使用rmii接口的以太网卡,如果必须使用spi以太网卡,注意更换以太网或者4G网卡使用的spi,不要冲突)
 Air8101核心板和AirETH_1000配件板的硬件接线方式为:
 Air8101核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关拨到OFF一端);
 如果测试发现软件重启,并且日志中出现  poweron reason 0,表示供电不足,此时再通过直流稳压电源对核心板的VIN管脚进行5V供电;
@@ -44,6 +44,11 @@ Air8101核心板通过TYPE-C USB口供电(核心板背面的功耗测试开关
 | 14/GPIO8        | INT               |
 
 
+通过SPI接口外挂4G模组(Air780EHM/Air780EHV/Air780EGH/Air780EPM)的4G网卡:
+Air8101核心板和Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板或者开发板的硬件接线方式,参考netdrv_4g.lua的文件头注释;
+
+
+
 本文件没有对外接口,直接在其他功能模块中require "netdrv_multiple"就可以加载运行;
 ]]
 
@@ -91,24 +96,24 @@ local function netdrv_multiple_task_func()
             },
 
             -- “通过SPI外挂CH390H芯片”的以太网卡,可以使用Air8101核心板+AirETH_1000配件板验证
-            {
-                ETHUSER1 = {
-                    -- 供电使能GPIO,此demo使用的59脚3V3供电,受GPIO13控制
-                    pwrpin = 13,
-                    -- 设置的多个“已经IP READY,但是还没有ping通”网卡,循环执行ping动作的间隔(单位毫秒,可选)
-                    -- 如果没有传入此参数,libnetif会使用默认值10秒
-                    ping_time = 3000, 
-
-                    -- 连通性检测ip(选填参数);
-                    -- 如果没有传入ip地址,libnetif中会默认使用httpdns能否成功获取baidu.com的ip作为是否连通的判断条件;
-                    -- 如果传入,一定要传入可靠的并且可以ping通的ip地址;
-                    -- ping_ip = "填入可靠的并且可以ping通的ip地址",
-
-                    -- 网卡芯片型号(选填参数),仅spi方式外挂以太网时需要填写。
-                    tp = netdrv.CH390, 
-                    opts = {spi=0, cs=15}
-                }
-            },
+            -- {
+            --     ETHUSER1 = {
+            --         -- 供电使能GPIO,此demo使用的59脚3V3供电,受GPIO13控制
+            --         pwrpin = 13,
+            --         -- 设置的多个“已经IP READY,但是还没有ping通”网卡,循环执行ping动作的间隔(单位毫秒,可选)
+            --         -- 如果没有传入此参数,libnetif会使用默认值10秒
+            --         ping_time = 3000, 
+
+            --         -- 连通性检测ip(选填参数);
+            --         -- 如果没有传入ip地址,libnetif中会默认使用httpdns能否成功获取baidu.com的ip作为是否连通的判断条件;
+            --         -- 如果传入,一定要传入可靠的并且可以ping通的ip地址;
+            --         -- ping_ip = "填入可靠的并且可以ping通的ip地址",
+
+            --         -- 网卡芯片型号(选填参数),仅spi方式外挂以太网时需要填写。
+            --         tp = netdrv.CH390, 
+            --         opts = {spi=0, cs=15}
+            --     }
+            -- },
 
             -- WIFI STA网卡
             {

+ 25 - 1
module/Air8101/demo/socket/client/long_connection/readme.md

@@ -74,7 +74,6 @@
 
 
 
-
 ## 演示硬件环境
 
 ![](https://docs.openluat.com/air8101/luatos/app/image/netdrv_multi.jpg)
@@ -124,6 +123,30 @@
 | 57/DE           | SDI               |
 | 14/GPIO8        | INT               |
 
+7、可选Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板或者开发板一块,Air8101核心板和Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板或者开发板的硬件接线方式为:
+
+| Air8101核心板 | Air780EHM/Air780EHV/Air780EGH/Air780EPM核心板  |
+| ------------ | ---------------------------------------------- |
+|     gnd      |                     GND                        |
+|  54/DISP     |                     83/SPI0CS                  |
+|  55/HSYN     |                     84/SPI0MISO                |
+|    57/DE     |                     85/SPI0MOSI                |
+|  28/DCLK     |                     86/SPI0CLK                 |
+|    43/R2     |                     19/GPIO22                  |
+|  75/GPIO28   |                     22/GPIO1                   |
+
+
+| Air8101核心板 | Air780EHM/Air780EHV/Air780EGH/Air780EPM开发板  |
+| ------------ | ---------------------------------------------- |
+|     gnd      |                     GND                        |
+|  54/DISP     |                     SPI_CS                     |
+|  55/HSYN     |                     SPI_MISO                   |
+|    57/DE     |                     SPI_MOSI                   |
+|  28/DCLK     |                     SPI_CLK                    |
+|    43/R2     |                     GPIO22                     |
+|  75/GPIO28   |                     GPIO1                      |
+
+
 
 ## 演示软件环境
 
@@ -136,6 +159,7 @@
 4、PC端浏览器访问[合宙TCP/UDP web测试工具](https://netlab.luatos.com/);
 
 
+
 ## 演示核心步骤
 
 1、搭建好硬件环境