Linux内核下基于USB以太网模块的SocketCAN/串口转以太网方案咨询
MCU与MPU跨链路外设映射驱动实现方案咨询
场景与需求
- MCU:裸机运行,搭载原生以太网MAC/PHY,具备RS485、CAN、GPIO、SPI等外设接口
- MPU:运行Linux系统,通过USB转以太网设备与MCU建立连接
- 连接拓扑:
MCU <--eth--> ETH2USB <--usb--> MPU
需求:在MPU上开发驱动,创建虚拟SocketCAN接口、虚拟串口接口(及GPIO/SPI等虚拟外设接口),通过「自定义头部(含类型、序列号等字段)+ payload」的私有协议,实现MPU侧虚拟接口与MCU侧真实外设之间的数据双向传输。
调研的两种实现方案
- 修改Linux原生USB转以太网驱动,在驱动加载阶段同步创建所需的SocketCAN、串口等虚拟接口
- 编写独立内核驱动,复用MPU上已初始化完成的eth0接口收发以太网数据(工作模式类似tap虚拟网卡)
技术指导需求
- 针对SocketCAN/串口转以太网的通信场景,推荐最优实现方案
- 内核驱动开发相关的参考文档方向(如虚拟外设接口创建、以太网数据收发的内核API)
- 通信链路的底层选择:基于IP协议(使用IP地址寻址)还是原始以太网帧(直接基于MAC地址传输)
核心疑问
分别针对上述两种方案,明确以下流程的实现逻辑:
- 发送流程:如何在内核驱动中捕获发往虚拟SocketCAN/串口接口的消息,添加自定义头部后通过以太网接口发送至MCU
- 接收流程:如何从以太网接口接收带有自定义头部的数据,剥离头部后将payload转发至对应的虚拟SocketCAN/串口接口
内容的提问来源于stack exchange,提问作者Lhh92
相关产品推荐
相关产品推荐

