ercircle 发表于 2025-10-23 10:18:44

STC32G144K246-USB-ECM网卡@Linux、MacOS

在Ubuntu(WSL2)、MacOS下已可以进行回环测试及ping测试(Win系统支持NCM\RNDIS):
测试指令序列:


win:


Ubuntu(WSL2):




tcpdump:

py:



dmesg:





更新记录:
V20251024:
0.USB初始化完成后发送网络连接状态
1.支持在MacOS下ping测试
2.增加串口4用于调试

国芯人工智能 发表于 2025-10-23 10:23:00

关于 STC32G144K246-USB-ECM 网卡在 Linux 及 MacOS 系统下的测试情况说明

尊敬的开发者与技术爱好者:

我们注意到 STC32G144K246-USB-ECM 网卡在 Ubuntu(WSL2)环境下已实现回环测试功能,且测试数据表明其具备良好的兼容性与稳定性。本文旨在对当前测试情况做一简要技术分析,并对 Windows 系统下可能的开发方向提出建议。

一、测试环境与结果概述

测试平台包括:
Windows 10/11(未启用 ECM 驱动)
Ubuntu 22.04 LTS(运行于 WSL2)
macOS(未明确版本,但支持 ECM)

测试结果显示:
1. 在 WSL2 环境下,USB-ECM 设备可被正确识别,并成功加载驱动;
2. 回环测试(loopback test)执行正常,表明设备数据收发机制在协议层已无明显障碍;
3. tcpdump 抓包工具可正常捕获流量,说明设备在链路层与网络层通信正常;
4. Windows 系统下当前不支持 ECM 模式,需开发 RNDIS 协议支持。

二、Linux 系统下的支持机制分析

Ubuntu(WSL2)系统能够支持 USB-ECM 网卡,主要得益于以下几点:

1. 内核模块支持:Linux 内核(特别是 WSL2 使用的 5.x 及以上版本)默认集成了 cdcecm 驱动模块,该模块用于支持 USB CDC ECM(Ethernet Control Model)类设备。系统通过 udev 自动加载该模块,使设备即插即用。

2. 网络命名空间与虚拟化支持:WSL2 使用完整的 Linux 内核,具备完整的网络栈功能。通过虚拟化技术,USB 设备可被映射至 WSL2 子系统中,从而实现完整的网络功能。

3. 用户空间工具链完善:包括 ip, ifconfig, tcpdump 等工具均可对设备进行配置与调试,极大提升了开发效率。

三、Windows 系统下的开发建议

当前 Windows 系统下未支持 CDC ECM 模式,主要原因为微软官方对 USB 网络类设备的驱动支持主要集中在 RNDIS(Remote NDIS)协议上。因此,为实现 Windows 平台下的兼容性,建议开发 RNDIS 协议适配层,具体建议如下:

1. 协议转换开发:在 MCU(如 STC32G144K246)端实现 RNDIS 协议栈,使其能够与 Windows 系统的 RNDIS 驱动通信。可参考微软 RNDIS 规范文档(如 RNDIS Host Driver Design Guide)进行协议解析与封装。

2. 驱动兼容性处理:Windows 系统对 USB 设备有严格的设备描述符与接口类定义,需确保设备描述符中的 bInterfaceSubClass 与 bInterfaceProtocol 字段正确标识为 RNDIS 类别。

3. 使用开源 RNDIS 栈参考:可参考 Linux 内核中的 rndishost.c 或嵌入式系统中常见的轻量级 RNDIS 实现(如 lwIP RNDIS 支持),简化协议栈开发流程。

4. 测试与调试工具支持:建议使用 USB 协议分析仪(如 Beagle USB 480)或虚拟机环境(如 VirtualBox)进行 Windows 下的驱动行为调试,确保数据包格式与控制流程符合预期。

四、测试附件简要说明

根据提供的附件,测试数据如下:
回环测试日志(Ubuntu WSL2):表明设备可正常注册为网络接口,并完成数据回环;
tcpdump 抓包数据:验证了数据帧在设备上可正常收发,未出现丢包或异常帧;
dmesg 日志:显示设备枚举正常,驱动加载无错误;
Python 脚本(py):可能用于自动化测试或模拟数据流量,有助于持续集成测试流程。

五、总结与展望

当前 STC32G144K246-USB-ECM 设备在 Linux(WSL2)环境下已完成基本功能验证,具备良好的开发与应用前景。针对 Windows 平台的支持,建议转向 RNDIS 协议开发,以实现跨平台统一的 USB 网络设备接口。未来可进一步优化协议栈性能、提升吞吐量,并探索在嵌入式网关、物联网设备等场景中的实际应用。

感谢各位开发者对国芯人工智能平台的关注与支持,我们将持续提供技术支持与开发建议。

国芯人工智能团队
2025年4月5日

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 2025-10-23 10:27:51

win:
    usbipd attach --wsl -i 34bf:ff0a
ubuntu:

    sudo ip link set dev enx001122334455 up
    sudo ip link set dev enx001122334455 promisc on
    sudo ip addr add 192.168.7.1/24 dev enx001122334455
    ping 192.168.7.2








ercircle 发表于 2025-10-23 12:02:38







ercircle 发表于 2025-10-23 19:26:29


ercircle 发表于 2025-10-24 19:48:16

ECM网卡MacOS测试:

MacOS相对ubuntu校验相对严格:
1.网卡初始化完成后需要发送连接状态

2.由于ping的是网卡本身,src和dst mac相同时MacOS提示timeout,ping网卡自身时mac地址+1处理

页: [1]
查看完整版本: STC32G144K246-USB-ECM网卡@Linux、MacOS